npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

anantla_sdk

v1.1.23

Published

Official Anantla BRDZ SDK for developers

Downloads

98

Readme


📦 Installation

# Install SDK from NPM
npm install anantla_sdk@latest

Make sure you install the latest version of our SDK.

Update SDK

Simple way:

# Clean cache
npm cache clean --force

# Install update
npm install anantla_sdk@latest

Clean Installation:

rm -rf node_modules package-lock.json
npm cache clean --force
npm config delete prefix 
npm config delete cache 
npm config set registry https://registry.npmjs.org/
npm install anantla_sdk@latest

Now, you are ready to make history with Anantla SDK!


📂 SDK Structure

anantla-sdk/
├── src/
│   ├── modules/          # All module files
│   │   ├── auth.js       # Authentication
│   │   ├── twofa.js      # Two-Factor Authentication
│   │   ├── mcp.js        # AI Commerce 
│   │   ├── marketplace.js # AI Conversational Commerce (NEW v1.1.5)
│   │   ├── ekyc.js       # Sumsub eKYC
│   │   ├── neon.js       # Neon blockchain
│   │   ├── cardano.js    # Cardano integration
│   │   ├── xrpl.js       # XRPL integration
│   │   ├── visa.js       # Visa card integration
│   │   ├── wallet.js     # Wallet management
│   │   ├── bridge.js     # Cross-chain bridge
│   │   ├── fx.js         # Foreign exchange
│   │   ├── plaid.js      # Banking integration
│   │   ├── cryptoWallet.js # ABSK - AI Blockchain Starter Kit
│   │   ├── privy.js      # Privy authentication
│   │   ├── twitter.js    # Twitter bot integration
│   │   ├── xendit.js     # Xendit payment gateway (NEW v1.1.4)
│   │   ├── indodax.js    # Indodax crypto exchange (NEW v1.1.4)
│   │   └── ...           # More modules
│   └── index.js         # Main entry with exports
├── package.json
├── README.md
├── test-sdk.js         # SDK Test Suite
└── .npmignore

🧪 SDK Testing

Before using the SDK in production, run the comprehensive test suite:

# List SDK
npm list anantla_sdk

# Make simple test
cat > test-sdk.js << 'EOF'
const sdk = require('anantla_sdk');
console.log('SDK modules:', Object.keys(sdk));
console.log('Auth module:', !!sdk.auth);
console.log('TwoFA module:', !!sdk.twofa);
console.log('Xendit module:', !!sdk.xendit);
console.log('Indodax module:', !!sdk.indodax);
console.log('CryptoWallet available:', !!sdk.cryptoWallet);
EOF

# Run SDK test suite
node test-sdk.js

Test Coverage

The test suite validates:

  • ✅ All 28+ modules can be imported successfully
  • ✅ Core infrastructure (config, utils, auth, twofa) functionality
  • ✅ HTTP client methods (get, post, put, del)
  • ✅ Sample module functions availability
  • ✅ ES6 export compatibility
  • ✅ Configuration system

Latest Test Results

SDK modules: [
  'config',  'admin',
  'auth',    'twofa',
  'bridge',  'cardano', 
  'client',  'ekyc',    
  'fx',      'mcp',
  'marketplace',  
  'ntcp',    'plaid',   
  'stableX', 'testnet', 
  'transactions', 'utils',   
  'visa',    'wallet',  
  'xrpl',    'apikey',  
  'crosschain', 'neon',    
  'cryptoWallet', 'onchain', 
  'twitter', 'privy',
  'xendit',  'indodax',
  'default'
]

Clean up test files:

rm test-sdk.js

⚙️ Configuration

Basic Setup

New to API Keys? See our API Key Setup Guide for detailed instructions.

import brdzSDK from 'anantla_sdk';
// or const brdzSDK = require('anantla_sdk');

const config = await brdzSDK.config;
config.setBaseUrl('https://dev.brdz.link/api');
config.setApiKey('<API_KEY_PROVIDED_BY_AOL>');
config.setToken('<JWT_TOKEN_FROM_LOGIN>'); // Optional, for authenticated endpoints

Environment Variables

Create a .env file:

# Backend (.env)
BRDZ_API_BASE=https://dev.brdz.link/api
BRDZ_API_KEY=your_api_key_here
BRDZ_JWT_TOKEN=your_jwt_token_here

# Frontend (.env.local)
REACT_APP_API_BASE=https://dev.brdz.link/api
REACT_APP_API_KEY=your_public_api_key_here
NEXT_PUBLIC_BRDZ_API_KEY=your_public_api_key_here

Then configure SDK:

require('dotenv').config();

const config = await brdzSDK.config;
config.setBaseUrl(process.env.BRDZ_API_BASE);
config.setApiKey(process.env.BRDZ_API_KEY);
config.setToken(process.env.BRDZ_JWT_TOKEN);

🔐 Authentication

JWT Token

All authenticated endpoints require a JWT token:

  • Endpoint: POST /api/auth/login
  • Header: Authorization: Bearer <JWT_TOKEN>

Traditional Login Example

const auth = await brdzSDK.auth;

// Traditional login with username/password
const loginResult = await auth.loginUser('[email protected]', 'password123');
console.log('Login successful:', loginResult);

// Set token for subsequent requests
const config = await brdzSDK.config;
config.setToken(loginResult.token);

// Register new user
const registerResult = await auth.registerUser({
  email: '[email protected]',
  username: 'newuser',
  password: 'securepassword123'
});

Two-Factor Authentication (2FA)

const twofa = await brdzSDK.twofa;

// Step 1: Setup 2FA - Generate QR code
const setupResult = await twofa.setup();
console.log('QR Code URL:', setupResult.qr_code_url);

// Step 2: Enable 2FA after scanning QR code
const enableResult = await twofa.enable('123456'); // 6-digit code from app
console.log('2FA enabled:', enableResult);

// Step 3: Login with 2FA
const loginResult = await auth.loginUser('[email protected]', 'password123');

if (loginResult.requires_2fa) {
  // Complete login with 2FA token
  const completeResult = await auth.completeLoginWith2FA(
    loginResult.user_id,
    '123456' // 6-digit code from authenticator app
  );
  console.log('Login completed with 2FA:', completeResult.token);
}

// Other 2FA operations
const status = await twofa.getStatus();
const backupCodes = await twofa.getBackupCodes('password123');
const disableResult = await twofa.disable('123456', 'password123');

💳 Xendit Module (Payment Gateway)

The Xendit module provides comprehensive payment gateway operations for Indonesia market.

Quick Example

const xendit = await brdzSDK.xendit;

// 1. Create Fixed Virtual Account for wallet top-up
const vaResult = await xendit.requestFixedVA({
  wallet_id: 123,
  bank_code: 'BNI',
  amount: 100000,
  is_single_use: false
});

console.log('VA Number:', vaResult.va_number);

// 2. Process wallet withdrawal to bank
const withdrawResult = await xendit.processWalletWithdraw({
  wallet_id: 123,
  amount: 50000,
  currency: 'IDR',
  bank_code: 'BCA',
  account_number: '1234567890',
  account_holder_name: 'John Doe',
  description: 'Withdrawal to bank'
});

// 3. Get withdrawal status
const status = await xendit.getWithdrawStatus(withdrawResult.reference_id);
console.log('Withdrawal status:', status);

// 4. Check Xendit balance
const balance = await xendit.getBalance({ account_type: 'CASH' });
console.log('Available balance:', balance);

Key Features

Withdrawal Operations (2 methods)

  • processWalletWithdraw - Process wallet withdrawal to bank
  • getWithdrawStatus - Get withdrawal status by reference ID

Fixed Virtual Account Operations (2 methods)

  • requestFixedVA - Request Fixed VA for wallet top-up
  • getFixedVAList - Get list of Fixed VAs for a wallet

Balance Operations (2 methods)

  • getBalance - Get Xendit account balance for specific account type
  • getAllBalances - Get all Xendit account balances (CASH, HOLDING, TAX)

Transaction Operations (3 methods)

  • listTransactions - List transactions with pagination and filtering
  • getTransaction - Get specific transaction details
  • getTransactionCount - Get transaction count with filters

Reconciliation Operations (3 methods)

  • reconcileWalletBalance - Reconcile wallet balance with Xendit
  • resolveReconciliation - Manually resolve reconciliation discrepancy
  • getReconciliationDetails - Get reconciliation details

Webhook Operations (3 methods)

  • processWebhook - Process incoming Xendit webhook (server-to-server)
  • processDLQ - Process dead letter queue manually
  • getWebhookStats - Get webhook processing statistics

Reports Operations (4 methods)

  • generateBalanceReport - Generate balance report for date range
  • generateTransactionReport - Generate transaction report with filters

Administrative Operations (3 methods)

  • healthCheck - Health check for Xendit integration
  • validateConfiguration - Validate Xendit configuration
  • getDashboardData - Get dashboard data for monitoring

🦅 Indodax Module (Crypto Exchange)

The Indodax module enables cryptocurrency trading and IDR-to-USDC conversion for Indonesian users.

Quick Example

const indodax = await brdzSDK.indodax;

// 1. Save crypto wallet address
const walletResult = await indodax.saveCryptoWallet({
  wallet_address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
  network: 'polygon',
  is_primary: true
});

// 2. Start IDR to USDC conversion
const conversionResult = await indodax.startConversion({
  wallet_id: 123,
  amount_idr: 1000000
});

console.log('Conversion job created:', conversionResult.job_id);

// 3. Check conversion status
const status = await indodax.getConversionStatus(conversionResult.job_id);
console.log('Status:', status.status); // PENDING, DISBURSING, TRADING, WITHDRAWING, COMPLETED

// 4. Get current USDC/IDR price
const price = await indodax.getCurrentPrice('usdc_idr');
console.log('USDC Price:', price.last, 'IDR');

// 5. Check Indodax balance
const balance = await indodax.getIndodaxBalance();
console.log('IDR Balance:', balance.idr);
console.log('USDC Balance:', balance.usdc);

Integration Flow: IDR Conversion

┌─────────────────────────────────────────────────────────────────┐
│                    IDR → USDC Conversion Flow                   │
└─────────────────────────────────────────────────────────────────┘

Step 1: DISBURSEMENT (Xendit)
  └─> Transfer IDR from wallet to Indodax account via Xendit
      Status: PENDING → DISBURSING

Step 2: BALANCE CONFIRMATION (Indodax Polling)
  └─> Wait for IDR to appear in Indodax account
      Status: WAITING_INDODAX
      Polling: Every 1 hour (max 24 hours)

Step 3: TRADE EXECUTION (Indodax)
  └─> Buy USDC with IDR at current market price
      Status: TRADING
      Polling: Every 10s (max 5 minutes)

Step 4: WITHDRAWAL (Indodax)
  └─> Withdraw USDC to user's crypto wallet
      Status: WITHDRAWING

Step 5: COMPLETED
  └─> USDC received in user's wallet
      Status: COMPLETED

Key Features

Crypto Wallet Operations (3 methods)

  • saveCryptoWallet - Save or update crypto wallet address for user
  • getCryptoWallet - Get user's crypto wallet info
  • deleteCryptoWallet - Delete crypto wallet address

Conversion Operations (4 methods)

  • startConversion - Start IDR to USDC conversion process
  • getConversionStatus - Get conversion job status
  • getConversionHistory - Get user's conversion history
  • retryConversion - Retry failed conversion job

Price & Balance Operations (3 methods)

  • getCurrentPrice - Get current USDC/IDR price from Indodax
  • getIndodaxBalance - Get Indodax account balance (IDR & USDC)
  • getTradeHistory - Get Indodax trade history

🛍️ Marketplace Module (Conversational Commerce)

The Marketplace module enables AI-powered shopping with natural language processing, supporting Etsy and Tokopedia products with USDC payments.

Quick Example

const marketplace = await brdzSDK.marketplace;

// 1. Chat with AI shopping assistant
const chatResult = await marketplace.sendMessage({
  message: "I'm looking for handmade ceramic mugs",
  conversation_history: []
});

console.log('AI Reply:', chatResult.reply);
console.log('Intent:', chatResult.intent); // SEARCH, BUY, INFO, HELP

// 2. Search products across marketplaces
const searchResult = await marketplace.searchProducts({
  query: "handmade ceramic mug",
  sources: ['etsy', 'tokopedia'],
  limit: 10
});

console.log('Found products:', searchResult.products);

// 3. Create order (requires authentication)
const orderResult = await marketplace.createOrder({
  product: {
    productId: 'etsy-12345',
    title: 'Handmade Ceramic Mug',
    pricing: {
      price: 25.00,
      currency: 'USD',
      total: 28.50
    },
    vendor: {
      name: 'Etsy - CeramicShop',
      marketplace: 'etsy'
    },
    // ... other product details
  },
  recipient: {
    name: "John Doe",
    phone: "+628123456789",
    address: "Jl. Sudirman No. 123, Jakarta",
    notes: "Please call before delivery"
  },
  wallet_address: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
  chain_id: "sepolia"
});

console.log('Order created:', orderResult.order.order_id);
console.log('Pay with USDC:', orderResult.payment_details.usdc_amount);

// 4. Check order status
const order = await marketplace.getOrder(orderResult.order.order_id);
console.log('Payment status:', order.order.payment_status);

// 5. Get user's order history
const orders = await marketplace.getUserOrders({
  limit: 10,
  offset: 0,
  status: 'PAID'
});

console.log('Total orders:', orders.pagination.total);

Integration Flow

┌─────────────────────────────────────────────────────────────────┐ │ Conversational Commerce Flow │ └─────────────────────────────────────────────────────────────────┘

Step 1: AI CHAT └─> User describes what they want in natural language AI detects intent: SEARCH, BUY, INFO, HELP

Step 2: PRODUCT SEARCH └─> AI generates optimized search queries Scrapes Etsy & Tokopedia using Puppeteer Normalizes products into unified schema

Step 3: ORDER CREATION └─> User selects product System calculates USDC amount (with FX conversion for IDR) Order saved to database with PENDING status

Step 4: BLOCKCHAIN PAYMENT └─> User pays with USDC via smart contract Relayer listens to PaymentCompleted event Order status updated to PAID

Step 5: FULFILLMENT (Manual for MVP) └─> Merchant notified Product shipped to recipient Order status updated to COMPLETED

Key Features

Chat Operations (No Auth Required)

  • sendMessage - Natural language chat with AI shopping assistant

    • Intent detection (SEARCH, BUY, INFO, HELP)
    • Conversation history support
    • Powered by Groq AI (Llama 3.1 70B)

Search Operations (No Auth Required)

  • searchProducts - Multi-marketplace product search

    • Sources: Etsy (USD), Tokopedia (IDR)
    • AI-generated search query optimization
    • Unified product schema normalization
    • Price sorting and filtering

Order Operations (Auth Required)

  • createOrder - Create marketplace order with USDC payment

    • Automatic FX conversion (IDR → USDC)
    • Smart contract payment integration
    • Recipient information collection
  • getOrder - Get order details by ID**

    • Payment status tracking
    • Blockchain transaction hash
  • getUserOrders - Get user's order history

    • Pagination support
    • Status filtering (PENDING, PAID, COMPLETED, FAILED, CANCELLED)

Supported Marketplaces

Etsy (International)

  • Currency: USD
  • Payment: Direct USDC (1:1)
  • Shipping: International

Tokopedia (Indonesia)

  • Currency: IDR
  • Payment: Auto-converted to USDC via FX service
  • Shipping: Domestic Indonesia

Payment Flow

// Example: Paying for order
const Web3 = require('web3');
const web3 = new Web3(window.ethereum);

// Get order payment details
const order = await marketplace.getOrder(orderId);
const { usdc_amount, contract_address, wallet_address } = order.payment_details;

// Smart contract ABI
const BRDZ_PAYMENT_ABI = [
  {
    "inputs": [
      {"type": "address", "name": "brdzWallet"},
      {"type": "uint256", "name": "amount"},
      {"type": "string", "name": "orderId"}
    ],
    "name": "completePayment",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
];

// Execute payment
const contract = new web3.eth.Contract(BRDZ_PAYMENT_ABI, contract_address);
const amountInWei = web3.utils.toWei(usdc_amount.toString(), 'mwei'); // USDC has 6 decimals

await contract.methods
  .completePayment(wallet_address, amountInWei, order.order_id)
  .send({ from: userAddress });

// Blockchain relayer will automatically update order status to PAID

Error Handling

try {
  const result = await marketplace.createOrder(orderData);
  console.log('Order created:', result.order.order_id);
} catch (error) {
  if (error.response?.status === 401) {
    console.error('Authentication required');
  } else if (error.response?.status === 400) {
    console.error('Missing required fields:', error.response.data.error);
  } else {
    console.error('Order creation failed:', error.message);
  }
}

🤖 ABSK (AI Blockchain Starter Kit) Module

The cryptoWallet module provides ABSK functionality with dual architecture.

Manual Operations

const absk = await brdzSDK.cryptoWallet;

// Create wallet
const wallet = await absk.createWallet({
  wallet_name: "My Crypto Wallet",
  user_id: 123
});

// Get user wallets
const wallets = await absk.getUserWallets(123);

// Add chain address
const address = await absk.addChainAddress(wallet.bw_id, {
  chain_id: "sepolia"
});

// Check balance
const balance = await absk.balance.getTotal(wallet.bw_id);

AI-Powered Operations

// Natural language processing
const result = await absk.processAIIntent({
  user_input: "Create a new wallet called Trading Wallet",
  user_id: 123
});

// AI helper methods
const wallet = await absk.ai.createWallet(
  "I want a new wallet for DeFi trading", 
  123
);

const balances = await absk.ai.checkBalance(
  "Show me my USDC balance on Sepolia",
  123
);

Key Management & Tokens

// Private key operations
const backup = await absk.keys.createBackup({
  wallet_id: 1,
  user_id: 123
});

// Token management
await absk.tokens.import({
  chain_id: "sepolia",
  asset_issuer: "0x..."
});

// Balance checking
const usdcBalance = await absk.balance.getUSDC(1, "sepolia");

🛍️ MCP (AI Commerce) Module

The MCP module enables AI-powered shopping with cryptocurrency payments.

Quick Example

const mcp = await brdzSDK.mcp;

// 1. Detect purchase intent
const intent = await mcp.step1_detectIntent({ 
  prompt: "I want to buy headphones from https://tokopedia.com/product-url" 
});

// 2. Parse product details
const product = await mcp.step2_parseProduct({ 
  url: intent.detected_url 
});

// 3. Confirm product and get pricing
const confirmation = await mcp.step3a_productConfirmation({ 
  product: product.product 
});

// 4. Create order with recipient (requires authentication)
const order = await mcp.createOrder({
  product: confirmation.product,
  pricing: confirmation.pricing,
  recipient: {
    name: "John Doe",
    phone: "+628123456789", 
    address: "Jl. Sudirman No. 123, Jakarta Selatan 12190, Indonesia",
    notes: "Please call before delivery"
  }
});

// 5. Execute payment (requires sufficient USDC balance)
const result = await mcp.executeOrder({
  order_id: order.order_id,
  confirmation: "confirmed"
});

console.log('Order completed:', result);

🧠 Available Modules & Methods

Core Modules

  • auth (8 methods) - User authentication, registration, mobile 2FA & complete login
  • twofa (6 methods) - Two-Factor Authentication setup, enable, disable, verify
  • config (6 methods) - SDK configuration management
  • utils (6 methods) - HTTP client & debugging utilities

Blockchain & Crypto

  • cryptoWallet (14 methods) - ABSK AI Blockchain Starter Kit
  • crosschain (9 methods) - Cross-chain bridge operations
  • neon (2 methods) - Neon blockchain integration
  • bridge (5 methods) - Cross-chain wallet & VA bridge
  • onchain (20 methods) - Onchain transaction execution & logging

Financial Services

  • xendit (22 methods) - Payment gateway operations (NEW v1.1.4)
  • indodax (10 methods) - Crypto exchange & IDR conversion (NEW v1.1.4)
  • mcp (10 methods) - AI-powered commerce & shopping
  • marketplace (5 methods) - AI conversational commerce (NEW v1.1.5)
  • wallet (8 methods) - Traditional wallet management
  • transactions (11 methods) - Transaction history & management
  • fx (3 methods) - Foreign exchange & currency conversion
  • wallet (8 methods) - Traditional wallet management

Integrations

  • cardano (9 methods) - Cardano blockchain operations
  • xrpl (7 methods) - XRPL integration & trustlines
  • visa (6 methods) - Visa card virtual integration
  • plaid (5 methods) - Banking & ACH integration
  • privy (8 methods) - Privy authentication integration
  • twitter (16 methods) - Twitter bot verification & rewards

Additional Services

  • ekyc (7 methods) - Sumsub eKYC/eKYB verification
  • admin (6 methods) - Administrative functions
  • client (6 methods) - Client management
  • stableX (4 methods) - Cross-chain USDC operations
  • testnet (4 methods) - Testnet development tools
  • ntcp (6 methods) - Recipient & batch transfer management
  • apikey (4 methods) - API key management

🌐 Frontend Integration

React/Next.js Setup

For v1.1.0+, you only need TypeScript declarations. No custom hooks required - call SDK methods directly.

Create TypeScript declarations in your frontend project:

// types/anantla-sdk.d.ts
declare module 'anantla_sdk' {
  export const config: {
    setBaseUrl: (url: string) => void;
    setApiKey: (key: string) => void;
    setToken: (token: string) => void;
    getBaseUrl: () => string;
    getApiKey: () => string;
    getToken: () => string;
  };

  export const auth: {
    loginUser: (email: string, password: string) => Promise<any>;
    registerUser: (data: any) => Promise<any>;
    completeLoginWith2FA: (userId: string, code: string) => Promise<any>;
  };

  export const twofa: {
    setup: () => Promise<any>;
    enable: (code: string) => Promise<any>;
    disable: (code: string, password: string) => Promise<any>;
    getStatus: () => Promise<any>;
  };

  export const cryptoWallet: {
    createWallet: (data: any) => Promise<any>;
    getUserWallets: (userId: number) => Promise<any>;
    processAIIntent: (data: any) => Promise<any>;
  };

  export const xendit: {
    requestFixedVA: (data: any) => Promise<any>;
    processWalletWithdraw: (data: any) => Promise<any>;
    getBalance: (params?: any) => Promise<any>;
  };

  export const indodax: {
    startConversion: (data: any) => Promise<any>;
    getConversionStatus: (jobId: string) => Promise<any>;
    getCurrentPrice: (pair: string) => Promise<any>;
  };

  export const marketplace: {
    sendMessage: (data: { 
      message: string; 
      conversation_history?: Array<{ role: string; content: string }> 
    }) => Promise<any>;
    searchProducts: (data: { 
      query: string; 
      sources?: ('etsy' | 'tokopedia')[]; 
      limit?: number 
    }) => Promise<any>;
    createOrder: (data: any) => Promise<any>;
    getOrder: (order_id: string) => Promise<any>;
    getUserOrders: (params?: any) => Promise<any>;
  };

  // other modules...
}

TypeScript Integration

  1. Ensure your TypeScript declarations match the SDK module structure
  2. Use proper type assertions when needed
  3. Always check method availability before calling
  4. No custom hooks needed - call SDK methods directly in v1.1.0+

React Component Example

import React, { useEffect, useState } from 'react';
import brdzSDK from 'anantla_sdk';

const WalletDashboard = () => {
  const [sdkReady, setSdkReady] = useState(false);

  useEffect(() => {
    const initSDK = async () => {
      try {
        const config = await brdzSDK.config;
        config.setBaseUrl(process.env.REACT_APP_API_BASE);
        config.setApiKey(process.env.REACT_APP_API_KEY);
        
        const token = localStorage.getItem('auth_token');
        if (token) config.setToken(token);
        
        setSdkReady(true);
      } catch (error) {
        console.error('SDK initialization failed:', error);
      }
    };
    initSDK();
  }, []);

  const createWallet = async () => {
    try {
      const absk = await brdzSDK.cryptoWallet;
      const wallet = await absk.createWallet({
        wallet_name: "My New Wallet",
        user_id: 123
      });
      console.log('Wallet created:', wallet);
    } catch (error) {
      console.error('Wallet creation failed:', error);
    }
  };

  const startConversion = async () => {
    try {
      const indodax = await brdzSDK.indodax;
      const result = await indodax.startConversion({
        wallet_id: 123,
        amount_idr: 1000000
      });
      console.log('Conversion started:', result);
    } catch (error) {
      console.error('Conversion failed:', error);
    }
  };

  if (!sdkReady) return <div>Loading SDK...</div>;

  return (
    <div>
      <h1>BRDZ Wallet Dashboard</h1>
      <button onClick={createWallet}>Create Wallet</button>
      <button onClick={startConversion}>Convert IDR to USDC</button>
    </div>
  );
};

export default WalletDashboard;

🔧 Development & Testing

Environment Setup

# Set up environment
cp .env.example .env
# Edit .env with your API keys

# Build for production
npm run build

Debug Mode

Enable debug logging:

process.env.DEBUG = 'brdz-sdk:*';

const brdzSDK = require('anantla_sdk');
// Debug logs will show all API calls and responses

🛡️ Security Best Practices

  1. Never expose API keys in client-side code repositories
  2. Use environment variables for sensitive configuration
  3. Validate all inputs before sending to API
  4. Handle errors gracefully with proper user feedback
  5. Keep JWT tokens secure and refresh them regularly
  6. Use HTTPS only for all API communications
  7. Enable 2FA for enhanced account security
  8. Store 2FA backup codes securely offline

📝 Breaking Changes & Deprecations

v1.1.4 Changes

Wallet Module Deprecation:

  • mockActivateWallet - DEPRECATED and removed
    • Wallet activation is now automatic based on:
      • MOCK_MODE environment variable
      • Xendit customer linking (for Indonesia users)
    • Manual mock activation is no longer needed

Migration Guide:

// ❌ OLD (Deprecated)
await wallet.mockActivateWallet({ 
  wallet_id: 123, 
  country_code: 'ID' 
});

// ✅ NEW (Automatic)
// Wallet is automatically activated on creation when:
// 1. MOCK_MODE=true in environment, OR
// 2. Xendit customer is linked (for Indonesia)
const wallet = await wallet.createWallet({
  user_id: 123,
  currency: 'IDR',
  country_code: 'ID'
});
// Wallet status will be 'ACTIVE' automatically

🆘 Support


📄 License

Internal use only — for BRDZ & AOL Core integration partners.

Copyright © 2024-2025 Anantla Technologies. All rights reserved.


🔄 Version History

Current Release

Version 1.1.23

  • v1.1.23 :
    • Update with Xtoken that can swap to XSGD

Previous Releases

Version 1.1.22

  • v1.1.22 :
    • Change Base URL backend to dev.brdz.link

Version 1.1.21

  • v1.1.21 :
    • Delete Typo on 1.1.20

Version 1.1.20

  • v1.1.20 :
    • Depreceated signature endpoint in USDT Mining

Version 1.1.19

  • v1.1.19 :
    • Typo in api/ revison all code

Version 1.1.18

  • v1.1.18 :
    • Update USDT POLYGON Minting and all features
    • Update with transfer Features

Version 1.1.17

  • v1.1.17 : List Crypto Wallet

Version 1.1.16

  • v1.1.16 : Fix OfframptoWallet

Version 1.1.15

  • v1.1.15 : Fix Typo for v1.1.14

Version 1.1.14

  • v1.1.14 : Adding Offramp to Wallet Function on Manual Offramp

Version 1.1.13

  • v1.1.13 : Adding Typo in POS with api/

Version 1.1.12

  • v1.1.12 : Adding QR Static to POS System

Version 1.1.11

  • v1.1.11 : Adding Linking to External Wallet in CryptoWallet.js

Version 1.1.10

  • v1.1.10 : Add pos to modules

Version 1.1.9

  • v1.1.9 : Adding pos QR for D20/D30

Version 1.1.8

  • v1.1.8 : Adding QRIS

Version 1.1.7

  • v1.1.7r : Adding the configuration environment on API Key
  • v1.1.7 : Adding the configuration environment

Version 1.1.6

  • v1.1.6r3 : Adding Offramp History
  • v1.1.6r2 : Adding Withdraw History
  • v1.1.6r1 : Adding Flow USDT
  • v1.1.6r : Adding IDRX to SDK Index
  • v1.1.6 : Adding IDRX to SDK as BRDZ System

Version 1.1.5

  • v1.1.5r4 : Typo revision
  • v1.1.5r3 : revision on get manual trade
  • v1.1.5r2 : revision on get live price IDR-USDC
  • v1.1.5r1 : revision on get trade balance
  • v1.1.5r : revision on index
  • v1.1.5 (January 2025)
    • ✅ Added Marketplace module (5 methods) - AI conversational commerce
    • ✅ Product search across Etsy & Tokopedia with AI-powered chat
    • ✅ USDC payment integration for cross-border shopping
    • ✅ Order management with blockchain payment tracking
    • 🤖 Groq AI assistant for natural language shopping experience

Version 1.1.4

  • v1.1.4r (January 2025)
    • ✅ Added indodax disburse to Indodax modules (11 methods)
  • v1.1.4 (January 2025)
    • ✅ Added Xendit module (22 methods) - Payment gateway for Indonesia

Version 1.1.3

  • v1.1.3r2 - Adding admin get user_id info
  • v1.1.3r1 - Revised all typo at v1.1.3
  • v1.1.3r - Revised Bridge Modules
  • v1.1.3 - Fix List Admin

Version 1.1.2

  • v1.1.2 - Fix Admin and Users modules

Version 1.1.1

  • v1.1.1 - Update the API Key Remove data

Version 1.1.0

  • v1.1.0 - Added Two-Factor Authentication (2FA) module with 6 methods, enhanced auth module with completeLoginWith2FA, simplified frontend integration (no custom hooks required)

Version 1.0.0 - 1.0.9

  • v1.0.9 - Update generate API Key
  • v1.0.8 - eKYB update on module ekyc
  • v1.0.7 - Update MCP to have Dual Support "Polygon/Amoy" and "Neon"
  • v1.0.6 - Publish to npm
  • v1.0.5 - Added Privy for Auth User
  • v1.0.4 - Added Onchain, Crosschain, and AI Agent for Crypto Wallet
  • v1.0.3 - Added Onchain transaction and history
  • v1.0.2 - Added mobile authentication (2FA) with push notifications, enhanced auth module
  • v1.0.1 - Added MCP order management, email receipts, SDK test suite
  • v1.0.0 - Initial release with core modules

🚀 What's Next?

Stay tuned for upcoming features:

  • Extended payment gateway support for more countries
  • Advanced trading features in Indodax integration
  • Enhanced AI capabilities in ABSK module
  • More blockchain network integrations