@ckboost/client
Version:
TypeScript/JavaScript SDK for dApps to integrate CKBoost - Fast ck-token transactions on Internet Computer through liquidity pools
1 lines • 34.4 kB
Source Map (JSON)
{"version":3,"sources":["../src/candid/ck-testbtc/backend.did.js","../src/candid/ck-testbtc/index.js","../src/types.ts","../src/ck-testbtc-client.ts","../src/index.ts"],"names":["BoostStatus","BoostRequest","canisterId","SupportedToken","CKBoostErrorType","HttpAgent"],"mappings":"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","file":"index.mjs","sourcesContent":["export const idlFactory = ({ IDL }) => {\n const BoostId = IDL.Nat;\n const BoostStatus = IDL.Variant({\n 'active' : IDL.Null,\n 'cancelled' : IDL.Null,\n 'pending' : IDL.Null,\n 'completed' : IDL.Null,\n });\n const Amount = IDL.Nat;\n const Timestamp = IDL.Int;\n const Subaccount = IDL.Vec(IDL.Nat8);\n const BoostRequest = IDL.Record({\n 'id' : BoostId,\n 'status' : BoostStatus,\n 'receivedBTC' : Amount,\n 'confirmationsRequired' : IDL.Nat,\n 'owner' : IDL.Principal,\n 'maxFeePercentage' : IDL.Float64,\n 'createdAt' : Timestamp,\n 'subaccount' : Subaccount,\n 'booster' : IDL.Opt(IDL.Principal),\n 'updatedAt' : Timestamp,\n 'btcAddress' : IDL.Opt(IDL.Text),\n 'amount' : Amount,\n 'preferredBooster' : IDL.Opt(IDL.Principal),\n });\n const Result = IDL.Variant({ 'ok' : BoostRequest, 'err' : IDL.Text });\n const BoosterAccount = IDL.Record({\n 'availableBalance' : Amount,\n 'owner' : IDL.Principal,\n 'createdAt' : Timestamp,\n 'subaccount' : Subaccount,\n 'updatedAt' : Timestamp,\n 'totalDeposited' : Amount,\n });\n const Result_2 = IDL.Variant({ 'ok' : IDL.Text, 'err' : IDL.Text });\n const Result_1 = IDL.Variant({ 'ok' : BoosterAccount, 'err' : IDL.Text });\n const Main = IDL.Service({\n 'acceptBoostRequest' : IDL.Func([BoostId], [IDL.Text], []),\n 'checkBTCDeposit' : IDL.Func([BoostId], [Result], []),\n 'getAllBoostRequests' : IDL.Func([], [IDL.Vec(BoostRequest)], ['query']),\n 'getAllBoosterAccounts' : IDL.Func(\n [],\n [IDL.Vec(BoosterAccount)],\n ['query'],\n ),\n 'getBoostRequest' : IDL.Func([BoostId], [IDL.Opt(BoostRequest)], ['query']),\n 'getBoostRequestBTCAddress' : IDL.Func([BoostId], [Result_2], []),\n 'getBoosterAccount' : IDL.Func(\n [IDL.Principal],\n [IDL.Opt(BoosterAccount)],\n ['query'],\n ),\n 'getCanisterPrincipal' : IDL.Func([], [IDL.Principal], ['query']),\n 'getDirectBTCAddress' : IDL.Func([], [IDL.Text], []),\n 'getPendingBoostRequests' : IDL.Func(\n [],\n [IDL.Vec(BoostRequest)],\n ['query'],\n ),\n 'getUserBoostRequests' : IDL.Func(\n [IDL.Principal],\n [IDL.Vec(BoostRequest)],\n ['query'],\n ),\n 'registerBoostRequest' : IDL.Func(\n [Amount, IDL.Float64, IDL.Nat, IDL.Opt(IDL.Principal)],\n [Result],\n [],\n ),\n 'registerBoosterAccount' : IDL.Func([], [Result_1], []),\n 'updateBoosterDeposit' : IDL.Func([IDL.Principal, Amount], [Result_1], []),\n 'updateReceivedBTC' : IDL.Func([BoostId, Amount], [Result], []),\n 'withdrawBoosterFunds' : IDL.Func([Amount], [IDL.Text], []),\n });\n return Main;\n};\nexport const init = ({ IDL }) => { return []; };\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\n\n// Imports and re-exports candid interface\nimport { idlFactory } from \"./backend.did.js\";\nexport { idlFactory } from \"./backend.did.js\";\n\n/* CANISTER_ID is replaced by webpack based on node environment\n * Note: canister environment variable will be standardized as\n * process.env.CANISTER_ID_<CANISTER_NAME_UPPERCASE>\n * beginning in dfx 0.15.0\n */\nexport const canisterId =\n process.env.CANISTER_ID_BACKEND;\n\nexport const createActor = (canisterId, options = {}) => {\n const agent = options.agent || new HttpAgent({ ...options.agentOptions });\n\n if (options.agent && options.agentOptions) {\n console.warn(\n \"Detected both agent and agentOptions passed to createActor. Ignoring agentOptions and proceeding with the provided agent.\"\n );\n }\n\n // Fetch root key for certificate validation during development\n if (process.env.DFX_NETWORK !== \"ic\") {\n agent.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n // Creates an actor with using the candid interface and the HttpAgent\n return Actor.createActor(idlFactory, {\n agent,\n canisterId,\n ...options.actorOptions,\n });\n};\n\nexport const backend = canisterId ? createActor(canisterId) : undefined;\n","// Core types for CKBoost client integration\n\n/**\n * Supported ck-tokens for CKBoost acceleration\n */\nexport enum SupportedToken {\n ckTESTBTC = 'ckTESTBTC'\n // Future tokens will be added here:\n // ckBTC = 'ckBTC',\n // ckETH = 'ckETH',\n // ckUSDC = 'ckUSDC'\n}\n\n/**\n * Token configuration with network-specific settings\n */\nexport interface TokenConfig {\n token: SupportedToken;\n backendCanisterId: string;\n ledgerCanisterId: string;\n minimumAmount: string; // Minimum boost amount (e.g., \"0.0001\")\n maximumAmount: string; // Maximum boost amount (e.g., \"1.0\")\n standardFee: string; // Standard fee (e.g., \"0.001\")\n confirmationsRequired: number;\n blockExplorerUrl: string;\n decimals: number; // Token decimals (e.g., 8 for Bitcoin-like tokens)\n isTestnet: boolean; // Whether this is a testnet token\n}\n\n/**\n * Predefined token configurations\n */\nexport const TOKEN_CONFIGS: Record<SupportedToken, TokenConfig> = {\n [SupportedToken.ckTESTBTC]: {\n token: SupportedToken.ckTESTBTC,\n backendCanisterId: '75egi-7qaaa-aaaao-qj6ma-cai',\n ledgerCanisterId: 'mc6ru-gyaaa-aaaar-qaaaq-cai',\n minimumAmount: '0.005',\n maximumAmount: '1.0',\n standardFee: '0.00001',\n confirmationsRequired: 2,\n blockExplorerUrl: 'https://mempool.space/testnet4',\n decimals: 8,\n isTestnet: true\n }\n};\n\n/**\n * Parameters for generating a deposit address\n */\nexport interface DepositAddressParams {\n token: SupportedToken;\n amount: string; // Amount in token units (e.g., \"0.01\" for 0.01 ckTESTBTC)\n maxFeePercentage: number; // Maximum fee percentage (e.g., 1.5 for 1.5%)\n confirmationsRequired?: number; // Optional, defaults to token standard\n preferredBooster?: string; // Optional preferred booster principal\n}\n\n/**\n * Generated deposit address information\n */\nexport interface DepositAddress {\n requestId: string; // Unique boost request ID\n address: string; // Deposit address for the underlying asset\n amount: string; // Exact amount to send (in token units)\n amountRaw: string; // Amount in smallest units (e.g., satoshis for Bitcoin)\n maxFeePercentage: number; // Fee percentage\n confirmationsRequired: number;\n explorerUrl: string; // Block explorer URL for tracking\n}\n\n/**\n * Boost request status (matches backend candid interface)\n */\nexport enum BoostStatus {\n PENDING = 'pending', // Waiting for deposit\n ACTIVE = 'active', // Transaction detected/being processed\n COMPLETED = 'completed', // ck-tokens delivered to user\n CANCELLED = 'cancelled' // Request cancelled\n}\n\n/**\n * Detailed boost request information (matches backend BoostRequest type)\n */\nexport interface BoostRequest {\n id: string; // Request ID (converted from bigint)\n status: BoostStatus; // Current status\n amount: string; // Amount in token units (converted from bigint)\n amountRaw: string; // Amount in smallest units (e.g., satoshis)\n maxFeePercentage: number; // Maximum fee percentage\n owner: string; // Owner principal as string\n booster?: string | undefined; // Assigned booster principal (if any)\n preferredBooster?: string | undefined; // Preferred booster principal (if any)\n depositAddress?: string | undefined; // Deposit address (if generated)\n receivedAmount: string; // Amount of underlying asset received (converted from bigint)\n confirmationsRequired: number; // Required confirmations (converted from bigint)\n createdAt: number; // Creation timestamp (converted from bigint)\n updatedAt: number; // Last update timestamp (converted from bigint)\n explorerUrl: string; // Block explorer URL\n}\n\n/**\n * Client configuration options\n */\nexport interface ClientConfig {\n host?: string; // ICP host URL (default: 'https://icp-api.io')\n timeout?: number; // Request timeout in milliseconds\n}\n\n/**\n * Error types for better error handling\n */\nexport enum CKBoostErrorType {\n NETWORK_ERROR = 'NETWORK_ERROR',\n INVALID_AMOUNT = 'INVALID_AMOUNT',\n INVALID_TOKEN = 'INVALID_TOKEN',\n REQUEST_NOT_FOUND = 'REQUEST_NOT_FOUND',\n REQUEST_EXPIRED = 'REQUEST_EXPIRED',\n CANISTER_ERROR = 'CANISTER_ERROR',\n VALIDATION_ERROR = 'VALIDATION_ERROR'\n}\n\n/**\n * Structured error for CKBoost operations\n */\nexport class CKBoostError extends Error {\n constructor(\n public type: CKBoostErrorType,\n message: string,\n public details?: any\n ) {\n super(message);\n this.name = 'CKBoostError';\n }\n}\n\n/**\n * Response wrapper for API calls - discriminated union for better type safety\n */\nexport type ApiResponse<T> = \n | {\n success: true;\n data: T;\n }\n | {\n success: false;\n error: {\n type: CKBoostErrorType;\n message: string;\n details?: any;\n };\n };\n\n/**\n * Utility type for amount conversion\n */\nexport interface AmountInfo {\n tokenAmount: string; // Human-readable amount (e.g., \"0.01\")\n rawAmount: string; // Raw amount in smallest units (e.g., \"1000000\")\n formatted: string; // Formatted display (e.g., \"0.01000000 ckTESTBTC\")\n} ","import { HttpAgent } from '@dfinity/agent';\nimport { Principal } from '@dfinity/principal';\nimport { createActor } from './candid/ck-testbtc';\nimport type { _SERVICE } from './candid/ck-testbtc/backend.did';\nimport {\n SupportedToken,\n TOKEN_CONFIGS,\n DepositAddressParams,\n DepositAddress,\n BoostRequest,\n BoostStatus,\n ClientConfig,\n CKBoostError,\n CKBoostErrorType,\n ApiResponse\n} from './types';\n\n/**\n * ckTESTBTC Client for integrating CKBoost acceleration for ckTESTBTC\n * \n * Provides two main functions:\n * 1. generateDepositAddress - Creates a boost request and returns deposit info\n * 2. getBoostRequest - Gets detailed information about a boost request\n */\nexport class ckTESTBTCClient {\n private agent: HttpAgent;\n private backend: _SERVICE;\n private config: Required<ClientConfig>;\n private tokenConfig = TOKEN_CONFIGS[SupportedToken.ckTESTBTC];\n\n constructor(config: ClientConfig = {}) {\n this.config = {\n host: config.host || 'https://icp-api.io',\n timeout: config.timeout || 30000\n };\n\n // Initialize HTTP agent\n this.agent = new HttpAgent({\n host: this.config.host,\n });\n\n // Initialize backend actor for ckTESTBTC\n this.backend = createActor(this.tokenConfig.backendCanisterId, {\n agent: this.agent,\n });\n\n // Only fetch root key for testnet tokens or localhost\n if (this.tokenConfig.isTestnet || this.config.host.includes('localhost')) {\n this.agent.fetchRootKey().catch(err => {\n console.warn('Failed to fetch root key:', err);\n });\n }\n }\n\n /**\n * Generate a deposit address for a ckTESTBTC boost request\n * \n * This function:\n * 1. Validates the input parameters\n * 2. Calls registerBoostRequest on the backend\n * 3. Gets the deposit address for the request\n * 4. Returns formatted deposit information\n */\n async generateDepositAddress(params: Omit<DepositAddressParams, 'token'>): Promise<ApiResponse<DepositAddress>> {\n try {\n // Validate amount\n const amount = parseFloat(params.amount);\n const minAmount = parseFloat(this.tokenConfig.minimumAmount);\n const maxAmount = parseFloat(this.tokenConfig.maximumAmount);\n\n if (amount < minAmount) {\n throw new CKBoostError(\n CKBoostErrorType.INVALID_AMOUNT,\n `Amount ${params.amount} is below minimum ${this.tokenConfig.minimumAmount}`\n );\n }\n\n if (amount > maxAmount) {\n throw new CKBoostError(\n CKBoostErrorType.INVALID_AMOUNT,\n `Amount ${params.amount} exceeds maximum ${this.tokenConfig.maximumAmount}`\n );\n }\n\n // Validate fee percentage\n if (params.maxFeePercentage < 0.1 || params.maxFeePercentage > 2.0) {\n throw new CKBoostError(\n CKBoostErrorType.VALIDATION_ERROR,\n 'Fee percentage must be between 0.1% and 2.0%'\n );\n }\n\n // Convert amount to raw units (satoshis for ckTESTBTC)\n const amountRaw = BigInt(Math.floor(amount * Math.pow(10, this.tokenConfig.decimals)));\n \n // Get confirmations required\n const confirmationsRequired = BigInt(params.confirmationsRequired || this.tokenConfig.confirmationsRequired);\n \n // Convert preferred booster to Principal if provided\n const preferredBooster: [] | [Principal] = params.preferredBooster \n ? [Principal.fromText(params.preferredBooster)]\n : [];\n\n // Register boost request\n const registerResult = await this.backend.registerBoostRequest(\n amountRaw,\n params.maxFeePercentage,\n confirmationsRequired,\n preferredBooster\n );\n\n if ('err' in registerResult) {\n throw new CKBoostError(\n CKBoostErrorType.CANISTER_ERROR,\n `Failed to register boost request: ${registerResult.err}`\n );\n }\n\n const boostRequest = registerResult.ok;\n const requestId = boostRequest.id.toString();\n\n // Get deposit address\n const addressResult = await this.backend.getBoostRequestBTCAddress(boostRequest.id);\n\n if ('err' in addressResult) {\n throw new CKBoostError(\n CKBoostErrorType.CANISTER_ERROR,\n `Failed to get deposit address: ${addressResult.err}`\n );\n }\n\n const depositAddressValue = addressResult.ok;\n\n // Format response\n const depositAddress: DepositAddress = {\n requestId,\n address: depositAddressValue,\n amount: params.amount,\n amountRaw: amountRaw.toString(),\n maxFeePercentage: params.maxFeePercentage,\n confirmationsRequired: Number(confirmationsRequired),\n explorerUrl: `${this.tokenConfig.blockExplorerUrl}/address/${depositAddressValue}`\n };\n\n return {\n success: true,\n data: depositAddress\n };\n\n } catch (error) {\n if (error instanceof CKBoostError) {\n return {\n success: false,\n error: {\n type: error.type,\n message: error.message,\n details: error.details\n }\n };\n }\n\n return {\n success: false,\n error: {\n type: CKBoostErrorType.NETWORK_ERROR,\n message: error instanceof Error ? error.message : 'Unknown error occurred',\n details: error\n }\n };\n }\n }\n\n /**\n * Get detailed information about a ckTESTBTC boost request\n * \n * @param requestId - The boost request ID (as string)\n * @returns Detailed boost request information\n */\n async getBoostRequest(requestId: string): Promise<ApiResponse<BoostRequest>> {\n try {\n // Convert string ID to bigint\n const boostId = BigInt(requestId);\n\n // Get boost request from backend\n const result = await this.backend.getBoostRequest(boostId);\n\n if (result.length === 0) {\n throw new CKBoostError(\n CKBoostErrorType.REQUEST_NOT_FOUND,\n `Boost request with ID ${requestId} not found`\n );\n }\n\n const backendRequest = result[0];\n\n // Convert backend BoostRequest to our format\n const boostRequest: BoostRequest = {\n id: backendRequest.id.toString(),\n status: this.convertBoostStatus(backendRequest.status),\n amount: this.rawToTokenAmount(backendRequest.amount),\n amountRaw: backendRequest.amount.toString(),\n maxFeePercentage: backendRequest.maxFeePercentage,\n owner: backendRequest.owner.toString(),\n booster: backendRequest.booster.length > 0 ? backendRequest.booster[0]?.toString() : undefined,\n preferredBooster: backendRequest.preferredBooster.length > 0 ? backendRequest.preferredBooster[0]?.toString() : undefined,\n depositAddress: backendRequest.btcAddress.length > 0 ? backendRequest.btcAddress[0] : undefined,\n receivedAmount: this.rawToTokenAmount(backendRequest.receivedBTC),\n confirmationsRequired: Number(backendRequest.confirmationsRequired),\n createdAt: Number(backendRequest.createdAt),\n updatedAt: Number(backendRequest.updatedAt),\n explorerUrl: backendRequest.btcAddress.length > 0 && backendRequest.btcAddress[0]\n ? `${this.tokenConfig.blockExplorerUrl}/address/${backendRequest.btcAddress[0]}`\n : this.tokenConfig.blockExplorerUrl\n };\n\n return {\n success: true,\n data: boostRequest\n };\n\n } catch (error) {\n if (error instanceof CKBoostError) {\n return {\n success: false,\n error: {\n type: error.type,\n message: error.message,\n details: error.details\n }\n };\n }\n\n return {\n success: false,\n error: {\n type: CKBoostErrorType.NETWORK_ERROR,\n message: error instanceof Error ? error.message : 'Unknown error occurred',\n details: error\n }\n };\n }\n }\n\n /**\n * Convert backend BoostStatus variant to our enum\n */\n private convertBoostStatus(status: any): BoostStatus {\n if ('pending' in status) return BoostStatus.PENDING;\n if ('active' in status) return BoostStatus.ACTIVE;\n if ('completed' in status) return BoostStatus.COMPLETED;\n if ('cancelled' in status) return BoostStatus.CANCELLED;\n return BoostStatus.PENDING; // Default fallback\n }\n\n /**\n * Convert raw amount (bigint) to token amount string\n */\n private rawToTokenAmount(rawAmount: bigint): string {\n const amount = Number(rawAmount) / Math.pow(10, this.tokenConfig.decimals);\n return amount.toFixed(this.tokenConfig.decimals);\n }\n\n /**\n * Utility method to get all pending ckTESTBTC boost requests\n */\n async getPendingBoostRequests(): Promise<ApiResponse<BoostRequest[]>> {\n try {\n const result = await this.backend.getPendingBoostRequests();\n\n const requests: BoostRequest[] = result.map(backendRequest => ({\n id: backendRequest.id.toString(),\n status: this.convertBoostStatus(backendRequest.status),\n amount: this.rawToTokenAmount(backendRequest.amount),\n amountRaw: backendRequest.amount.toString(),\n maxFeePercentage: backendRequest.maxFeePercentage,\n owner: backendRequest.owner.toString(),\n booster: backendRequest.booster.length > 0 ? backendRequest.booster[0]?.toString() : undefined,\n preferredBooster: backendRequest.preferredBooster.length > 0 ? backendRequest.preferredBooster[0]?.toString() : undefined,\n depositAddress: backendRequest.btcAddress.length > 0 ? backendRequest.btcAddress[0] : undefined,\n receivedAmount: this.rawToTokenAmount(backendRequest.receivedBTC),\n confirmationsRequired: Number(backendRequest.confirmationsRequired),\n createdAt: Number(backendRequest.createdAt) / 1_000_000, // Convert nanoseconds to milliseconds\n updatedAt: Number(backendRequest.updatedAt) / 1_000_000, // Convert nanoseconds to milliseconds\n explorerUrl: backendRequest.btcAddress.length > 0 && backendRequest.btcAddress[0]\n ? `${this.tokenConfig.blockExplorerUrl}/address/${backendRequest.btcAddress[0]}`\n : this.tokenConfig.blockExplorerUrl\n }));\n\n return {\n success: true,\n data: requests\n };\n\n } catch (error) {\n return {\n success: false,\n error: {\n type: CKBoostErrorType.NETWORK_ERROR,\n message: error instanceof Error ? error.message : 'Unknown error occurred',\n details: error\n }\n };\n }\n }\n\n /**\n * Get the ckTESTBTC token configuration\n */\n getTokenConfig() {\n return this.tokenConfig;\n }\n} ","// Main ckTESTBTCClient class - clean API for ckTESTBTC boost integration\nexport { ckTESTBTCClient } from './ck-testbtc-client';\n\n// ckTESTBTC Candid types for type safety\nexport type { _SERVICE as ckTESTBTCService } from './candid/ck-testbtc/backend.did';\nexport type { \n BoosterAccount as ckTESTBTCBoosterAccount, \n BoostRequest as ckTESTBTCBackendBoostRequest, \n Result as ckTESTBTCResult, \n Result_1 as ckTESTBTCResult_1 \n} from './candid/ck-testbtc/backend.did';\n\n// ckTESTBTC constants\nexport const ckTESTBTC_CANISTER_IDS = {\n CKBOOST_BACKEND: '75egi-7qaaa-aaaao-qj6ma-cai',\n CKTESTBTC_LEDGER: 'mc6ru-gyaaa-aaaar-qaaaq-cai'\n} as const;\n\n// Generic types (can be used for future tokens)\nexport {\n // Enums (values)\n SupportedToken,\n BoostStatus,\n CKBoostErrorType,\n \n // Constants (values)\n TOKEN_CONFIGS,\n \n // Error class (value)\n CKBoostError\n} from './types';\n\nexport type {\n // Interfaces (types only)\n DepositAddressParams,\n DepositAddress,\n BoostRequest,\n ClientConfig,\n TokenConfig,\n ApiResponse,\n AmountInfo\n} from './types'; "]}