{"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 "]}