@arkade-os/sdk 0.5.0-rc.2 → 0.5.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +12 -67
  2. package/dist/adapters/expo.cjs +5 -6
  3. package/dist/adapters/expo.d.cts +2 -2
  4. package/dist/adapters/expo.d.ts +2 -2
  5. package/dist/adapters/expo.js +3 -4
  6. package/dist/{asyncStorageTaskQueue-C5rBYlru.d.ts → asyncStorageTaskQueue-BCiOgs5x.d.ts} +2 -2
  7. package/dist/{asyncStorageTaskQueue-BuDvgWh6.d.cts → asyncStorageTaskQueue-CTIwKrt5.d.cts} +2 -2
  8. package/dist/{chunk-3R476TDV.js → chunk-4EZOMPAO.js} +14 -38
  9. package/dist/chunk-4EZOMPAO.js.map +1 -0
  10. package/dist/{chunk-D25O4EGY.cjs → chunk-5NLJUXXQ.cjs} +10 -10
  11. package/dist/{chunk-D25O4EGY.cjs.map → chunk-5NLJUXXQ.cjs.map} +1 -1
  12. package/dist/{chunk-JZWLXNHV.cjs → chunk-C5Y2R63Z.cjs} +25 -71
  13. package/dist/chunk-C5Y2R63Z.cjs.map +1 -0
  14. package/dist/{chunk-6DNR46C7.js → chunk-CIBGIZUW.js} +4 -4
  15. package/dist/{chunk-6DNR46C7.js.map → chunk-CIBGIZUW.js.map} +1 -1
  16. package/dist/{chunk-43FKNLX4.cjs → chunk-F7HJO5GT.cjs} +61 -85
  17. package/dist/chunk-F7HJO5GT.cjs.map +1 -0
  18. package/dist/{chunk-ISO4TI5J.js → chunk-GLZNJFAT.js} +25 -67
  19. package/dist/chunk-GLZNJFAT.js.map +1 -0
  20. package/dist/{chunk-HLCGYOIH.cjs → chunk-GPJSGLWM.cjs} +17 -17
  21. package/dist/{chunk-HLCGYOIH.cjs.map → chunk-GPJSGLWM.cjs.map} +1 -1
  22. package/dist/{chunk-ZOTXDOS5.js → chunk-MOWSLXGO.js} +4 -4
  23. package/dist/{chunk-ZOTXDOS5.js.map → chunk-MOWSLXGO.js.map} +1 -1
  24. package/dist/{chunk-ZRNQV6HV.js → chunk-PYTAH2NY.js} +167 -703
  25. package/dist/chunk-PYTAH2NY.js.map +1 -0
  26. package/dist/{chunk-NVZJSKZS.cjs → chunk-SYRQJS5N.cjs} +18 -19
  27. package/dist/chunk-SYRQJS5N.cjs.map +1 -0
  28. package/dist/{chunk-4PKLULWT.js → chunk-XHASFSDU.js} +3 -4
  29. package/dist/chunk-XHASFSDU.js.map +1 -0
  30. package/dist/{chunk-GMZZQXV5.cjs → chunk-ZHLYFRYY.cjs} +583 -1128
  31. package/dist/chunk-ZHLYFRYY.cjs.map +1 -0
  32. package/dist/contracts/handlers/index.cjs +9 -10
  33. package/dist/contracts/handlers/index.d.cts +3 -3
  34. package/dist/contracts/handlers/index.d.ts +3 -3
  35. package/dist/contracts/handlers/index.js +2 -3
  36. package/dist/{delegate-1yp1HyP7.d.cts → delegate-CpQIgTs7.d.cts} +1 -1
  37. package/dist/{delegate-BAX5QftB.d.ts → delegate-Dv-us16c.d.ts} +1 -1
  38. package/dist/{hdWalletCapable-CmEU0NP1.d.ts → hdWalletCapable-BC4Fmmht.d.ts} +7 -25
  39. package/dist/{hdWalletCapable-eJgaT-ec.d.cts → hdWalletCapable-DotEa5rZ.d.cts} +7 -25
  40. package/dist/{index-DUxufw76.d.ts → index-Czz9HSqE.d.cts} +21 -220
  41. package/dist/{index-DUxufw76.d.cts → index-Czz9HSqE.d.ts} +21 -220
  42. package/dist/{index-Bem5vKzX.d.ts → index-DUkvXxpt.d.ts} +3 -3
  43. package/dist/{index-W_oMcOmG.d.cts → index-DdJt5fRc.d.cts} +3 -3
  44. package/dist/index.cjs +291 -340
  45. package/dist/index.d.cts +58 -223
  46. package/dist/index.d.ts +58 -223
  47. package/dist/index.js +4 -5
  48. package/dist/repositories/realm/index.cjs +57 -24
  49. package/dist/repositories/realm/index.cjs.map +1 -1
  50. package/dist/repositories/realm/index.d.cts +12 -4
  51. package/dist/repositories/realm/index.d.ts +12 -4
  52. package/dist/repositories/realm/index.js +43 -10
  53. package/dist/repositories/realm/index.js.map +1 -1
  54. package/dist/repositories/sqlite/index.cjs +103 -33
  55. package/dist/repositories/sqlite/index.cjs.map +1 -1
  56. package/dist/repositories/sqlite/index.d.cts +12 -2
  57. package/dist/repositories/sqlite/index.d.ts +12 -2
  58. package/dist/repositories/sqlite/index.js +90 -20
  59. package/dist/repositories/sqlite/index.js.map +1 -1
  60. package/dist/{taskRunner-Dr3NStc0.d.cts → taskRunner-7E_Rx8bD.d.cts} +2 -2
  61. package/dist/{taskRunner-D_iPiZIi.d.ts → taskRunner-DUId1UJ8.d.ts} +2 -2
  62. package/dist/wallet/expo/background.cjs +14 -15
  63. package/dist/wallet/expo/background.cjs.map +1 -1
  64. package/dist/wallet/expo/background.d.cts +3 -3
  65. package/dist/wallet/expo/background.d.ts +3 -3
  66. package/dist/wallet/expo/background.js +6 -7
  67. package/dist/wallet/expo/background.js.map +1 -1
  68. package/dist/wallet/expo/index.cjs +15 -23
  69. package/dist/wallet/expo/index.cjs.map +1 -1
  70. package/dist/wallet/expo/index.d.cts +4 -7
  71. package/dist/wallet/expo/index.d.ts +4 -7
  72. package/dist/wallet/expo/index.js +7 -15
  73. package/dist/wallet/expo/index.js.map +1 -1
  74. package/dist/worker/expo/index.cjs +9 -10
  75. package/dist/worker/expo/index.cjs.map +1 -1
  76. package/dist/worker/expo/index.d.cts +4 -4
  77. package/dist/worker/expo/index.d.ts +4 -4
  78. package/dist/worker/expo/index.js +5 -6
  79. package/dist/worker/expo/index.js.map +1 -1
  80. package/package.json +4 -42
  81. package/dist/adapters/asyncStorage.cjs +0 -48
  82. package/dist/adapters/asyncStorage.cjs.map +0 -1
  83. package/dist/adapters/asyncStorage.d.cts +0 -16
  84. package/dist/adapters/asyncStorage.d.ts +0 -16
  85. package/dist/adapters/asyncStorage.js +0 -46
  86. package/dist/adapters/asyncStorage.js.map +0 -1
  87. package/dist/adapters/fileSystem.cjs +0 -116
  88. package/dist/adapters/fileSystem.cjs.map +0 -1
  89. package/dist/adapters/fileSystem.d.cts +0 -17
  90. package/dist/adapters/fileSystem.d.ts +0 -17
  91. package/dist/adapters/fileSystem.js +0 -93
  92. package/dist/adapters/fileSystem.js.map +0 -1
  93. package/dist/adapters/indexedDB.cjs +0 -103
  94. package/dist/adapters/indexedDB.cjs.map +0 -1
  95. package/dist/adapters/indexedDB.d.cts +0 -18
  96. package/dist/adapters/indexedDB.d.ts +0 -18
  97. package/dist/adapters/indexedDB.js +0 -101
  98. package/dist/adapters/indexedDB.js.map +0 -1
  99. package/dist/adapters/localStorage.cjs +0 -50
  100. package/dist/adapters/localStorage.cjs.map +0 -1
  101. package/dist/adapters/localStorage.d.cts +0 -14
  102. package/dist/adapters/localStorage.d.ts +0 -14
  103. package/dist/adapters/localStorage.js +0 -48
  104. package/dist/adapters/localStorage.js.map +0 -1
  105. package/dist/chunk-3R476TDV.js.map +0 -1
  106. package/dist/chunk-43FKNLX4.cjs.map +0 -1
  107. package/dist/chunk-4PKLULWT.js.map +0 -1
  108. package/dist/chunk-5BLDMQED.cjs +0 -18
  109. package/dist/chunk-5BLDMQED.cjs.map +0 -1
  110. package/dist/chunk-GMZZQXV5.cjs.map +0 -1
  111. package/dist/chunk-ISO4TI5J.js.map +0 -1
  112. package/dist/chunk-JZWLXNHV.cjs.map +0 -1
  113. package/dist/chunk-NSBPE2FW.js +0 -15
  114. package/dist/chunk-NSBPE2FW.js.map +0 -1
  115. package/dist/chunk-NVZJSKZS.cjs.map +0 -1
  116. package/dist/chunk-ZRNQV6HV.js.map +0 -1
  117. package/dist/index-C0IanN1m.d.cts +0 -11
  118. package/dist/index-C0IanN1m.d.ts +0 -11
@@ -1,5 +1,5 @@
1
- import { getRandomId, extendVirtualCoinForContract, isWatchedContract, warnAndFilterVtxosForScript, saveVtxosForContract } from './chunk-ZRNQV6HV.js';
2
- import { getNormalizedVtxos } from './chunk-ISO4TI5J.js';
1
+ import { getRandomId, extendVirtualCoinForContract, isWatchedContract, warnAndFilterVtxosForScript, saveVtxosForContract } from './chunk-PYTAH2NY.js';
2
+ import { getNormalizedVtxos } from './chunk-GLZNJFAT.js';
3
3
 
4
4
  // src/worker/expo/taskRunner.ts
5
5
  async function runTasks(queue, processors, deps) {
@@ -92,5 +92,5 @@ var contractPollProcessor = {
92
92
  };
93
93
 
94
94
  export { CONTRACT_POLL_TASK_TYPE, contractPollProcessor, createTaskDependencies, runTasks };
95
- //# sourceMappingURL=chunk-6DNR46C7.js.map
96
- //# sourceMappingURL=chunk-6DNR46C7.js.map
95
+ //# sourceMappingURL=chunk-CIBGIZUW.js.map
96
+ //# sourceMappingURL=chunk-CIBGIZUW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/worker/expo/taskRunner.ts","../src/worker/expo/processors/contractPollProcessor.ts"],"names":[],"mappings":"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","file":"chunk-6DNR46C7.js","sourcesContent":["import type { TaskItem, TaskResult, TaskQueue } from \"./taskQueue\";\nimport type { WalletRepository } from \"../../repositories/walletRepository\";\nimport type { ContractRepository } from \"../../repositories/contractRepository\";\nimport type { IndexerProvider } from \"../../providers/indexer\";\nimport type { ArkProvider } from \"../../providers/ark\";\nimport type { ExtendedVirtualCoin, VirtualCoin } from \"../../wallet\";\nimport type { Contract } from \"../../contracts/types\";\nimport { getRandomId, extendVirtualCoinForContract } from \"../../wallet/utils\";\n\n/**\n * Shared dependencies injected into every processor at runtime.\n *\n * `extendVtxo` requires the owning contract — processors must resolve each\n * vtxo's `script` to a known contract (via the contract repository) before\n * calling this. The strict signature prevents the footgun where a missing\n * contract silently falls back to the wallet's default tapscript.\n */\nexport interface TaskDependencies {\n walletRepository: WalletRepository;\n contractRepository: ContractRepository;\n indexerProvider: IndexerProvider;\n arkProvider: ArkProvider;\n extendVtxo: (vtxo: VirtualCoin, contract: Contract) => ExtendedVirtualCoin;\n}\n\n/**\n * A stateless unit that handles one type of task item.\n *\n * Processors must not keep in-memory state across invocations —\n * all coordination lives in the @see TaskQueue and repositories.\n *\n * The `TDeps` parameter defaults to @see TaskDependencies but\n * can be overridden for domain-specific processors (e.g. swap processing).\n */\nexport interface TaskProcessor<TDeps = TaskDependencies> {\n readonly taskType: string;\n execute(item: TaskItem, deps: TDeps): Promise<Omit<TaskResult, \"id\" | \"executedAt\">>;\n}\n\n/**\n * Run all pending tasks from the queue through matching processors.\n *\n * For each task in the inbox:\n * 1. Find the processor whose `taskType` matches `task.type`.\n * 2. Execute it, producing a @see TaskResult.\n * 3. Push the result to the outbox and remove the task from the inbox.\n *\n * Tasks with no matching processor produce a `\"noop\"` result.\n * Processor errors produce a `\"failed\"` result with the error message.\n */\nexport async function runTasks<TDeps = TaskDependencies>(\n queue: TaskQueue,\n processors: TaskProcessor<TDeps>[],\n deps: TDeps,\n): Promise<TaskResult[]> {\n const tasks = await queue.getTasks();\n const processorMap = new Map(processors.map((p) => [p.taskType, p]));\n const results: TaskResult[] = [];\n\n for (const task of tasks) {\n const processor = processorMap.get(task.type);\n\n let partial: Omit<TaskResult, \"id\" | \"executedAt\">;\n\n if (!processor) {\n partial = {\n taskItemId: task.id,\n type: task.type,\n status: \"noop\",\n };\n } else {\n try {\n partial = await processor.execute(task, deps);\n } catch (error) {\n partial = {\n taskItemId: task.id,\n type: task.type,\n status: \"failed\",\n data: {\n error: error instanceof Error ? error.message : String(error),\n },\n };\n }\n }\n\n const result: TaskResult = {\n ...partial,\n id: getRandomId(),\n executedAt: Date.now(),\n };\n\n await queue.pushResult(result);\n await queue.removeTask(task.id);\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Options for @see createTaskDependencies.\n */\nexport interface CreateTaskDependenciesOptions {\n walletRepository: WalletRepository;\n contractRepository: ContractRepository;\n indexerProvider: IndexerProvider;\n arkProvider: ArkProvider;\n}\n\n/**\n * Build the @see TaskDependencies needed by task processors\n * (e.g. `src/worker/expo/processors/contractPollProcessor.ts`)\n *\n * This is the same construction that `defineExpoBackgroundTask` does\n * internally, extracted so that consumers with custom schedulers\n * (e.g. bare React Native with `react-native-background-fetch`)\n * can build deps without depending on Expo.\n */\nexport function createTaskDependencies(options: CreateTaskDependenciesOptions): TaskDependencies {\n return {\n ...options,\n extendVtxo: (vtxo: VirtualCoin, contract: Contract) =>\n extendVirtualCoinForContract(vtxo, contract),\n };\n}\n","import type { TaskItem, TaskResult } from \"../taskQueue\";\nimport type { TaskProcessor, TaskDependencies } from \"../taskRunner\";\nimport type { ExtendedVirtualCoin } from \"../../../wallet\";\nimport { getNormalizedVtxos } from \"../../../wallet/vtxo\";\nimport {\n warnAndFilterVtxosForScript,\n saveVtxosForContract,\n} from \"../../../contracts/vtxoOwnership\";\nimport { isWatchedContract } from \"../../../contracts/types\";\n\nexport const CONTRACT_POLL_TASK_TYPE = \"contract-poll\";\n\n/**\n * Polls the indexer for the latest VTXO state of every contract and\n * persists the results to the wallet repository.\n *\n * Replicates the polling subset of @see ContractManager.initialize:\n * 1. Load every watched contract from the contract repository.\n * 2. Paginated fetch of every VTXO (including spent) from the indexer.\n * 3. Extend each VTXO with tapscript data.\n * 4. Save to the wallet repository.\n *\n * NOTE: the indexer query deliberately omits `spendableOnly`. Every\n * repository implements `saveVtxos` as an upsert with no batch delete,\n * so filtering to spendable-only would leave VTXOs that became spent\n * between polls marked as spendable forever. Fetching the full set lets\n * the upsert overwrite stale records with their latest state.\n */\nexport const contractPollProcessor: TaskProcessor = {\n taskType: CONTRACT_POLL_TASK_TYPE,\n\n async execute(\n item: TaskItem,\n deps: TaskDependencies,\n ): Promise<Omit<TaskResult, \"id\" | \"executedAt\">> {\n const { contractRepository, walletRepository, indexerProvider, extendVtxo } = deps;\n\n // Background channel, so it covers exactly what the watcher's\n // subscription covers: `retained` rows are kept for reads only.\n const contracts = (await contractRepository.getContracts()).filter(isWatchedContract);\n let contractsProcessed = 0;\n let vtxosSaved = 0;\n\n for (const contract of contracts) {\n // Paginated fetch of spendable virtual outputs\n const pageSize = 100;\n let pageIndex = 0;\n let hasMore = true;\n const allVtxos: ExtendedVirtualCoin[] = [];\n\n while (hasMore) {\n const { vtxos, page } = await getNormalizedVtxos(indexerProvider, {\n scripts: [contract.script],\n pageIndex,\n pageSize,\n });\n\n for (const vtxo of vtxos) {\n allVtxos.push(extendVtxo(vtxo, contract));\n }\n\n hasMore = page ? vtxos.length === pageSize : false;\n pageIndex++;\n }\n\n // Skip wrong-script rows (legacy duplicates or indexer drift)\n // before persisting; the loop must keep going for the remaining\n // contracts even when one row is rejected.\n const filtered = warnAndFilterVtxosForScript(\n allVtxos,\n contract.script,\n \"contractPollProcessor\",\n );\n await saveVtxosForContract(walletRepository, contract, filtered);\n vtxosSaved += filtered.length;\n contractsProcessed++;\n }\n\n return {\n taskItemId: item.id,\n type: CONTRACT_POLL_TASK_TYPE,\n status: \"success\",\n data: { contractsProcessed, vtxosSaved },\n };\n },\n};\n"]}
1
+ {"version":3,"sources":["../src/worker/expo/taskRunner.ts","../src/worker/expo/processors/contractPollProcessor.ts"],"names":[],"mappings":"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","file":"chunk-CIBGIZUW.js","sourcesContent":["import type { TaskItem, TaskResult, TaskQueue } from \"./taskQueue\";\nimport type { WalletRepository } from \"../../repositories/walletRepository\";\nimport type { ContractRepository } from \"../../repositories/contractRepository\";\nimport type { IndexerProvider } from \"../../providers/indexer\";\nimport type { ArkProvider } from \"../../providers/ark\";\nimport type { ExtendedVirtualCoin, VirtualCoin } from \"../../wallet\";\nimport type { Contract } from \"../../contracts/types\";\nimport { getRandomId, extendVirtualCoinForContract } from \"../../wallet/utils\";\n\n/**\n * Shared dependencies injected into every processor at runtime.\n *\n * `extendVtxo` requires the owning contract — processors must resolve each\n * vtxo's `script` to a known contract (via the contract repository) before\n * calling this. The strict signature prevents the footgun where a missing\n * contract silently falls back to the wallet's default tapscript.\n */\nexport interface TaskDependencies {\n walletRepository: WalletRepository;\n contractRepository: ContractRepository;\n indexerProvider: IndexerProvider;\n arkProvider: ArkProvider;\n extendVtxo: (vtxo: VirtualCoin, contract: Contract) => ExtendedVirtualCoin;\n}\n\n/**\n * A stateless unit that handles one type of task item.\n *\n * Processors must not keep in-memory state across invocations —\n * all coordination lives in the @see TaskQueue and repositories.\n *\n * The `TDeps` parameter defaults to @see TaskDependencies but\n * can be overridden for domain-specific processors (e.g. swap processing).\n */\nexport interface TaskProcessor<TDeps = TaskDependencies> {\n readonly taskType: string;\n execute(item: TaskItem, deps: TDeps): Promise<Omit<TaskResult, \"id\" | \"executedAt\">>;\n}\n\n/**\n * Run all pending tasks from the queue through matching processors.\n *\n * For each task in the inbox:\n * 1. Find the processor whose `taskType` matches `task.type`.\n * 2. Execute it, producing a @see TaskResult.\n * 3. Push the result to the outbox and remove the task from the inbox.\n *\n * Tasks with no matching processor produce a `\"noop\"` result.\n * Processor errors produce a `\"failed\"` result with the error message.\n */\nexport async function runTasks<TDeps = TaskDependencies>(\n queue: TaskQueue,\n processors: TaskProcessor<TDeps>[],\n deps: TDeps,\n): Promise<TaskResult[]> {\n const tasks = await queue.getTasks();\n const processorMap = new Map(processors.map((p) => [p.taskType, p]));\n const results: TaskResult[] = [];\n\n for (const task of tasks) {\n const processor = processorMap.get(task.type);\n\n let partial: Omit<TaskResult, \"id\" | \"executedAt\">;\n\n if (!processor) {\n partial = {\n taskItemId: task.id,\n type: task.type,\n status: \"noop\",\n };\n } else {\n try {\n partial = await processor.execute(task, deps);\n } catch (error) {\n partial = {\n taskItemId: task.id,\n type: task.type,\n status: \"failed\",\n data: {\n error: error instanceof Error ? error.message : String(error),\n },\n };\n }\n }\n\n const result: TaskResult = {\n ...partial,\n id: getRandomId(),\n executedAt: Date.now(),\n };\n\n await queue.pushResult(result);\n await queue.removeTask(task.id);\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Options for @see createTaskDependencies.\n */\nexport interface CreateTaskDependenciesOptions {\n walletRepository: WalletRepository;\n contractRepository: ContractRepository;\n indexerProvider: IndexerProvider;\n arkProvider: ArkProvider;\n}\n\n/**\n * Build the @see TaskDependencies needed by task processors\n * (e.g. `src/worker/expo/processors/contractPollProcessor.ts`)\n *\n * This is the same construction that `defineExpoBackgroundTask` does\n * internally, extracted so that consumers with custom schedulers\n * (e.g. bare React Native with `react-native-background-fetch`)\n * can build deps without depending on Expo.\n */\nexport function createTaskDependencies(options: CreateTaskDependenciesOptions): TaskDependencies {\n return {\n ...options,\n extendVtxo: (vtxo: VirtualCoin, contract: Contract) =>\n extendVirtualCoinForContract(vtxo, contract),\n };\n}\n","import type { TaskItem, TaskResult } from \"../taskQueue\";\nimport type { TaskProcessor, TaskDependencies } from \"../taskRunner\";\nimport type { ExtendedVirtualCoin } from \"../../../wallet\";\nimport { getNormalizedVtxos } from \"../../../wallet/vtxo\";\nimport {\n warnAndFilterVtxosForScript,\n saveVtxosForContract,\n} from \"../../../contracts/vtxoOwnership\";\nimport { isWatchedContract } from \"../../../contracts/types\";\n\nexport const CONTRACT_POLL_TASK_TYPE = \"contract-poll\";\n\n/**\n * Polls the indexer for the latest VTXO state of every contract and\n * persists the results to the wallet repository.\n *\n * Replicates the polling subset of @see ContractManager.initialize:\n * 1. Load every watched contract from the contract repository.\n * 2. Paginated fetch of every VTXO (including spent) from the indexer.\n * 3. Extend each VTXO with tapscript data.\n * 4. Save to the wallet repository.\n *\n * NOTE: the indexer query deliberately omits `spendableOnly`. Every\n * repository implements `saveVtxos` as an upsert with no batch delete,\n * so filtering to spendable-only would leave VTXOs that became spent\n * between polls marked as spendable forever. Fetching the full set lets\n * the upsert overwrite stale records with their latest state.\n */\nexport const contractPollProcessor: TaskProcessor = {\n taskType: CONTRACT_POLL_TASK_TYPE,\n\n async execute(\n item: TaskItem,\n deps: TaskDependencies,\n ): Promise<Omit<TaskResult, \"id\" | \"executedAt\">> {\n const { contractRepository, walletRepository, indexerProvider, extendVtxo } = deps;\n\n // Background channel, so it covers exactly what the watcher's\n // subscription covers: `retained` rows are kept for reads only.\n const contracts = (await contractRepository.getContracts()).filter(isWatchedContract);\n let contractsProcessed = 0;\n let vtxosSaved = 0;\n\n for (const contract of contracts) {\n // Paginated fetch of spendable virtual outputs\n const pageSize = 100;\n let pageIndex = 0;\n let hasMore = true;\n const allVtxos: ExtendedVirtualCoin[] = [];\n\n while (hasMore) {\n const { vtxos, page } = await getNormalizedVtxos(indexerProvider, {\n scripts: [contract.script],\n pageIndex,\n pageSize,\n });\n\n for (const vtxo of vtxos) {\n allVtxos.push(extendVtxo(vtxo, contract));\n }\n\n hasMore = page ? vtxos.length === pageSize : false;\n pageIndex++;\n }\n\n // Skip wrong-script rows (legacy duplicates or indexer drift)\n // before persisting; the loop must keep going for the remaining\n // contracts even when one row is rejected.\n const filtered = warnAndFilterVtxosForScript(\n allVtxos,\n contract.script,\n \"contractPollProcessor\",\n );\n await saveVtxosForContract(walletRepository, contract, filtered);\n vtxosSaved += filtered.length;\n contractsProcessed++;\n }\n\n return {\n taskItemId: item.id,\n type: CONTRACT_POLL_TASK_TYPE,\n status: \"success\",\n data: { contractsProcessed, vtxosSaved },\n };\n },\n};\n"]}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkJZWLXNHV_cjs = require('./chunk-JZWLXNHV.cjs');
4
- var chunk5BLDMQED_cjs = require('./chunk-5BLDMQED.cjs');
3
+ var chunkC5Y2R63Z_cjs = require('./chunk-C5Y2R63Z.cjs');
5
4
  var base = require('@scure/base');
6
5
  var descriptorsScure = require('@bitcoinerlab/descriptors-scure');
7
6
  var btcSigner = require('@scure/btc-signer');
@@ -76,14 +75,14 @@ var ContractHandlerRegistry = class {
76
75
  var contractHandlers = new ContractHandlerRegistry();
77
76
  exports.DefaultVtxo = void 0;
78
77
  ((DefaultVtxo2) => {
79
- class Script3 extends chunkJZWLXNHV_cjs.VtxoScript {
78
+ class Script3 extends chunkC5Y2R63Z_cjs.VtxoScript {
80
79
  /** Create the default virtual output script with one forfeit path and one exit path. */
81
80
  constructor(options) {
82
81
  const { pubKey, serverPubKey, csvTimelock } = options;
83
- const forfeitScript = chunkJZWLXNHV_cjs.MultisigTapscript.encode({
82
+ const forfeitScript = chunkC5Y2R63Z_cjs.MultisigTapscript.encode({
84
83
  pubkeys: [pubKey, serverPubKey]
85
84
  }).script;
86
- const exitScript = chunkJZWLXNHV_cjs.CSVMultisigTapscript.encode({
85
+ const exitScript = chunkC5Y2R63Z_cjs.CSVMultisigTapscript.encode({
87
86
  timelock: csvTimelock,
88
87
  pubkeys: [pubKey]
89
88
  }).script;
@@ -268,27 +267,14 @@ function resolveRole(contract, context) {
268
267
  }
269
268
  return void 0;
270
269
  };
271
- if (context.walletDescriptor) {
272
- const walletDescriptorKey = extractRawPubKey(context.walletDescriptor);
273
- const matchedRole = matchRole(walletDescriptorKey);
274
- if (matchedRole) {
275
- return matchedRole;
276
- }
277
- if (!walletDescriptorKey && context.walletPubKey) {
278
- return matchRole(extractRawPubKey(context.walletPubKey));
279
- }
280
- return void 0;
281
- }
282
- if (context.walletPubKey) {
283
- return matchRole(extractRawPubKey(context.walletPubKey));
284
- }
285
- return void 0;
270
+ if (!context.walletDescriptor) return void 0;
271
+ return matchRole(extractRawPubKey(context.walletDescriptor));
286
272
  }
287
273
  function extractPubKeyBytes(value) {
288
274
  return base.hex.decode(extractPubKey(normalizeToDescriptor(value)));
289
275
  }
290
276
  function deserializeCsvTimelock(value) {
291
- return value !== void 0 && value !== "" ? chunkJZWLXNHV_cjs.sequenceToTimelock(Number(value)) : exports.DefaultVtxo.Script.DEFAULT_TIMELOCK;
277
+ return value !== void 0 && value !== "" ? chunkC5Y2R63Z_cjs.sequenceToTimelock(Number(value)) : exports.DefaultVtxo.Script.DEFAULT_TIMELOCK;
292
278
  }
293
279
  var CLTV_HEIGHT_THRESHOLD = 500000000n;
294
280
  function isCltvSatisfied(context, locktime) {
@@ -330,7 +316,7 @@ function assertVhtlcSpendableNow(contract, context) {
330
316
  function isCsvSpendable(context, sequence) {
331
317
  if (sequence === void 0) return true;
332
318
  if (!context.vtxo) return false;
333
- const timelock = chunkJZWLXNHV_cjs.sequenceToTimelock(sequence);
319
+ const timelock = chunkC5Y2R63Z_cjs.sequenceToTimelock(sequence);
334
320
  if (timelock.type === "blocks") {
335
321
  if (context.blockHeight === void 0 || context.vtxo.status.block_height === void 0) {
336
322
  return false;
@@ -388,21 +374,21 @@ function forfeitExitSpendablePaths(script, contract, context) {
388
374
  async function detectUsedScripts(indexerProvider, scriptHexes) {
389
375
  const used = /* @__PURE__ */ new Set();
390
376
  const unique = [...new Set(scriptHexes)];
391
- for (let offset = 0; offset < unique.length; offset += chunkJZWLXNHV_cjs.SCRIPT_QUERY_CHUNK_SIZE) {
392
- const scripts = unique.slice(offset, offset + chunkJZWLXNHV_cjs.SCRIPT_QUERY_CHUNK_SIZE);
377
+ for (let offset = 0; offset < unique.length; offset += chunkC5Y2R63Z_cjs.SCRIPT_QUERY_CHUNK_SIZE) {
378
+ const scripts = unique.slice(offset, offset + chunkC5Y2R63Z_cjs.SCRIPT_QUERY_CHUNK_SIZE);
393
379
  const remaining = new Set(scripts);
394
380
  let pageIndex = 0;
395
381
  let hasMore = true;
396
382
  while (hasMore && remaining.size > 0) {
397
- const { vtxos, page } = await chunkJZWLXNHV_cjs.getNormalizedVtxos(indexerProvider, {
383
+ const { vtxos, page } = await chunkC5Y2R63Z_cjs.getNormalizedVtxos(indexerProvider, {
398
384
  scripts,
399
385
  pageIndex,
400
- pageSize: chunkJZWLXNHV_cjs.DEFAULT_PAGE_SIZE
386
+ pageSize: chunkC5Y2R63Z_cjs.DEFAULT_PAGE_SIZE
401
387
  });
402
388
  for (const vtxo of vtxos) {
403
389
  if (remaining.delete(vtxo.script)) used.add(vtxo.script);
404
390
  }
405
- hasMore = page ? vtxos.length === chunkJZWLXNHV_cjs.DEFAULT_PAGE_SIZE : false;
391
+ hasMore = page ? vtxos.length === chunkC5Y2R63Z_cjs.DEFAULT_PAGE_SIZE : false;
406
392
  pageIndex++;
407
393
  }
408
394
  }
@@ -463,7 +449,7 @@ var DefaultContractHandler = {
463
449
  return {
464
450
  pubKey: base.hex.encode(params.pubKey),
465
451
  serverPubKey: base.hex.encode(params.serverPubKey),
466
- csvTimelock: chunkJZWLXNHV_cjs.timelockToSequence(params.csvTimelock).toString()
452
+ csvTimelock: chunkC5Y2R63Z_cjs.timelockToSequence(params.csvTimelock).toString()
467
453
  };
468
454
  },
469
455
  deserializeParams(params) {
@@ -498,7 +484,7 @@ function defaultCandidatesAt(_index, descriptor, deps) {
498
484
  params: {
499
485
  pubKey: base.hex.encode(c.pubKey),
500
486
  serverPubKey: base.hex.encode(c.serverPubKey),
501
- csvTimelock: chunkJZWLXNHV_cjs.timelockToSequence(c.csvTimelock).toString()
487
+ csvTimelock: chunkC5Y2R63Z_cjs.timelockToSequence(c.csvTimelock).toString()
502
488
  },
503
489
  script: c.scriptHex,
504
490
  address: c.script.address(deps.network.hrp, c.serverPubKey).encode()
@@ -514,12 +500,12 @@ function discoverDefaultRange(entries, deps) {
514
500
  }
515
501
  exports.DelegateVtxo = void 0;
516
502
  ((DelegateVtxo2) => {
517
- class Script3 extends chunkJZWLXNHV_cjs.VtxoScript {
503
+ class Script3 extends chunkC5Y2R63Z_cjs.VtxoScript {
518
504
  /** Create a delegated virtual output script with forfeit, exit, and delegate paths. */
519
505
  constructor(options) {
520
506
  const defaultVtxo = new exports.DefaultVtxo.Script(options);
521
507
  const { delegatePubKey, pubKey, serverPubKey } = options;
522
- const delegateScript = chunkJZWLXNHV_cjs.MultisigTapscript.encode({
508
+ const delegateScript = chunkC5Y2R63Z_cjs.MultisigTapscript.encode({
523
509
  pubkeys: [pubKey, delegatePubKey, serverPubKey]
524
510
  }).script;
525
511
  super([...defaultVtxo.scripts, delegateScript]);
@@ -558,7 +544,7 @@ var DelegateContractHandler = {
558
544
  pubKey: base.hex.encode(params.pubKey),
559
545
  serverPubKey: base.hex.encode(params.serverPubKey),
560
546
  delegatePubKey: base.hex.encode(params.delegatePubKey),
561
- csvTimelock: chunkJZWLXNHV_cjs.timelockToSequence(params.csvTimelock).toString()
547
+ csvTimelock: chunkC5Y2R63Z_cjs.timelockToSequence(params.csvTimelock).toString()
562
548
  };
563
549
  },
564
550
  deserializeParams(params) {
@@ -602,7 +588,7 @@ function delegateCandidatesAt(_index, descriptor, deps) {
602
588
  pubKey: base.hex.encode(c.pubKey),
603
589
  serverPubKey: base.hex.encode(c.serverPubKey),
604
590
  delegatePubKey: base.hex.encode(delegatePubKey),
605
- csvTimelock: chunkJZWLXNHV_cjs.timelockToSequence(c.csvTimelock).toString()
591
+ csvTimelock: chunkC5Y2R63Z_cjs.timelockToSequence(c.csvTimelock).toString()
606
592
  },
607
593
  script: c.scriptHex,
608
594
  address: c.script.address(deps.network.hrp, c.serverPubKey).encode()
@@ -1256,7 +1242,7 @@ function getOpcodeValue(name) {
1256
1242
 
1257
1243
  // src/arkade/bignum.ts
1258
1244
  var bignum_exports = {};
1259
- chunk5BLDMQED_cjs.__export(bignum_exports, {
1245
+ chunkC5Y2R63Z_cjs.__export(bignum_exports, {
1260
1246
  BIGNUM_MAX_BYTES: () => BIGNUM_MAX_BYTES,
1261
1247
  decode: () => decode,
1262
1248
  encode: () => encode
@@ -1445,7 +1431,7 @@ function computeArkadeScriptPublicKey(pubKey, script) {
1445
1431
  // src/script/vhtlc.ts
1446
1432
  exports.VHTLC = void 0;
1447
1433
  ((VHTLC2) => {
1448
- class BaseScript extends chunkJZWLXNHV_cjs.VtxoScript {
1434
+ class BaseScript extends chunkC5Y2R63Z_cjs.VtxoScript {
1449
1435
  options;
1450
1436
  claimScript;
1451
1437
  refundScript;
@@ -1472,27 +1458,27 @@ exports.VHTLC = void 0;
1472
1458
  unilateralRefundWithoutReceiverDelay
1473
1459
  } = options;
1474
1460
  const conditionScript = preimageCondition(preimageHash);
1475
- const claimScript = chunkJZWLXNHV_cjs.ConditionMultisigTapscript.encode({
1461
+ const claimScript = chunkC5Y2R63Z_cjs.ConditionMultisigTapscript.encode({
1476
1462
  conditionScript,
1477
1463
  pubkeys: [receiver, server]
1478
1464
  }).script;
1479
- const refundScript = chunkJZWLXNHV_cjs.MultisigTapscript.encode({
1465
+ const refundScript = chunkC5Y2R63Z_cjs.MultisigTapscript.encode({
1480
1466
  pubkeys: [sender, receiver, server]
1481
1467
  }).script;
1482
- const refundWithoutReceiverScript = chunkJZWLXNHV_cjs.CLTVMultisigTapscript.encode({
1468
+ const refundWithoutReceiverScript = chunkC5Y2R63Z_cjs.CLTVMultisigTapscript.encode({
1483
1469
  absoluteTimelock: refundLocktime,
1484
1470
  pubkeys: [sender, server]
1485
1471
  }).script;
1486
- const unilateralClaimScript = chunkJZWLXNHV_cjs.ConditionCSVMultisigTapscript.encode({
1472
+ const unilateralClaimScript = chunkC5Y2R63Z_cjs.ConditionCSVMultisigTapscript.encode({
1487
1473
  conditionScript,
1488
1474
  timelock: unilateralClaimDelay,
1489
1475
  pubkeys: [receiver]
1490
1476
  }).script;
1491
- const unilateralRefundScript = chunkJZWLXNHV_cjs.CSVMultisigTapscript.encode({
1477
+ const unilateralRefundScript = chunkC5Y2R63Z_cjs.CSVMultisigTapscript.encode({
1492
1478
  timelock: unilateralRefundDelay,
1493
1479
  pubkeys: [sender, receiver]
1494
1480
  }).script;
1495
- const unilateralRefundWithoutReceiverScript = chunkJZWLXNHV_cjs.CSVMultisigTapscript.encode({
1481
+ const unilateralRefundWithoutReceiverScript = chunkC5Y2R63Z_cjs.CSVMultisigTapscript.encode({
1496
1482
  timelock: unilateralRefundWithoutReceiverDelay,
1497
1483
  pubkeys: [sender]
1498
1484
  }).script;
@@ -1512,7 +1498,7 @@ exports.VHTLC = void 0;
1512
1498
  const covenants = options.nonInteractiveParameters;
1513
1499
  if (covenants) {
1514
1500
  arkadeScriptNic = enforcePayToMaybeAsset(covenants.receiverPkScript, options.asset);
1515
- nonInteractiveClaimScript = chunkJZWLXNHV_cjs.ConditionMultisigTapscript.encode({
1501
+ nonInteractiveClaimScript = chunkC5Y2R63Z_cjs.ConditionMultisigTapscript.encode({
1516
1502
  conditionScript,
1517
1503
  pubkeys: [
1518
1504
  server,
@@ -1525,12 +1511,12 @@ exports.VHTLC = void 0;
1525
1511
  covenants.emulatorPubkey,
1526
1512
  arkadeScriptNir
1527
1513
  );
1528
- nonInteractiveRefundScript = chunkJZWLXNHV_cjs.MultisigTapscript.encode({
1514
+ nonInteractiveRefundScript = chunkC5Y2R63Z_cjs.MultisigTapscript.encode({
1529
1515
  pubkeys: [server, receiver, nirCosigner]
1530
1516
  }).script;
1531
1517
  scripts.push(nonInteractiveRefundScript);
1532
1518
  if (covenants.legacy !== "preTimelockedRefund") {
1533
- nonInteractiveRefundWithoutReceiverScript = chunkJZWLXNHV_cjs.CLTVMultisigTapscript.encode({
1519
+ nonInteractiveRefundWithoutReceiverScript = chunkC5Y2R63Z_cjs.CLTVMultisigTapscript.encode({
1534
1520
  absoluteTimelock: refundLocktime,
1535
1521
  pubkeys: [server, nirCosigner]
1536
1522
  }).script;
@@ -1844,9 +1830,9 @@ var VHTLCContractHandler = {
1844
1830
  server: base.hex.encode(params.server),
1845
1831
  hash: base.hex.encode(params.preimageHash),
1846
1832
  refundLocktime: params.refundLocktime.toString(),
1847
- claimDelay: chunkJZWLXNHV_cjs.timelockToSequence(params.unilateralClaimDelay).toString(),
1848
- refundDelay: chunkJZWLXNHV_cjs.timelockToSequence(params.unilateralRefundDelay).toString(),
1849
- refundNoReceiverDelay: chunkJZWLXNHV_cjs.timelockToSequence(
1833
+ claimDelay: chunkC5Y2R63Z_cjs.timelockToSequence(params.unilateralClaimDelay).toString(),
1834
+ refundDelay: chunkC5Y2R63Z_cjs.timelockToSequence(params.unilateralRefundDelay).toString(),
1835
+ refundNoReceiverDelay: chunkC5Y2R63Z_cjs.timelockToSequence(
1850
1836
  params.unilateralRefundWithoutReceiverDelay
1851
1837
  ).toString()
1852
1838
  };
@@ -1858,9 +1844,9 @@ var VHTLCContractHandler = {
1858
1844
  server: base.hex.decode(params.server),
1859
1845
  preimageHash: base.hex.decode(params.hash),
1860
1846
  refundLocktime: BigInt(params.refundLocktime),
1861
- unilateralClaimDelay: chunkJZWLXNHV_cjs.sequenceToTimelock(Number(params.claimDelay)),
1862
- unilateralRefundDelay: chunkJZWLXNHV_cjs.sequenceToTimelock(Number(params.refundDelay)),
1863
- unilateralRefundWithoutReceiverDelay: chunkJZWLXNHV_cjs.sequenceToTimelock(
1847
+ unilateralClaimDelay: chunkC5Y2R63Z_cjs.sequenceToTimelock(Number(params.claimDelay)),
1848
+ unilateralRefundDelay: chunkC5Y2R63Z_cjs.sequenceToTimelock(Number(params.refundDelay)),
1849
+ unilateralRefundWithoutReceiverDelay: chunkC5Y2R63Z_cjs.sequenceToTimelock(
1864
1850
  Number(params.refundNoReceiverDelay)
1865
1851
  )
1866
1852
  };
@@ -1869,7 +1855,7 @@ var VHTLCContractHandler = {
1869
1855
  * Select spending path based on context.
1870
1856
  *
1871
1857
  * Role is determined from `context.role` or by matching
1872
- * `context.walletDescriptor` (preferred) / `context.walletPubKey`
1858
+ * `context.walletDescriptor`
1873
1859
  * against sender/receiver in contract params.
1874
1860
  */
1875
1861
  selectPath(script, contract, context) {
@@ -1916,7 +1902,7 @@ var VHTLCContractHandler = {
1916
1902
  * Get all possible spending paths (no timelock checks).
1917
1903
  *
1918
1904
  * Role is determined from `context.role` or by matching
1919
- * `context.walletDescriptor` (preferred) / `context.walletPubKey`
1905
+ * `context.walletDescriptor`
1920
1906
  * against sender/receiver in contract params.
1921
1907
  */
1922
1908
  getAllSpendingPaths(script, contract, context) {
@@ -2106,9 +2092,9 @@ var VHTLCV2ContractHandler = {
2106
2092
  server: base.hex.encode(params.server),
2107
2093
  hash: base.hex.encode(params.preimageHash),
2108
2094
  refundLocktime: params.refundLocktime.toString(),
2109
- claimDelay: chunkJZWLXNHV_cjs.timelockToSequence(params.unilateralClaimDelay).toString(),
2110
- refundDelay: chunkJZWLXNHV_cjs.timelockToSequence(params.unilateralRefundDelay).toString(),
2111
- refundNoReceiverDelay: chunkJZWLXNHV_cjs.timelockToSequence(
2095
+ claimDelay: chunkC5Y2R63Z_cjs.timelockToSequence(params.unilateralClaimDelay).toString(),
2096
+ refundDelay: chunkC5Y2R63Z_cjs.timelockToSequence(params.unilateralRefundDelay).toString(),
2097
+ refundNoReceiverDelay: chunkC5Y2R63Z_cjs.timelockToSequence(
2112
2098
  params.unilateralRefundWithoutReceiverDelay
2113
2099
  ).toString(),
2114
2100
  // The on-disk keys keep their per-leaf names even though the typed
@@ -2208,9 +2194,9 @@ var VHTLCV2ContractHandler = {
2208
2194
  preimageHash: base.hex.decode(params.hash),
2209
2195
  refundLocktime: BigInt(params.refundLocktime),
2210
2196
  ...asset && { asset },
2211
- unilateralClaimDelay: chunkJZWLXNHV_cjs.sequenceToTimelock(Number(params.claimDelay)),
2212
- unilateralRefundDelay: chunkJZWLXNHV_cjs.sequenceToTimelock(Number(params.refundDelay)),
2213
- unilateralRefundWithoutReceiverDelay: chunkJZWLXNHV_cjs.sequenceToTimelock(
2197
+ unilateralClaimDelay: chunkC5Y2R63Z_cjs.sequenceToTimelock(Number(params.claimDelay)),
2198
+ unilateralRefundDelay: chunkC5Y2R63Z_cjs.sequenceToTimelock(Number(params.refundDelay)),
2199
+ unilateralRefundWithoutReceiverDelay: chunkC5Y2R63Z_cjs.sequenceToTimelock(
2214
2200
  Number(params.refundNoReceiverDelay)
2215
2201
  ),
2216
2202
  ...claim && refund && {
@@ -2231,7 +2217,7 @@ var VHTLCV2ContractHandler = {
2231
2217
  * Select spending path based on context.
2232
2218
  *
2233
2219
  * Role is determined from `context.role` or by matching
2234
- * `context.walletDescriptor` (preferred) / `context.walletPubKey`
2220
+ * `context.walletDescriptor`
2235
2221
  * against sender/receiver in contract params.
2236
2222
  */
2237
2223
  selectPath(script, contract, context) {
@@ -2278,7 +2264,7 @@ var VHTLCV2ContractHandler = {
2278
2264
  * Get all possible spending paths (no timelock checks).
2279
2265
  *
2280
2266
  * Role is determined from `context.role` or by matching
2281
- * `context.walletDescriptor` (preferred) / `context.walletPubKey`
2267
+ * `context.walletDescriptor`
2282
2268
  * against sender/receiver in contract params.
2283
2269
  */
2284
2270
  getAllSpendingPaths(script, contract, context) {
@@ -2482,7 +2468,7 @@ var BoardingContractHandler = {
2482
2468
  const coins = await deps.onchainProvider.getCoins(onchainAddress);
2483
2469
  if (coins.length === 0) return [];
2484
2470
  const scriptHex = base.hex.encode(script.pkScript);
2485
- const boardingSeq = chunkJZWLXNHV_cjs.timelockToSequence(deps.boardingTimelock);
2471
+ const boardingSeq = chunkC5Y2R63Z_cjs.timelockToSequence(deps.boardingTimelock);
2486
2472
  return [
2487
2473
  {
2488
2474
  type: "boarding",
@@ -2643,27 +2629,27 @@ function encodeTapscriptSegment(seg, pubkeys, args) {
2643
2629
  if (seg.csv) {
2644
2630
  const timelock = { type: seg.csv.type, value: resolveTimelockValue(seg.csv.value, args) };
2645
2631
  if (seg.asm) {
2646
- return chunkJZWLXNHV_cjs.ConditionCSVMultisigTapscript.encode({
2632
+ return chunkC5Y2R63Z_cjs.ConditionCSVMultisigTapscript.encode({
2647
2633
  conditionScript: resolveAsm(seg.asm, args),
2648
2634
  timelock,
2649
2635
  pubkeys
2650
2636
  });
2651
2637
  }
2652
- return chunkJZWLXNHV_cjs.CSVMultisigTapscript.encode({ timelock, pubkeys });
2638
+ return chunkC5Y2R63Z_cjs.CSVMultisigTapscript.encode({ timelock, pubkeys });
2653
2639
  }
2654
2640
  if (seg.cltv !== void 0) {
2655
- return chunkJZWLXNHV_cjs.CLTVMultisigTapscript.encode({
2641
+ return chunkC5Y2R63Z_cjs.CLTVMultisigTapscript.encode({
2656
2642
  absoluteTimelock: resolveTimelockValue(seg.cltv, args),
2657
2643
  pubkeys
2658
2644
  });
2659
2645
  }
2660
2646
  if (seg.asm) {
2661
- return chunkJZWLXNHV_cjs.ConditionMultisigTapscript.encode({
2647
+ return chunkC5Y2R63Z_cjs.ConditionMultisigTapscript.encode({
2662
2648
  conditionScript: resolveAsm(seg.asm, args),
2663
2649
  pubkeys
2664
2650
  });
2665
2651
  }
2666
- return chunkJZWLXNHV_cjs.MultisigTapscript.encode({ pubkeys });
2652
+ return chunkC5Y2R63Z_cjs.MultisigTapscript.encode({ pubkeys });
2667
2653
  }
2668
2654
  function compileFunctions(program, args, keys) {
2669
2655
  if (program.version !== SUPPORTED_PROGRAM_VERSION) {
@@ -2693,7 +2679,7 @@ function compileFunctions(program, args, keys) {
2693
2679
  return { name: names[i], def, leafScript, arkadeScript, signerKeys: pubkeys };
2694
2680
  });
2695
2681
  }
2696
- var ArkadeProgramScript = class extends chunkJZWLXNHV_cjs.VtxoScript {
2682
+ var ArkadeProgramScript = class extends chunkC5Y2R63Z_cjs.VtxoScript {
2697
2683
  constructor(program, args, keys) {
2698
2684
  const partial = compileFunctions(program, args, keys);
2699
2685
  super(partial.map((p) => p.leafScript));
@@ -2852,22 +2838,12 @@ function deserializeArkadeContractParams(params) {
2852
2838
 
2853
2839
  // src/contracts/handlers/arkade.ts
2854
2840
  function walletKeyFrom(context) {
2855
- const extract = (value) => {
2856
- if (!isDescriptor(value)) return value.toLowerCase();
2857
- try {
2858
- return extractPubKey(value).toLowerCase();
2859
- } catch {
2860
- return void 0;
2861
- }
2862
- };
2863
- if (context.walletDescriptor) {
2864
- const key = extract(context.walletDescriptor);
2865
- if (key) return key;
2866
- }
2867
- if (context.walletPubKey) {
2868
- return extract(context.walletPubKey);
2841
+ if (!context.walletDescriptor) return void 0;
2842
+ try {
2843
+ return extractPubKey(context.walletDescriptor).toLowerCase();
2844
+ } catch {
2845
+ return void 0;
2869
2846
  }
2870
- return void 0;
2871
2847
  }
2872
2848
  function staticWitness(fn, script) {
2873
2849
  const refs = fn.def.tapscript.witness ?? [];
@@ -2906,7 +2882,7 @@ function pathsFor(script, context, opts) {
2906
2882
  continue;
2907
2883
  }
2908
2884
  if (requiresServer) continue;
2909
- const sequence = csv ? Number(chunkJZWLXNHV_cjs.timelockToSequence(csv)) : void 0;
2885
+ const sequence = csv ? Number(chunkC5Y2R63Z_cjs.timelockToSequence(csv)) : void 0;
2910
2886
  if (opts.checkTimelocks && csv && !isCsvSpendable(context, sequence)) continue;
2911
2887
  if (opts.checkTimelocks && cltv !== void 0 && !isCltvSatisfied(context, cltv)) {
2912
2888
  continue;
@@ -3035,5 +3011,5 @@ exports.toASM = toASM;
3035
3011
  exports.toXOnly = toXOnly;
3036
3012
  exports.validateProgram = validateProgram;
3037
3013
  exports.witnessRefToBytes = witnessRefToBytes;
3038
- //# sourceMappingURL=chunk-43FKNLX4.cjs.map
3039
- //# sourceMappingURL=chunk-43FKNLX4.cjs.map
3014
+ //# sourceMappingURL=chunk-F7HJO5GT.cjs.map
3015
+ //# sourceMappingURL=chunk-F7HJO5GT.cjs.map