@ckboost/booster
Version:
Liquidity provider toolkit for CKBoost - Create and manage ck-token liquidity pools on Internet Computer
1 lines • 16.8 kB
Source Map (JSON)
{"version":3,"sources":["../src/candid/ck-testbtc/backend.did.js","../src/ck-testbtc-booster.ts","../src/index.ts"],"names":[],"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'\nimport { Principal } from '@dfinity/principal'\nimport { Ed25519KeyIdentity } from '@dfinity/identity'\nimport { createHash } from 'crypto'\nimport { idlFactory, _SERVICE } from './candid/ck-testbtc/backend.did.js'\n\n// Constants from your script\nconst BACKEND_CANISTER_ID = \"75egi-7qaaa-aaaao-qj6ma-cai\"\nconst CKBTC_LEDGER_CANISTER_ID = \"mc6ru-gyaaa-aaaar-qaaaq-cai\"\n\n/**\n * ckTestBTCBooster - Clean interface for CKBoost operations\n * Handles only the CKBoost-specific functionality from your working script\n */\nexport class ckTestBTCBooster {\n private actor!: _SERVICE\n private agent: HttpAgent\n private identity: Ed25519KeyIdentity\n private ledgerActor: any\n\n constructor(mnemonics: string, host: string = \"https://icp0.io\") {\n this.identity = this.createIdentityFromMnemonics(mnemonics)\n this.agent = new HttpAgent({ \n host,\n identity: this.identity\n })\n }\n\n /**\n * Create identity from mnemonics (your exact logic)\n */\n private createIdentityFromMnemonics(mnemonics: string): Ed25519KeyIdentity {\n const words = mnemonics.trim().split(/\\s+/)\n if (words.length !== 12) {\n throw new Error(\"Invalid mnemonics length. Expected 12 words.\")\n }\n\n const hash = createHash('sha256')\n hash.update(words.join(' '))\n const seed = hash.digest()\n\n const identity = Ed25519KeyIdentity.generate(seed)\n console.log('Raw identity principal:', identity.getPrincipal().toText())\n \n return identity\n }\n\n /**\n * Initialize - now uses built-in IDL factory\n */\n async initialize(): Promise<void> {\n this.actor = Actor.createActor<_SERVICE>(idlFactory, { \n agent: this.agent, \n canisterId: Principal.fromText(BACKEND_CANISTER_ID) \n })\n\n // Create ledger actor\n this.ledgerActor = this.createLedgerActor()\n }\n\n /**\n * Create ICRC-1 ledger actor (your exact logic)\n */\n private createLedgerActor() {\n const icrc1LedgerIDLFactory = ({ IDL }: { IDL: any }) => {\n const Account = IDL.Record({\n 'owner': IDL.Principal,\n 'subaccount': IDL.Opt(IDL.Vec(IDL.Nat8)),\n })\n const Tokens = IDL.Nat\n const Memo = IDL.Vec(IDL.Nat8)\n const Timestamp = IDL.Nat64\n const TransferArg = IDL.Record({\n 'to': Account,\n 'fee': IDL.Opt(Tokens),\n 'memo': IDL.Opt(Memo),\n 'from_subaccount': IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'created_at_time': IDL.Opt(Timestamp),\n 'amount': Tokens,\n })\n const TransferError = IDL.Variant({\n 'GenericError': IDL.Record({\n 'message': IDL.Text,\n 'error_code': IDL.Nat,\n }),\n 'TemporarilyUnavailable': IDL.Null,\n 'BadBurn': IDL.Record({ 'min_burn_amount': Tokens }),\n 'Duplicate': IDL.Record({ 'duplicate_of': IDL.Nat }),\n 'BadFee': IDL.Record({ 'expected_fee': Tokens }),\n 'CreatedInFuture': IDL.Record({ 'ledger_time': Timestamp }),\n 'TooOld': IDL.Null,\n 'InsufficientFunds': IDL.Record({ 'balance': Tokens }),\n })\n const TransferResult = IDL.Variant({\n 'Ok': IDL.Nat,\n 'Err': TransferError,\n })\n return IDL.Service({\n 'icrc1_balance_of': IDL.Func([Account], [Tokens], ['query']),\n 'icrc1_transfer': IDL.Func([TransferArg], [TransferResult], []),\n })\n }\n\n return Actor.createActor(icrc1LedgerIDLFactory, {\n agent: this.agent,\n canisterId: Principal.fromText(CKBTC_LEDGER_CANISTER_ID)\n })\n }\n\n // CKBoost Operations\n\n /**\n * Register as booster\n */\n async registerBoosterAccount() {\n return await this.actor.registerBoosterAccount()\n }\n\n /**\n * Get booster account\n */\n async getBoosterAccount(principal?: Principal) {\n const targetPrincipal = principal || await this.agent.getPrincipal()\n return await this.actor.getBoosterAccount(targetPrincipal)\n }\n\n /**\n * Update booster deposit\n */\n async updateBoosterDeposit(principal: Principal, amount: bigint) {\n return await this.actor.updateBoosterDeposit(principal, amount)\n }\n\n /**\n * Get pending boost requests\n */\n async getPendingBoostRequests() {\n return await this.actor.getPendingBoostRequests()\n }\n\n /**\n * Accept boost request\n */\n async acceptBoostRequest(requestId: bigint) {\n return await this.actor.acceptBoostRequest(requestId)\n }\n\n // ICRC-1 Operations\n\n /**\n * Transfer ckTESTBTC (your exact logic)\n */\n async transferCKTESTBTC(transferArgs: any) {\n return await this.ledgerActor['icrc1_transfer'](transferArgs)\n }\n\n /**\n * Get ckTESTBTC balance\n */\n async getCKTESTBTCBalance(account: any) {\n return await this.ledgerActor['icrc1_balance_of'](account)\n }\n\n // Utility methods\n\n /**\n * Get current principal\n */\n async getPrincipal(): Promise<Principal> {\n return await this.agent.getPrincipal()\n }\n\n /**\n * Get backend canister principal\n */\n getBackendCanisterPrincipal(): Principal {\n return Principal.fromText(BACKEND_CANISTER_ID)\n }\n\n /**\n * Get ledger canister principal\n */\n getLedgerCanisterPrincipal(): Principal {\n return Principal.fromText(CKBTC_LEDGER_CANISTER_ID)\n }\n\n /**\n * Convert BTC to satoshis\n */\n btcToSatoshis(btcAmount: number): bigint {\n return BigInt(btcAmount * 10 ** 8)\n }\n\n /**\n * Convert satoshis to BTC\n */\n satoshisToBTC(satoshis: bigint): number {\n return Number(satoshis) / 10 ** 8\n }\n}","// Main ckTestBTCBooster class - clean API for ckTESTBTC boosting\nexport { ckTestBTCBooster } from './ck-testbtc-booster'\n\n// ckTESTBTC Candid types for type safety\nexport type { _SERVICE as ckTESTBTCService } from './candid/ck-testbtc/backend.did.js'\nexport type { \n BoosterAccount as ckTESTBTCBoosterAccount, \n BoostRequest as ckTESTBTCBoostRequest, \n Result as ckTESTBTCResult, \n Result_1 as ckTESTBTCResult_1 \n} from './candid/ck-testbtc/backend.did.js'\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 "]}