@arkade-os/sdk 0.4.25 → 0.4.27

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 (222) hide show
  1. package/README.md +5 -25
  2. package/dist/cjs/contracts/contractManager.js +31 -11
  3. package/dist/cjs/contracts/contractWatcher.js +2 -2
  4. package/dist/cjs/identity/hdCapableIdentity.js +18 -0
  5. package/dist/cjs/identity/index.js +3 -1
  6. package/dist/cjs/identity/seedIdentity.js +16 -0
  7. package/dist/cjs/index.js +4 -2
  8. package/dist/cjs/script/address.js +2 -2
  9. package/dist/cjs/wallet/delegator.js +10 -4
  10. package/dist/cjs/wallet/hdDescriptorProvider.js +29 -0
  11. package/dist/cjs/wallet/inputSignerRouter.js +98 -0
  12. package/dist/cjs/wallet/serviceWorker/wallet.js +1 -0
  13. package/dist/cjs/wallet/signingErrors.js +32 -0
  14. package/dist/cjs/wallet/unroll.js +5 -1
  15. package/dist/cjs/wallet/wallet.js +232 -86
  16. package/dist/cjs/wallet/walletReceiveRotator.js +547 -0
  17. package/dist/cjs/worker/messageBus.js +1 -0
  18. package/dist/esm/adapters/asyncStorage.js +1 -1
  19. package/dist/esm/adapters/expo.js +2 -2
  20. package/dist/esm/adapters/fileSystem.js +1 -1
  21. package/dist/esm/adapters/indexedDB.js +1 -1
  22. package/dist/esm/adapters/localStorage.js +1 -1
  23. package/dist/esm/arkfee/index.js +1 -1
  24. package/dist/esm/arknote/index.js +1 -1
  25. package/dist/esm/bip322/index.js +2 -2
  26. package/dist/esm/contracts/arkcontract.js +2 -2
  27. package/dist/esm/contracts/contractManager.js +36 -16
  28. package/dist/esm/contracts/contractWatcher.js +5 -5
  29. package/dist/esm/contracts/handlers/default.js +4 -4
  30. package/dist/esm/contracts/handlers/delegate.js +4 -4
  31. package/dist/esm/contracts/handlers/helpers.js +2 -2
  32. package/dist/esm/contracts/handlers/index.js +8 -8
  33. package/dist/esm/contracts/handlers/vhtlc.js +3 -3
  34. package/dist/esm/contracts/index.js +8 -8
  35. package/dist/esm/extension/asset/assetGroup.js +7 -7
  36. package/dist/esm/extension/asset/assetId.js +2 -2
  37. package/dist/esm/extension/asset/assetInput.js +2 -2
  38. package/dist/esm/extension/asset/assetOutput.js +1 -1
  39. package/dist/esm/extension/asset/assetRef.js +3 -3
  40. package/dist/esm/extension/asset/index.js +8 -8
  41. package/dist/esm/extension/asset/metadata.js +1 -1
  42. package/dist/esm/extension/asset/packet.js +3 -3
  43. package/dist/esm/extension/index.js +4 -4
  44. package/dist/esm/forfeit.js +2 -2
  45. package/dist/esm/identity/hdCapableIdentity.js +17 -1
  46. package/dist/esm/identity/index.js +6 -5
  47. package/dist/esm/identity/seedIdentity.js +18 -2
  48. package/dist/esm/identity/serialize.js +2 -2
  49. package/dist/esm/identity/singleKey.js +1 -1
  50. package/dist/esm/identity/staticDescriptorProvider.js +2 -2
  51. package/dist/esm/index.js +48 -48
  52. package/dist/esm/intent/index.js +3 -3
  53. package/dist/esm/musig2/index.js +3 -3
  54. package/dist/esm/musig2/sign.js +1 -1
  55. package/dist/esm/providers/ark.js +3 -3
  56. package/dist/esm/providers/delegator.js +1 -1
  57. package/dist/esm/providers/electrum.js +2 -2
  58. package/dist/esm/providers/expoArk.js +2 -2
  59. package/dist/esm/providers/expoIndexer.js +3 -3
  60. package/dist/esm/providers/indexer.js +3 -3
  61. package/dist/esm/repositories/inMemory/walletRepository.js +1 -1
  62. package/dist/esm/repositories/index.js +9 -9
  63. package/dist/esm/repositories/indexedDB/contractRepository.js +4 -4
  64. package/dist/esm/repositories/indexedDB/db.js +2 -2
  65. package/dist/esm/repositories/indexedDB/schema.js +1 -1
  66. package/dist/esm/repositories/indexedDB/walletRepository.js +6 -6
  67. package/dist/esm/repositories/migrations/fromStorageAdapter.js +1 -1
  68. package/dist/esm/repositories/migrations/walletRepositoryImpl.js +1 -1
  69. package/dist/esm/repositories/realm/index.js +3 -3
  70. package/dist/esm/repositories/realm/schemas.js +1 -1
  71. package/dist/esm/repositories/realm/walletRepository.js +3 -3
  72. package/dist/esm/repositories/scriptFromAddress.js +1 -1
  73. package/dist/esm/repositories/sqlite/index.js +2 -2
  74. package/dist/esm/repositories/sqlite/walletRepository.js +3 -3
  75. package/dist/esm/script/address.js +3 -3
  76. package/dist/esm/script/base.js +3 -3
  77. package/dist/esm/script/default.js +2 -2
  78. package/dist/esm/script/delegate.js +3 -3
  79. package/dist/esm/script/tapscript.js +1 -1
  80. package/dist/esm/script/vhtlc.js +2 -2
  81. package/dist/esm/storage/indexedDB.js +1 -1
  82. package/dist/esm/tree/signingSession.js +2 -2
  83. package/dist/esm/tree/validation.js +2 -2
  84. package/dist/esm/utils/arkTransaction.js +7 -7
  85. package/dist/esm/utils/transactionHistory.js +1 -1
  86. package/dist/esm/utils/unknownFields.js +1 -1
  87. package/dist/esm/wallet/asset-manager.js +5 -5
  88. package/dist/esm/wallet/asset.js +1 -1
  89. package/dist/esm/wallet/batch.js +2 -2
  90. package/dist/esm/wallet/delegator.js +16 -10
  91. package/dist/esm/wallet/expo/background.js +5 -5
  92. package/dist/esm/wallet/expo/index.js +2 -2
  93. package/dist/esm/wallet/expo/wallet.js +8 -8
  94. package/dist/esm/wallet/hdDescriptorProvider.js +31 -2
  95. package/dist/esm/wallet/inputSignerRouter.js +94 -0
  96. package/dist/esm/wallet/onchain.js +7 -7
  97. package/dist/esm/wallet/ramps.js +3 -3
  98. package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +6 -6
  99. package/dist/esm/wallet/serviceWorker/wallet.js +8 -7
  100. package/dist/esm/wallet/signingErrors.js +27 -0
  101. package/dist/esm/wallet/unroll.js +12 -8
  102. package/dist/esm/wallet/utils.js +2 -2
  103. package/dist/esm/wallet/validation.js +2 -2
  104. package/dist/esm/wallet/vtxo-manager.js +9 -9
  105. package/dist/esm/wallet/wallet.js +262 -117
  106. package/dist/esm/wallet/walletReceiveRotator.js +540 -0
  107. package/dist/esm/worker/expo/index.js +4 -4
  108. package/dist/esm/worker/expo/processors/contractPollProcessor.js +1 -1
  109. package/dist/esm/worker/expo/processors/index.js +1 -1
  110. package/dist/esm/worker/expo/taskRunner.js +1 -1
  111. package/dist/esm/worker/messageBus.js +7 -6
  112. package/dist/types/adapters/asyncStorage.d.ts +2 -2
  113. package/dist/types/adapters/expo.d.ts +4 -4
  114. package/dist/types/adapters/fileSystem.d.ts +2 -2
  115. package/dist/types/adapters/indexedDB.d.ts +2 -2
  116. package/dist/types/adapters/localStorage.d.ts +2 -2
  117. package/dist/types/arkfee/index.d.ts +2 -2
  118. package/dist/types/arknote/index.d.ts +2 -2
  119. package/dist/types/bip322/index.d.ts +1 -1
  120. package/dist/types/contracts/arkcontract.d.ts +1 -1
  121. package/dist/types/contracts/contractManager.d.ts +39 -9
  122. package/dist/types/contracts/contractWatcher.d.ts +3 -3
  123. package/dist/types/contracts/handlers/default.d.ts +3 -3
  124. package/dist/types/contracts/handlers/delegate.d.ts +3 -3
  125. package/dist/types/contracts/handlers/helpers.d.ts +1 -1
  126. package/dist/types/contracts/handlers/index.d.ts +7 -7
  127. package/dist/types/contracts/handlers/registry.d.ts +1 -1
  128. package/dist/types/contracts/handlers/vhtlc.d.ts +3 -3
  129. package/dist/types/contracts/index.d.ts +14 -14
  130. package/dist/types/contracts/types.d.ts +21 -4
  131. package/dist/types/contracts/vtxoOwnership.d.ts +3 -3
  132. package/dist/types/extension/asset/assetGroup.d.ts +6 -6
  133. package/dist/types/extension/asset/assetId.d.ts +1 -1
  134. package/dist/types/extension/asset/assetInput.d.ts +2 -2
  135. package/dist/types/extension/asset/assetOutput.d.ts +1 -1
  136. package/dist/types/extension/asset/assetRef.d.ts +3 -3
  137. package/dist/types/extension/asset/index.d.ts +8 -8
  138. package/dist/types/extension/asset/metadata.d.ts +1 -1
  139. package/dist/types/extension/asset/packet.d.ts +2 -2
  140. package/dist/types/extension/index.d.ts +6 -6
  141. package/dist/types/forfeit.d.ts +1 -1
  142. package/dist/types/identity/descriptorProvider.d.ts +8 -1
  143. package/dist/types/identity/hdCapableIdentity.d.ts +33 -6
  144. package/dist/types/identity/index.d.ts +12 -11
  145. package/dist/types/identity/seedIdentity.d.ts +21 -5
  146. package/dist/types/identity/serialize.d.ts +1 -1
  147. package/dist/types/identity/singleKey.d.ts +3 -3
  148. package/dist/types/identity/staticDescriptorProvider.d.ts +3 -3
  149. package/dist/types/index.d.ts +59 -59
  150. package/dist/types/intent/index.d.ts +2 -2
  151. package/dist/types/musig2/index.d.ts +4 -4
  152. package/dist/types/providers/ark.d.ts +5 -5
  153. package/dist/types/providers/delegator.d.ts +2 -2
  154. package/dist/types/providers/electrum.d.ts +5 -5
  155. package/dist/types/providers/expoArk.d.ts +1 -1
  156. package/dist/types/providers/expoIndexer.d.ts +1 -1
  157. package/dist/types/providers/indexer.d.ts +1 -1
  158. package/dist/types/providers/onchain.d.ts +2 -2
  159. package/dist/types/repositories/contractRepository.d.ts +1 -1
  160. package/dist/types/repositories/inMemory/contractRepository.d.ts +2 -2
  161. package/dist/types/repositories/inMemory/walletRepository.d.ts +2 -2
  162. package/dist/types/repositories/index.d.ts +9 -9
  163. package/dist/types/repositories/indexedDB/contractRepository.d.ts +2 -2
  164. package/dist/types/repositories/indexedDB/db.d.ts +3 -3
  165. package/dist/types/repositories/indexedDB/walletRepository.d.ts +2 -2
  166. package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +3 -3
  167. package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +2 -2
  168. package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +3 -3
  169. package/dist/types/repositories/realm/contractRepository.d.ts +3 -3
  170. package/dist/types/repositories/realm/index.d.ts +4 -4
  171. package/dist/types/repositories/realm/walletRepository.d.ts +3 -3
  172. package/dist/types/repositories/serialization.d.ts +11 -11
  173. package/dist/types/repositories/sqlite/contractRepository.d.ts +3 -3
  174. package/dist/types/repositories/sqlite/index.d.ts +3 -3
  175. package/dist/types/repositories/sqlite/walletRepository.d.ts +3 -3
  176. package/dist/types/repositories/walletRepository.d.ts +1 -1
  177. package/dist/types/script/address.d.ts +2 -2
  178. package/dist/types/script/base.d.ts +2 -2
  179. package/dist/types/script/default.d.ts +2 -2
  180. package/dist/types/script/delegate.d.ts +3 -3
  181. package/dist/types/script/vhtlc.d.ts +2 -2
  182. package/dist/types/storage/asyncStorage.d.ts +1 -1
  183. package/dist/types/storage/fileSystem.d.ts +1 -1
  184. package/dist/types/storage/inMemory.d.ts +1 -1
  185. package/dist/types/storage/indexedDB.d.ts +1 -1
  186. package/dist/types/storage/localStorage.d.ts +1 -1
  187. package/dist/types/tree/signingSession.d.ts +2 -2
  188. package/dist/types/tree/validation.d.ts +1 -1
  189. package/dist/types/utils/arkTransaction.d.ts +5 -5
  190. package/dist/types/utils/syncCursors.d.ts +1 -1
  191. package/dist/types/utils/timelock.d.ts +1 -1
  192. package/dist/types/utils/transaction.d.ts +2 -2
  193. package/dist/types/utils/transactionHistory.d.ts +1 -1
  194. package/dist/types/utils/txSizeEstimator.d.ts +1 -1
  195. package/dist/types/wallet/asset-manager.d.ts +3 -3
  196. package/dist/types/wallet/asset.d.ts +2 -2
  197. package/dist/types/wallet/batch.d.ts +2 -2
  198. package/dist/types/wallet/delegator.d.ts +5 -5
  199. package/dist/types/wallet/expo/background.d.ts +4 -4
  200. package/dist/types/wallet/expo/index.d.ts +4 -4
  201. package/dist/types/wallet/expo/wallet.d.ts +8 -8
  202. package/dist/types/wallet/hdDescriptorProvider.d.ts +26 -5
  203. package/dist/types/wallet/index.d.ts +63 -26
  204. package/dist/types/wallet/inputSignerRouter.d.ts +35 -0
  205. package/dist/types/wallet/onchain.d.ts +6 -6
  206. package/dist/types/wallet/ramps.d.ts +2 -2
  207. package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +7 -7
  208. package/dist/types/wallet/serviceWorker/wallet.d.ts +20 -10
  209. package/dist/types/wallet/signingErrors.d.ts +19 -0
  210. package/dist/types/wallet/unroll.d.ts +6 -6
  211. package/dist/types/wallet/utils.d.ts +5 -5
  212. package/dist/types/wallet/validation.d.ts +3 -3
  213. package/dist/types/wallet/vtxo-manager.d.ts +2 -2
  214. package/dist/types/wallet/wallet.d.ts +71 -22
  215. package/dist/types/wallet/walletReceiveRotator.d.ts +306 -0
  216. package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +1 -1
  217. package/dist/types/worker/expo/index.d.ts +7 -7
  218. package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +1 -1
  219. package/dist/types/worker/expo/processors/index.d.ts +1 -1
  220. package/dist/types/worker/expo/taskRunner.d.ts +7 -7
  221. package/dist/types/worker/messageBus.d.ts +7 -6
  222. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
1
  import { hex } from "@scure/base";
2
- import { eventSourceIterator, isEventSourceError } from './utils.js';
3
- import { maybeArkError } from './errors.js';
4
- import { Intent } from '../intent/index.js';
2
+ import { eventSourceIterator, isEventSourceError } from "./utils.js";
3
+ import { maybeArkError } from "./errors.js";
4
+ import { Intent } from "../intent/index.js";
5
5
  export var SettlementEventType;
6
6
  (function (SettlementEventType) {
7
7
  SettlementEventType["BatchStarted"] = "batch_started";
@@ -1,4 +1,4 @@
1
- import { Intent } from '../intent/index.js';
1
+ import { Intent } from "../intent/index.js";
2
2
  /**
3
3
  * REST-based delegation provider implementation.
4
4
  * @example
@@ -92,8 +92,8 @@ function parseBlockHeader(headerHex) {
92
92
  * @example
93
93
  * ```typescript
94
94
  * import { ElectrumWS } from "ws-electrumx-client";
95
- * import { WsElectrumChainSource } from './providers/electrum.js';
96
- * import { networks } from './networks.js';
95
+ * import { WsElectrumChainSource } from "./providers/electrum.js";
96
+ * import { networks } from "./networks.js";
97
97
  *
98
98
  * const ws = new ElectrumWS("wss://electrum.blockstream.info:50004");
99
99
  * const chain = new WsElectrumChainSource(ws, networks.bitcoin);
@@ -1,5 +1,5 @@
1
- import { RestArkProvider, isFetchTimeoutError, } from './ark.js';
2
- import { getExpoFetch, sseStreamIterator } from './expoUtils.js';
1
+ import { RestArkProvider, isFetchTimeoutError, } from "./ark.js";
2
+ import { getExpoFetch, sseStreamIterator } from "./expoUtils.js";
3
3
  /**
4
4
  * Expo-compatible Arkade provider implementation using expo/fetch for SSE support.
5
5
  * This provider works specifically in React Native/Expo environments where
@@ -1,6 +1,6 @@
1
- import { RestIndexerProvider } from './indexer.js';
2
- import { isFetchTimeoutError } from './ark.js';
3
- import { getExpoFetch, sseStreamIterator } from './expoUtils.js';
1
+ import { RestIndexerProvider } from "./indexer.js";
2
+ import { isFetchTimeoutError } from "./ark.js";
3
+ import { getExpoFetch, sseStreamIterator } from "./expoUtils.js";
4
4
  // Helper function to convert Vtxo to VirtualCoin (same as in indexer.ts)
5
5
  function convertVtxo(vtxo) {
6
6
  return {
@@ -1,7 +1,7 @@
1
1
  import { hex } from "@scure/base";
2
- import { isFetchTimeoutError } from './ark.js';
3
- import { eventSourceIterator, isEventSourceError } from './utils.js';
4
- import { MetadataList } from '../extension/asset/index.js';
2
+ import { isFetchTimeoutError } from "./ark.js";
3
+ import { eventSourceIterator, isEventSourceError } from "./utils.js";
4
+ import { MetadataList } from "../extension/asset/index.js";
5
5
  export var IndexerTxType;
6
6
  (function (IndexerTxType) {
7
7
  IndexerTxType[IndexerTxType["INDEXER_TX_TYPE_UNSPECIFIED"] = 0] = "INDEXER_TX_TYPE_UNSPECIFIED";
@@ -1,4 +1,4 @@
1
- import { isVtxoForScript } from '../../contracts/vtxoOwnership.js';
1
+ import { isVtxoForScript } from "../../contracts/vtxoOwnership.js";
2
2
  /**
3
3
  * In-memory implementation of WalletRepository.
4
4
  * Data is ephemeral and scoped to the instance.
@@ -1,10 +1,10 @@
1
- export * from './walletRepository.js';
2
- export * from './contractRepository.js';
3
- export * from './inMemory/walletRepository.js';
4
- export * from './inMemory/contractRepository.js';
5
- export * from './indexedDB/contractRepository.js';
6
- export * from './indexedDB/walletRepository.js';
7
- export { MIGRATION_KEY, migrateWalletRepository, requiresMigration, getMigrationStatus, rollbackMigration, } from './migrations/fromStorageAdapter.js';
1
+ export * from "./walletRepository.js";
2
+ export * from "./contractRepository.js";
3
+ export * from "./inMemory/walletRepository.js";
4
+ export * from "./inMemory/contractRepository.js";
5
+ export * from "./indexedDB/contractRepository.js";
6
+ export * from "./indexedDB/walletRepository.js";
7
+ export { MIGRATION_KEY, migrateWalletRepository, requiresMigration, getMigrationStatus, rollbackMigration, } from "./migrations/fromStorageAdapter.js";
8
8
  // Deprecated
9
- export { WalletRepositoryImpl } from './migrations/walletRepositoryImpl.js';
10
- export { ContractRepositoryImpl } from './migrations/contractRepositoryImpl.js';
9
+ export { WalletRepositoryImpl } from "./migrations/walletRepositoryImpl.js";
10
+ export { ContractRepositoryImpl } from "./migrations/contractRepositoryImpl.js";
@@ -1,7 +1,7 @@
1
- import { DB_VERSION, STORE_CONTRACTS } from './db.js';
2
- import { closeDatabase, openDatabase } from './manager.js';
3
- import { initDatabase } from './schema.js';
4
- import { DEFAULT_DB_NAME } from '../../worker/browser/utils.js';
1
+ import { DB_VERSION, STORE_CONTRACTS } from "./db.js";
2
+ import { closeDatabase, openDatabase } from "./manager.js";
3
+ import { initDatabase } from "./schema.js";
4
+ import { DEFAULT_DB_NAME } from "../../worker/browser/utils.js";
5
5
  /**
6
6
  * IndexedDB-based implementation of ContractRepository.
7
7
  *
@@ -1,4 +1,4 @@
1
- import { DB_VERSION, STORE_CONTRACTS, LEGACY_STORE_CONTRACT_COLLECTIONS, STORE_TRANSACTIONS, STORE_UTXOS, STORE_VTXOS, STORE_WALLET_STATE, } from './schema.js';
1
+ import { DB_VERSION, STORE_CONTRACTS, LEGACY_STORE_CONTRACT_COLLECTIONS, STORE_TRANSACTIONS, STORE_UTXOS, STORE_VTXOS, STORE_WALLET_STATE, } from "./schema.js";
2
2
  export { STORE_VTXOS, STORE_UTXOS, STORE_TRANSACTIONS, STORE_WALLET_STATE, STORE_CONTRACTS, LEGACY_STORE_CONTRACT_COLLECTIONS, DB_VERSION, };
3
3
  // Serialization helpers (re-exported from shared module)
4
- export { serializeTapLeaf, serializeVtxo, serializeUtxo, deserializeTapLeaf, deserializeVtxo, deserializeUtxo, } from '../serialization.js';
4
+ export { serializeTapLeaf, serializeVtxo, serializeUtxo, deserializeTapLeaf, deserializeVtxo, deserializeUtxo, } from "../serialization.js";
@@ -1,4 +1,4 @@
1
- import { scriptFromArkAddress } from '../scriptFromAddress.js';
1
+ import { scriptFromArkAddress } from "../scriptFromAddress.js";
2
2
  // Store names introduced in V2, they are all new to the migration
3
3
  export const STORE_VTXOS = "vtxos";
4
4
  export const STORE_UTXOS = "utxos";
@@ -1,9 +1,9 @@
1
- import { STORE_VTXOS, STORE_UTXOS, STORE_TRANSACTIONS, STORE_WALLET_STATE, serializeVtxo, serializeUtxo, deserializeVtxo, deserializeUtxo, DB_VERSION, } from './db.js';
2
- import { closeDatabase, openDatabase } from './manager.js';
3
- import { initDatabase } from './schema.js';
4
- import { scriptFromArkAddress } from '../scriptFromAddress.js';
5
- import { DEFAULT_DB_NAME } from '../../worker/browser/utils.js';
6
- import { isVtxoForScript } from '../../contracts/vtxoOwnership.js';
1
+ import { STORE_VTXOS, STORE_UTXOS, STORE_TRANSACTIONS, STORE_WALLET_STATE, serializeVtxo, serializeUtxo, deserializeVtxo, deserializeUtxo, DB_VERSION, } from "./db.js";
2
+ import { closeDatabase, openDatabase } from "./manager.js";
3
+ import { initDatabase } from "./schema.js";
4
+ import { scriptFromArkAddress } from "../scriptFromAddress.js";
5
+ import { DEFAULT_DB_NAME } from "../../worker/browser/utils.js";
6
+ import { isVtxoForScript } from "../../contracts/vtxoOwnership.js";
7
7
  /**
8
8
  * IndexedDB-based implementation of WalletRepository.
9
9
  */
@@ -1,4 +1,4 @@
1
- import { WalletRepositoryImpl } from './walletRepositoryImpl.js';
1
+ import { WalletRepositoryImpl } from "./walletRepositoryImpl.js";
2
2
  export const MIGRATION_KEY = (repoType) => `migration-from-storage-adapter-${repoType}`;
3
3
  export async function getMigrationStatus(repoType, storageAdapter) {
4
4
  try {
@@ -1,6 +1,6 @@
1
1
  import { hex } from "@scure/base";
2
2
  import { TaprootControlBlock } from "@scure/btc-signer";
3
- import { serializeAssets, deserializeAssets, serializeTransaction, deserializeTransaction, } from '../serialization.js';
3
+ import { serializeAssets, deserializeAssets, serializeTransaction, deserializeTransaction, } from "../serialization.js";
4
4
  const getVtxosStorageKey = (address) => `vtxos:${address}`;
5
5
  const getUtxosStorageKey = (address) => `utxos:${address}`;
6
6
  const getTransactionsStorageKey = (address) => `tx:${address}`;
@@ -1,3 +1,3 @@
1
- export { RealmWalletRepository } from './walletRepository.js';
2
- export { RealmContractRepository } from './contractRepository.js';
3
- export { ArkRealmSchemas, ARK_REALM_SCHEMA_VERSION, runArkRealmMigrations, } from './schemas.js';
1
+ export { RealmWalletRepository } from "./walletRepository.js";
2
+ export { RealmContractRepository } from "./contractRepository.js";
3
+ export { ArkRealmSchemas, ARK_REALM_SCHEMA_VERSION, runArkRealmMigrations, } from "./schemas.js";
@@ -8,7 +8,7 @@
8
8
  * schemas are defined as plain JS objects conforming to Realm's
9
9
  * ObjectSchema shape.
10
10
  */
11
- import { scriptFromArkAddress } from '../scriptFromAddress.js';
11
+ import { scriptFromArkAddress } from "../scriptFromAddress.js";
12
12
  export const ArkVtxoSchema = {
13
13
  name: "ArkVtxo",
14
14
  primaryKey: "pk",
@@ -1,6 +1,6 @@
1
- import { serializeVtxo, serializeUtxo, deserializeVtxo, deserializeUtxo, serializeAssets, deserializeAssets, } from '../serialization.js';
2
- import { scriptFromArkAddress } from '../scriptFromAddress.js';
3
- import { isVtxoForScript } from '../../contracts/vtxoOwnership.js';
1
+ import { serializeVtxo, serializeUtxo, deserializeVtxo, deserializeUtxo, serializeAssets, deserializeAssets, } from "../serialization.js";
2
+ import { scriptFromArkAddress } from "../scriptFromAddress.js";
3
+ import { isVtxoForScript } from "../../contracts/vtxoOwnership.js";
4
4
  /**
5
5
  * Realm-based implementation of WalletRepository.
6
6
  *
@@ -1,5 +1,5 @@
1
1
  import { hex } from "@scure/base";
2
- import { ArkAddress } from '../index.js';
2
+ import { ArkAddress } from "../index.js";
3
3
  /**
4
4
  * Compute the hex-encoded `scriptPubKey` locking a VTXO from its owning Ark
5
5
  * address. Used by repository-layer migrations to backfill `script` on legacy
@@ -1,2 +1,2 @@
1
- export { SQLiteWalletRepository } from './walletRepository.js';
2
- export { SQLiteContractRepository } from './contractRepository.js';
1
+ export { SQLiteWalletRepository } from "./walletRepository.js";
2
+ export { SQLiteContractRepository } from "./contractRepository.js";
@@ -1,6 +1,6 @@
1
- import { serializeVtxo, serializeUtxo, deserializeVtxo, deserializeUtxo, serializeAssets, deserializeAssets, } from '../serialization.js';
2
- import { scriptFromArkAddress } from '../scriptFromAddress.js';
3
- import { isVtxoForScript } from '../../contracts/vtxoOwnership.js';
1
+ import { serializeVtxo, serializeUtxo, deserializeVtxo, deserializeUtxo, serializeAssets, deserializeAssets, } from "../serialization.js";
2
+ import { scriptFromArkAddress } from "../scriptFromAddress.js";
3
+ import { isVtxoForScript } from "../../contracts/vtxoOwnership.js";
4
4
  /**
5
5
  * SQLite-based implementation of WalletRepository.
6
6
  *
@@ -1,6 +1,6 @@
1
1
  import { bech32m } from "@scure/base";
2
2
  import { Script } from "@scure/btc-signer/script.js";
3
- import { DEFAULT_ARKADE_HRP } from '../wallet/index.js';
3
+ import { DEFAULT_ARKADE_HRP } from "../wallet/index.js";
4
4
  /**
5
5
  * ArkAddress allows creating and decoding bech32m-encoded Arkade addresses.
6
6
  *
@@ -32,10 +32,10 @@ import { DEFAULT_ARKADE_HRP } from '../wallet/index.js';
32
32
  */
33
33
  export class ArkAddress {
34
34
  /**
35
- * Create an Arkade address from its server key, vtxo taproot public key, and prefix.
35
+ * Create an Arkade address from its server public key, Taproot output key, and prefix.
36
36
  *
37
37
  * @param serverPubKey - 32-byte Arkade server public key
38
- * @param vtxoTaprootKey - 32-byte tweaked vtxo taproot public key
38
+ * @param vtxoTaprootKey - 32-byte Taproot output key (a.k.a. tweaked public key)
39
39
  * @param hrp - Bech32 human-readable prefix
40
40
  * @param version - Address version byte
41
41
  * @defaultValue `version = 0`
@@ -2,9 +2,9 @@ import { Script, Address, p2tr, taprootListToTree, TAPROOT_UNSPENDABLE_KEY, } fr
2
2
  import { TAP_LEAF_VERSION } from "@scure/btc-signer/payment.js";
3
3
  import { PSBTOutput } from "@scure/btc-signer/psbt.js";
4
4
  import { hex } from "@scure/base";
5
- import { ArkAddress } from './address.js';
6
- import { timelockToSequence } from '../utils/timelock.js';
7
- import { CLTVMultisigTapscript, ConditionCSVMultisigTapscript, CSVMultisigTapscript, } from './tapscript.js';
5
+ import { ArkAddress } from "./address.js";
6
+ import { timelockToSequence } from "../utils/timelock.js";
7
+ import { CLTVMultisigTapscript, ConditionCSVMultisigTapscript, CSVMultisigTapscript, } from "./tapscript.js";
8
8
  export const TapTreeCoder = PSBTOutput.tapTree[2];
9
9
  export function scriptFromTapLeafScript(leaf) {
10
10
  return leaf[1].subarray(0, leaf[1].length - 1); // remove the version byte
@@ -1,5 +1,5 @@
1
- import { VtxoScript } from './base.js';
2
- import { CSVMultisigTapscript, MultisigTapscript, } from './tapscript.js';
1
+ import { VtxoScript } from "./base.js";
2
+ import { CSVMultisigTapscript, MultisigTapscript, } from "./tapscript.js";
3
3
  import { hex } from "@scure/base";
4
4
  /**
5
5
  * DefaultVtxo is the default implementation of a VtxoScript.
@@ -1,6 +1,6 @@
1
- import { DefaultVtxo } from './default.js';
2
- import { MultisigTapscript } from './tapscript.js';
3
- import { VtxoScript } from './base.js';
1
+ import { DefaultVtxo } from "./default.js";
2
+ import { MultisigTapscript } from "./tapscript.js";
3
+ import { VtxoScript } from "./base.js";
4
4
  import { hex } from "@scure/base";
5
5
  /**
6
6
  * DelegateVtxo extends DefaultVtxo with an extra delegator path
@@ -1,6 +1,6 @@
1
1
  import { Script, ScriptNum, p2tr_ms } from "@scure/btc-signer";
2
2
  import { hex } from "@scure/base";
3
- import { sequenceToTimelock, timelockToSequence } from '../utils/timelock.js';
3
+ import { sequenceToTimelock, timelockToSequence } from "../utils/timelock.js";
4
4
  const MinimalScriptNum = ScriptNum(undefined, true);
5
5
  export var TapscriptType;
6
6
  (function (TapscriptType) {
@@ -1,7 +1,7 @@
1
1
  import { Script } from "@scure/btc-signer";
2
- import { CLTVMultisigTapscript, ConditionCSVMultisigTapscript, ConditionMultisigTapscript, CSVMultisigTapscript, MultisigTapscript, } from './tapscript.js';
2
+ import { CLTVMultisigTapscript, ConditionCSVMultisigTapscript, ConditionMultisigTapscript, CSVMultisigTapscript, MultisigTapscript, } from "./tapscript.js";
3
3
  import { hex } from "@scure/base";
4
- import { VtxoScript } from './base.js';
4
+ import { VtxoScript } from "./base.js";
5
5
  /** Virtual Hash Time Lock Contract (VHTLC) namespace. */
6
6
  export var VHTLC;
7
7
  (function (VHTLC) {
@@ -1,4 +1,4 @@
1
- import { DB_VERSION } from '../repositories/indexedDB/db.js';
1
+ import { DB_VERSION } from "../repositories/indexedDB/db.js";
2
2
  /**
3
3
  * @deprecated Use repository implementations via `StorageConfig` instead.
4
4
  */
@@ -1,10 +1,10 @@
1
- import * as musig2 from '../musig2/index.js';
1
+ import * as musig2 from "../musig2/index.js";
2
2
  import { Script } from "@scure/btc-signer/script.js";
3
3
  import { SigHash } from "@scure/btc-signer/transaction.js";
4
4
  import { hex } from "@scure/base";
5
5
  import { schnorr, secp256k1 } from "@noble/curves/secp256k1.js";
6
6
  import { randomPrivateKeyBytes } from "@scure/btc-signer/utils.js";
7
- import { CosignerPublicKey, getArkPsbtFields } from '../utils/unknownFields.js';
7
+ import { CosignerPublicKey, getArkPsbtFields } from "../utils/unknownFields.js";
8
8
  export const ErrMissingVtxoGraph = new Error("missing vtxo graph");
9
9
  export const ErrMissingAggregateKey = new Error("missing aggregate key");
10
10
  export class TreeSignerSession {
@@ -1,8 +1,8 @@
1
1
  import { hex } from "@scure/base";
2
2
  import { Transaction } from "@scure/btc-signer/transaction.js";
3
3
  import { base64 } from "@scure/base";
4
- import { aggregateKeys } from '../musig2/index.js';
5
- import { CosignerPublicKey, getArkPsbtFields } from '../utils/unknownFields.js';
4
+ import { aggregateKeys } from "../musig2/index.js";
5
+ import { CosignerPublicKey, getArkPsbtFields } from "../utils/unknownFields.js";
6
6
  export const ErrInvalidSettlementTx = (tx) => new Error(`invalid settlement transaction: ${tx}`);
7
7
  export const ErrInvalidSettlementTxOutputs = new Error("invalid settlement transaction outputs");
8
8
  export const ErrEmptyTree = new Error("empty tree");
@@ -2,13 +2,13 @@ import { schnorr } from "@noble/curves/secp256k1.js";
2
2
  import { hex } from "@scure/base";
3
3
  import { DEFAULT_SEQUENCE, Script, SigHash } from "@scure/btc-signer";
4
4
  import { tapLeafHash } from "@scure/btc-signer/payment.js";
5
- import { CLTVMultisigTapscript, decodeTapscript, } from '../script/tapscript.js';
6
- import { scriptFromTapLeafScript, VtxoScript, } from '../script/base.js';
7
- import { P2A } from './anchor.js';
8
- import { setArkPsbtField, VtxoTaprootTree } from './unknownFields.js';
9
- import { Transaction } from './transaction.js';
10
- import { ArkAddress } from '../script/address.js';
11
- import { Extension } from '../extension/index.js';
5
+ import { CLTVMultisigTapscript, decodeTapscript, } from "../script/tapscript.js";
6
+ import { scriptFromTapLeafScript, VtxoScript, } from "../script/base.js";
7
+ import { P2A } from "./anchor.js";
8
+ import { setArkPsbtField, VtxoTaprootTree } from "./unknownFields.js";
9
+ import { Transaction } from "./transaction.js";
10
+ import { ArkAddress } from "../script/address.js";
11
+ import { Extension } from "../extension/index.js";
12
12
  /**
13
13
  * Builds an offchain transaction with checkpoint transactions.
14
14
  *
@@ -1,4 +1,4 @@
1
- import { TxType } from '../wallet/index.js';
1
+ import { TxType } from "../wallet/index.js";
2
2
  const txKey = {
3
3
  commitmentTxid: "",
4
4
  boardingTxid: "",
@@ -1,6 +1,6 @@
1
1
  import { RawWitness, ScriptNum } from "@scure/btc-signer";
2
2
  import { hex } from "@scure/base";
3
- import { sequenceToTimelock } from './timelock.js';
3
+ import { sequenceToTimelock } from "./timelock.js";
4
4
  /**
5
5
  * ArkPsbtFieldKey are the available key names for the Arkade PSBT custom fields.
6
6
  */
@@ -1,8 +1,8 @@
1
- import { AssetGroup, AssetId, AssetInput, AssetOutput, AssetRef, Metadata, Packet, } from '../extension/asset/index.js';
2
- import { ArkAddress } from '../script/address.js';
3
- import { selectedCoinsToAssetInputs, selectCoinsWithAsset } from './asset.js';
4
- import { Extension } from '../extension/index.js';
5
- import { selectVirtualCoins } from './wallet.js';
1
+ import { AssetGroup, AssetId, AssetInput, AssetOutput, AssetRef, Metadata, Packet, } from "../extension/asset/index.js";
2
+ import { ArkAddress } from "../script/address.js";
3
+ import { selectedCoinsToAssetInputs, selectCoinsWithAsset } from "./asset.js";
4
+ import { Extension } from "../extension/index.js";
5
+ import { selectVirtualCoins } from "./wallet.js";
6
6
  export class ReadonlyAssetManager {
7
7
  constructor(indexer) {
8
8
  this.indexer = indexer;
@@ -1,4 +1,4 @@
1
- import { AssetGroup, AssetId, AssetInput, AssetOutput, Packet, } from '../extension/asset/index.js';
1
+ import { AssetGroup, AssetId, AssetInput, AssetOutput, Packet, } from "../extension/asset/index.js";
2
2
  /**
3
3
  * Creates an asset packet from asset inputs and receivers.
4
4
  * Groups inputs and outputs by asset ID and creates the Packet object
@@ -1,5 +1,5 @@
1
- import { SettlementEventType } from '../providers/ark.js';
2
- import { TxTree } from '../tree/txTree.js';
1
+ import { SettlementEventType } from "../providers/ark.js";
2
+ import { TxTree } from "../tree/txTree.js";
3
3
  import { hex } from "@scure/base";
4
4
  /**
5
5
  * Batch namespace provides utilities for joining and processing batch session.
@@ -1,12 +1,12 @@
1
- import { ArkAddress, decodeTapscript, Estimator, Intent, isRecoverable, MultisigTapscript, VtxoScript, } from '../index.js';
1
+ import { ArkAddress, decodeTapscript, Estimator, Intent, isRecoverable, MultisigTapscript, VtxoScript, } from "../index.js";
2
2
  import { base64, hex } from "@scure/base";
3
- import { scriptFromTapLeafScript } from '../script/base.js';
4
- import { buildForfeitTxWithOutput } from '../forfeit.js';
3
+ import { scriptFromTapLeafScript } from "../script/base.js";
4
+ import { buildForfeitTxWithOutput } from "../forfeit.js";
5
5
  import { Address, OutScript, SigHash } from "@scure/btc-signer";
6
6
  import { equalBytes } from "@scure/btc-signer/utils.js";
7
- import { getNetwork } from '../networks.js';
8
- import { createAssetPacket } from './asset.js';
9
- import { Extension } from '../extension/index.js';
7
+ import { getNetwork } from "../networks.js";
8
+ import { createAssetPacket } from "./asset.js";
9
+ import { Extension } from "../extension/index.js";
10
10
  export class DelegatorManagerImpl {
11
11
  /** Create a delegator manager from the configured provider, Arkade info source, and wallet identity. */
12
12
  constructor(delegatorProvider, arkInfoProvider, identity) {
@@ -25,10 +25,11 @@ export class DelegatorManagerImpl {
25
25
  // fetch server and delegator info once, shared across all groups
26
26
  const arkInfo = await this.arkInfoProvider.getInfo();
27
27
  const delegateInfo = await this.delegatorProvider.getDelegateInfo();
28
- // keep only vtxos that can be signed by the delegate
29
- const eligible = vtxos
30
- .filter((v) => findDelegateTapLeaf(v, delegateInfo.pubkey) !== undefined)
31
- .map((v) => v);
28
+ // keep only vtxos that can be signed by the delegate. The guard
29
+ // narrows ContractVtxo (with optional taproot fields) to the
30
+ // ExtendedVirtualCoin shape required by makeDelegateForfeitTx.
31
+ const eligible = vtxos.filter((v) => isAnnotated(v) &&
32
+ findDelegateTapLeaf(v, delegateInfo.pubkey) !== undefined);
32
33
  if (eligible.length === 0) {
33
34
  return { delegated: [], failed: [] };
34
35
  }
@@ -295,3 +296,8 @@ function findDelegateTapLeaf(vtxo, delegatePubkey) {
295
296
  return arkTapscript.params.pubkeys.map(hex.encode).includes(pk);
296
297
  });
297
298
  }
299
+ function isAnnotated(v) {
300
+ return (v.tapTree !== undefined &&
301
+ v.forfeitTapLeafScript !== undefined &&
302
+ v.intentTapLeafScript !== undefined);
303
+ }
@@ -1,8 +1,8 @@
1
- import { runTasks, createTaskDependencies } from '../../worker/expo/taskRunner.js';
2
- import { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from '../../worker/expo/processors/index.js';
3
- import { ExpoArkProvider } from '../../providers/expoArk.js';
4
- import { ExpoIndexerProvider } from '../../providers/expoIndexer.js';
5
- import { getRandomId } from '../utils.js';
1
+ import { runTasks, createTaskDependencies } from "../../worker/expo/taskRunner.js";
2
+ import { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from "../../worker/expo/processors/index.js";
3
+ import { ExpoArkProvider } from "../../providers/expoArk.js";
4
+ import { ExpoIndexerProvider } from "../../providers/expoIndexer.js";
5
+ import { getRandomId } from "../utils.js";
6
6
  function requireTaskManager() {
7
7
  try {
8
8
  return require("expo-task-manager");
@@ -1,2 +1,2 @@
1
- export { ExpoWallet } from './wallet.js';
2
- export { defineExpoBackgroundTask, registerExpoBackgroundTask, unregisterExpoBackgroundTask, } from './background.js';
1
+ export { ExpoWallet } from "./wallet.js";
2
+ export { defineExpoBackgroundTask, registerExpoBackgroundTask, unregisterExpoBackgroundTask, } from "./background.js";
@@ -1,10 +1,10 @@
1
1
  import { hex } from "@scure/base";
2
- import { Wallet } from '../wallet.js';
3
- import { RestArkProvider } from '../../providers/ark.js';
4
- import { runTasks } from '../../worker/expo/taskRunner.js';
5
- import { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from '../../worker/expo/processors/index.js';
6
- import { extendVirtualCoinForContract, getRandomId } from '../utils.js';
7
- import { DefaultVtxo } from '../../script/default.js';
2
+ import { Wallet } from "../wallet.js";
3
+ import { RestArkProvider } from "../../providers/ark.js";
4
+ import { runTasks } from "../../worker/expo/taskRunner.js";
5
+ import { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from "../../worker/expo/processors/index.js";
6
+ import { extendVirtualCoinForContract, getRandomId } from "../utils.js";
7
+ import { DefaultVtxo } from "../../script/default.js";
8
8
  /**
9
9
  * Expo/React Native wallet with built-in background task processing.
10
10
  *
@@ -96,7 +96,7 @@ export class ExpoWallet {
96
96
  // Activate OS-level background scheduling
97
97
  if (config.background.minimumBackgroundInterval) {
98
98
  try {
99
- const { registerExpoBackgroundTask } = await import("./background");
99
+ const { registerExpoBackgroundTask } = await import("./background.js");
100
100
  await registerExpoBackgroundTask(config.background.taskName, {
101
101
  minimumInterval: config.background.minimumBackgroundInterval,
102
102
  });
@@ -145,7 +145,7 @@ export class ExpoWallet {
145
145
  this.foregroundIntervalId = undefined;
146
146
  }
147
147
  try {
148
- const { unregisterExpoBackgroundTask } = await import("./background");
148
+ const { unregisterExpoBackgroundTask } = await import("./background.js");
149
149
  await unregisterExpoBackgroundTask(this.taskName);
150
150
  }
151
151
  catch {
@@ -1,6 +1,7 @@
1
1
  import { expand, networks } from "@bitcoinerlab/descriptors-scure";
2
- import { isMainnetDescriptor } from '../identity/descriptor.js';
3
- import { updateWalletState } from '../utils/syncCursors.js';
2
+ import { isMainnetDescriptor } from "../identity/descriptor.js";
3
+ import { updateWalletState } from "../utils/syncCursors.js";
4
+ import { WalletReceiveRotator, } from "./walletReceiveRotator.js";
4
5
  /** Settings key under {@link WalletState.settings} where HD state lives. */
5
6
  const HD_SETTINGS_KEY = "hd";
6
7
  /**
@@ -60,6 +61,25 @@ export class HDDescriptorProvider {
60
61
  return this.materializeAt(next);
61
62
  });
62
63
  }
64
+ /**
65
+ * Re-derive the descriptor at the most recently allocated index
66
+ * WITHOUT advancing — i.e. read the same descriptor
67
+ * `getNextSigningDescriptor` last returned. Returns `undefined`
68
+ * when no descriptor has ever been allocated on this repo.
69
+ *
70
+ * Used by the boot path to keep the wallet's display address
71
+ * stable across restarts: when no tagged display contract exists
72
+ * (e.g. a fresh wallet that hasn't rotated yet, or a wallet whose
73
+ * baseline-only repo carries no rotation history), the boot should
74
+ * re-derive the existing index rather than burn a new one.
75
+ */
76
+ async getCurrentSigningDescriptor() {
77
+ const state = await this.walletRepository.getWalletState();
78
+ const settings = this.parseSettings(state ?? {});
79
+ if (settings.lastIndexUsed === undefined)
80
+ return undefined;
81
+ return this.materializeAt(settings.lastIndexUsed);
82
+ }
63
83
  /**
64
84
  * Returns true when the given descriptor is derivable from this wallet's
65
85
  * seed. Delegates to the underlying identity, which handles both HD and
@@ -80,6 +100,15 @@ export class HDDescriptorProvider {
80
100
  async signMessageWithDescriptor(descriptor, message, signatureType = "schnorr") {
81
101
  return this.identity.signMessageWithDescriptor(descriptor, message, signatureType);
82
102
  }
103
+ /**
104
+ * HD providers participate in receive rotation. The default
105
+ * factory boot (contract-repo lookup → allocate fresh descriptor)
106
+ * is exactly what we want, so this just delegates to
107
+ * {@link WalletReceiveRotator.defaultBoot}.
108
+ */
109
+ async createReceiveRotator(opts) {
110
+ return WalletReceiveRotator.defaultBoot(this, opts);
111
+ }
83
112
  // ── internals ────────────────────────────────────────────────────
84
113
  /**
85
114
  * Substitute the wildcard in the identity's account-descriptor template