@arkade-os/sdk 0.4.51 → 0.4.52

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 (72) hide show
  1. package/README.md +4 -2
  2. package/dist/adapters/expo.cjs +4 -4
  3. package/dist/adapters/expo.d.cts +2 -2
  4. package/dist/adapters/expo.d.ts +2 -2
  5. package/dist/adapters/expo.js +2 -2
  6. package/dist/adapters/indexedDB.cjs +4 -4
  7. package/dist/adapters/indexedDB.js +3 -3
  8. package/dist/{ark-9V45Anrs.d.cts → ark-B69ugeJw.d.cts} +31 -3
  9. package/dist/{ark-9V45Anrs.d.ts → ark-B69ugeJw.d.ts} +31 -3
  10. package/dist/{asyncStorageTaskQueue-BZjR843B.d.ts → asyncStorageTaskQueue-BImF14sj.d.ts} +2 -2
  11. package/dist/{asyncStorageTaskQueue-B6nXJv7m.d.cts → asyncStorageTaskQueue-DScPdQAy.d.cts} +2 -2
  12. package/dist/{chunk-3E4GDBYU.cjs → chunk-3Z5HK35D.cjs} +7 -7
  13. package/dist/{chunk-3E4GDBYU.cjs.map → chunk-3Z5HK35D.cjs.map} +1 -1
  14. package/dist/{chunk-4KGT3IP2.js → chunk-3ZGANANS.js} +3 -3
  15. package/dist/{chunk-4KGT3IP2.js.map → chunk-3ZGANANS.js.map} +1 -1
  16. package/dist/{chunk-TS2MTRP4.js → chunk-AXCKRS2D.js} +53 -23
  17. package/dist/chunk-AXCKRS2D.js.map +1 -0
  18. package/dist/{chunk-5AT2NV5G.cjs → chunk-E6RT5XYB.cjs} +11 -11
  19. package/dist/{chunk-5AT2NV5G.cjs.map → chunk-E6RT5XYB.cjs.map} +1 -1
  20. package/dist/{chunk-FHDUEBBC.cjs → chunk-FZPYPEWN.cjs} +3 -3
  21. package/dist/{chunk-FHDUEBBC.cjs.map → chunk-FZPYPEWN.cjs.map} +1 -1
  22. package/dist/{chunk-LJQ2VQBE.cjs → chunk-IEMPH7J6.cjs} +52 -44
  23. package/dist/chunk-IEMPH7J6.cjs.map +1 -0
  24. package/dist/{chunk-6XF6ZATZ.cjs → chunk-ML33GFCH.cjs} +238 -207
  25. package/dist/chunk-ML33GFCH.cjs.map +1 -0
  26. package/dist/{chunk-MBSYQ3WX.js → chunk-UZLQUWYP.js} +52 -45
  27. package/dist/chunk-UZLQUWYP.js.map +1 -0
  28. package/dist/{chunk-6T5BBPKO.js → chunk-WIVQWYPZ.js} +3 -3
  29. package/dist/{chunk-6T5BBPKO.js.map → chunk-WIVQWYPZ.js.map} +1 -1
  30. package/dist/{chunk-3AOTJZQ4.js → chunk-ZK3JITHP.js} +3 -3
  31. package/dist/{chunk-3AOTJZQ4.js.map → chunk-ZK3JITHP.js.map} +1 -1
  32. package/dist/contracts/handlers/index.cjs +7 -7
  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 +1 -1
  36. package/dist/{delegate-CJkolr2s.d.ts → delegate-BU-Cpyjw.d.ts} +1 -1
  37. package/dist/{delegate-tVTPM4fm.d.cts → delegate-C_Y2YrXC.d.cts} +1 -1
  38. package/dist/{index-B5Fdwzs_.d.ts → index-BWF-C9eh.d.ts} +2 -2
  39. package/dist/{index-BBAffp_8.d.cts → index-tzAInyiX.d.cts} +2 -2
  40. package/dist/index.cjs +161 -157
  41. package/dist/index.d.cts +8 -8
  42. package/dist/index.d.ts +8 -8
  43. package/dist/index.js +3 -3
  44. package/dist/repositories/realm/index.cjs +18 -18
  45. package/dist/repositories/realm/index.d.cts +2 -2
  46. package/dist/repositories/realm/index.d.ts +2 -2
  47. package/dist/repositories/realm/index.js +4 -4
  48. package/dist/repositories/sqlite/index.cjs +17 -17
  49. package/dist/repositories/sqlite/index.d.cts +2 -2
  50. package/dist/repositories/sqlite/index.d.ts +2 -2
  51. package/dist/repositories/sqlite/index.js +4 -4
  52. package/dist/{taskRunner-TgdjRf_b.d.ts → taskRunner-Cf80BqSy.d.ts} +2 -2
  53. package/dist/{taskRunner-4CrJaWHv.d.cts → taskRunner-ClwI8jU8.d.cts} +2 -2
  54. package/dist/wallet/expo/background.cjs +13 -13
  55. package/dist/wallet/expo/background.d.cts +3 -3
  56. package/dist/wallet/expo/background.d.ts +3 -3
  57. package/dist/wallet/expo/background.js +5 -5
  58. package/dist/wallet/expo/index.cjs +13 -13
  59. package/dist/wallet/expo/index.d.cts +4 -4
  60. package/dist/wallet/expo/index.d.ts +4 -4
  61. package/dist/wallet/expo/index.js +4 -4
  62. package/dist/{wallet-BBfhZx_Z.d.cts → wallet-B6Xiferv.d.cts} +16 -5
  63. package/dist/{wallet-CSSTN8Yc.d.ts → wallet-CuHAI-eW.d.ts} +16 -5
  64. package/dist/worker/expo/index.cjs +8 -8
  65. package/dist/worker/expo/index.d.cts +4 -4
  66. package/dist/worker/expo/index.d.ts +4 -4
  67. package/dist/worker/expo/index.js +4 -4
  68. package/package.json +1 -1
  69. package/dist/chunk-6XF6ZATZ.cjs.map +0 -1
  70. package/dist/chunk-LJQ2VQBE.cjs.map +0 -1
  71. package/dist/chunk-MBSYQ3WX.js.map +0 -1
  72. package/dist/chunk-TS2MTRP4.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { Transaction, setArkPsbtField, PrevArkTxField, ConditionWitness, AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, craftToSpendTx, getArkPsbtFields, CosignerPublicKey, BufferReader, BufferWriter, OP_RETURN_EMPTY_PKSCRIPT, VtxoTaprootTree, baseFetch, Intent, rateGate, maybeArkError, isArkError, ArkErrorName, ProviderUnavailableError, FetchError, isFetchTimeoutError, AssetRef, isEventSourceError, RestArkProvider, RestIndexerProvider, ArkError } from './chunk-3AOTJZQ4.js';
2
- import { witnessRefToBytes, validateProgram, toASM, stringifyArtifact, serializeArkadeContractParams, resolveAsm, parseArtifact, getOpcodeValue, getOpcodeName, fromASM, deserializeArkadeContractParams, computeArkadeScriptPublicKey, bytesToASM, asmToBytes, arkadeWitnessHash, arkadeScriptHash, SUPPORTED_PROGRAM_VERSION, OPCODE_VALUES, OPCODE_NAMES, bignum_exports, ArkadeScript, ArkadeProgramScript, ARKADE_OPS, ARKADE_OPCODE_VALUES, ARKADE_OPCODE_NAMES, ARKADE_OPCODES, ARKADE_OP, inputName, contractHandlers, isMainnetDescriptor, descriptorIsOurs, DefaultVtxo, DelegateVtxo, deriveDescriptorLeafPubKey, WALLET_RECEIVE_SOURCE, BoardingContractHandler } from './chunk-MBSYQ3WX.js';
1
+ import { Transaction, setArkPsbtField, PrevArkTxField, ConditionWitness, AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, craftToSpendTx, getArkPsbtFields, CosignerPublicKey, BufferReader, BufferWriter, OP_RETURN_EMPTY_PKSCRIPT, VtxoTaprootTree, baseFetch, Intent, rateGate, maybeArkError, isArkError, ArkErrorName, ProviderUnavailableError, FetchError, isFetchTimeoutError, AssetRef, isEventSourceError, RestArkProvider, RestIndexerProvider, ArkError } from './chunk-ZK3JITHP.js';
2
+ import { witnessRefToBytes, validateProgram, toASM, stringifyArtifact, serializeArkadeContractParams, resolveAsm, parseArtifact, getOpcodeValue, getOpcodeName, fromASM, deserializeArkadeContractParams, computeArkadeScriptPublicKey, bytesToASM, asmToBytes, arkadeWitnessHash, arkadeScriptHash, SUPPORTED_PROGRAM_VERSION, OPCODE_VALUES, OPCODE_NAMES, bignum_exports, ArkadeScript, ArkadeProgramScript, ARKADE_OPS, ARKADE_OPCODE_VALUES, ARKADE_OPCODE_NAMES, ARKADE_OPCODES, ARKADE_OP, inputName, contractHandlers, isMainnetDescriptor, descriptorIsOurs, DefaultVtxo, speculativeReceiveMetadata, DelegateVtxo, deriveDescriptorLeafPubKey, WALLET_RECEIVE_SOURCE, BoardingContractHandler } from './chunk-UZLQUWYP.js';
3
3
  import { VtxoScript, isRecoverable, CSVMultisigTapscript, DEFAULT_NETWORK, hasTerminalSpend, getNormalizedVtxos, isVirtualCoin, ArkAddress, sequenceToTimelock, decodeTapscript, scriptFromTapLeafScript, CLTVMultisigTapscript, timelockToSequence, DEFAULT_NETWORK_NAME, normalizeVtxo, getSequence, toBatchExpiry, toOffchainInputFeeParams, canRecoverOnchain, getNetwork, MultisigTapscript, getAllNormalizedVtxos, DEFAULT_PAGE_SIZE, canSpendOffchain, toVirtualStatus, resolveTimeHeight, parseLegacyExpiry, networks as networks$1, isExpired, DEFAULT_ARKADE_SERVER_URL, isPastExpiry } from './chunk-EFNLTS6Q.js';
4
4
  import { __export } from './chunk-NSBPE2FW.js';
5
5
  import { sha256, equalBytes, hash160, sha256x2, concatBytes, randomPrivateKeyBytes, pubECDSA, pubSchnorr } from '@scure/btc-signer/utils.js';
@@ -2589,6 +2589,9 @@ function parseProgram(text, env) {
2589
2589
  }
2590
2590
 
2591
2591
  // src/contracts/types.ts
2592
+ function hasCandidates(handler) {
2593
+ return !!handler && typeof handler.candidatesAt === "function";
2594
+ }
2592
2595
  function isDiscoverable(handler) {
2593
2596
  return !!handler && typeof handler.discoverAt === "function";
2594
2597
  }
@@ -8889,6 +8892,10 @@ var ContractManager = class _ContractManager {
8889
8892
  *
8890
8893
  * Entries are registered with the watcher but NOT persisted: they become
8891
8894
  * repository rows only once funded (see {@link promoteLookAheadHits}).
8895
+ *
8896
+ * Each index contributes every {@link Discoverable.candidatesAt} candidate —
8897
+ * the same set `restore()`'s gap scan probes, since the wallet cannot know
8898
+ * which variant a third-party issuer handed out.
8892
8899
  */
8893
8900
  async ensureLookAhead() {
8894
8901
  const lookAhead = this.config.lookAhead;
@@ -8896,10 +8903,23 @@ var ContractManager = class _ContractManager {
8896
8903
  const watermark = await lookAhead.currentWatermark();
8897
8904
  const from = Math.max(0, watermark - lookAhead.size);
8898
8905
  const to = watermark + lookAhead.size;
8906
+ const deps = lookAhead.candidateDeps();
8907
+ const handlers = contractHandlers.getRegisteredTypes().map((t) => contractHandlers.get(t)).filter(hasCandidates);
8899
8908
  const band = /* @__PURE__ */ new Map();
8900
8909
  for (let index = from; index <= to; index++) {
8901
- const params = lookAhead.materialize(index);
8902
- band.set(params.script, { index, params });
8910
+ const descriptor = lookAhead.materialize(index);
8911
+ for (const handler of handlers) {
8912
+ for (const candidate of handler.candidatesAt(index, descriptor, deps)) {
8913
+ if (band.has(candidate.script)) continue;
8914
+ band.set(candidate.script, {
8915
+ index,
8916
+ params: {
8917
+ ...candidate,
8918
+ ...speculativeReceiveMetadata(descriptor)
8919
+ }
8920
+ });
8921
+ }
8922
+ }
8903
8923
  }
8904
8924
  await this.watcher.withCoalescedSubscription(async () => {
8905
8925
  const persisted = await this.config.contractRepository.getContracts({
@@ -10168,9 +10188,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
10168
10188
  const { tapscript: newTapscript, params } = buildReceiveContract(
10169
10189
  wallet.offchainTapscript,
10170
10190
  descriptor,
10171
- wallet.network.hrp,
10172
- true
10173
- );
10191
+ wallet.network.hrp);
10174
10192
  const newScript = params.script;
10175
10193
  const manager = await wallet.getContractManager();
10176
10194
  await manager.createContract(params);
@@ -10212,7 +10230,7 @@ function buildReceiveContract(current, descriptor, hrp, tagSource) {
10212
10230
  // index-0 key. Without it, spends produce unsigned PSBTs that the
10213
10231
  // server rejects with `INVALID_PSBT_INPUT (5): missing tapscript spend sig`.
10214
10232
  metadata: {
10215
- ...tagSource && { source: WALLET_RECEIVE_SOURCE },
10233
+ ...{ source: WALLET_RECEIVE_SOURCE },
10216
10234
  signingDescriptor: descriptor
10217
10235
  }
10218
10236
  };
@@ -11752,9 +11770,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
11752
11770
  * Only HD wallets have a watermark to look ahead of; static / `auto`
11753
11771
  * wallets keep a single index-0 receive address, so the feature stays off.
11754
11772
  *
11755
- * `materialize` reads `this.offchainTapscript` at call time, so a refill
11756
- * after {@link rotateServerSigner} rebuilds the band under the active
11757
- * signer (persisted old-signer rows stay watched through the repository).
11773
+ * `candidateDeps` is read at refill time, so a band rebuilt after
11774
+ * {@link rotateServerSigner} fans the active signer set (persisted
11775
+ * old-signer rows stay watched through the repository).
11758
11776
  */
11759
11777
  lookAheadConfig() {
11760
11778
  const provider = this._descriptorProvider;
@@ -11762,18 +11780,30 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
11762
11780
  return {
11763
11781
  size: this._lookAheadWindow,
11764
11782
  currentWatermark: async () => await provider.getLastIndexUsed() ?? -1,
11765
- materialize: (index) => buildReceiveContract(
11766
- this.offchainTapscript,
11767
- provider.materializeDescriptorAt(index),
11768
- this.network.hrp,
11769
- // Never tagged: a promoted entry was generated by someone
11770
- // else, and the tag would make the next boot advertise a
11771
- // third party's invoice address as our own.
11772
- false
11773
- ).params,
11783
+ materialize: (index) => provider.materializeDescriptorAt(index),
11784
+ candidateDeps: () => this.receiveCandidateDeps(),
11774
11785
  onPromoted: (index) => provider.advanceLastIndexUsed(index)
11775
11786
  };
11776
11787
  }
11788
+ /**
11789
+ * Every axis an externally issued receive script could be anchored to, not
11790
+ * just the wallet's own current shape: an issuer sharing the seed (NArk, a
11791
+ * merchant backend) picks its own contract type, and a band derived from one
11792
+ * variant silently misses the rest until a `restore()`.
11793
+ *
11794
+ * Read from cached state, not a fresh `getInfo`, to stay synchronous and
11795
+ * offline-safe; {@link refreshDeprecatedSigners} and
11796
+ * {@link rotateServerSigner} keep it current and re-trigger a refill.
11797
+ */
11798
+ receiveCandidateDeps() {
11799
+ return {
11800
+ network: { hrp: this.network.hrp },
11801
+ serverPubKey: this.offchainTapscript.options.serverPubKey,
11802
+ deprecatedSignerPubKeys: [...this._deprecatedSigners.keys()].map((h) => hex.decode(h)),
11803
+ csvTimelocks: this.walletContractTimelocks,
11804
+ delegatePubKey: this.offchainTapscript instanceof DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0
11805
+ };
11806
+ }
11777
11807
  _signerRouter;
11778
11808
  /**
11779
11809
  * @internal Sole write path for `offchainTapscript` after construction.
@@ -20141,6 +20171,6 @@ function isArkContract(str) {
20141
20171
  return str.startsWith(ARKCONTRACT_PREFIX + "=");
20142
20172
  }
20143
20173
 
20144
- export { ARKADE_MAGIC, ActivityRegistry, ArkNote, ArkadeCash, ArkadeCashCreateError, AssetManager, BIP322, Batch, ChainedTxType, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EmulatorPacket, EsploraProvider, Estimator, Extension, ExtensionNotFoundError, HDDescriptorProvider, INTENT_TERMINAL_STATES, InMemoryContractRepository, InMemoryIntentRepository, InMemoryVirtualTxRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBIntentRepository, IndexedDBVirtualTxRepository, IndexedDBWalletRepository, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, RestEmulatorProvider, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, UnilateralExit, UnknownPacket, Unroll, VtxoManager, Wallet2 as Wallet, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, arkade_exports, assertIntentIdUnique, boardingResolver, buildForfeitTx, buildOffchainTx, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, createAssetPacket, createDefaultActivityRegistry, createExitChainResolver, decodeArkContract, deserializeAssets, deserializeExitPackage, deserializeUtxo, deserializeVtxo, encodeArkContract, extendVirtualCoinForContract, getMigrationStatus, getRandomId, hasBoardingTxExpired, intentMatchesFilter, intentPageBounds, isArkContract, isBatchSignable, isCooperativelyMigratable, isDiscoverable, isRetryableProviderError, isSubdust, isTerminalIntentState, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, mergeChainedTxType, migrateWalletRepository, openDatabase, requiresMigration, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, selectCoinsWithAsset, selectVirtualCoins, serializeAssets, serializeExitPackage, serializeUtxo, serializeVtxo, setupServiceWorker, signerSetFromInfo, toXOnlySignerHex, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, warnAndFilterVtxosForScript };
20145
- //# sourceMappingURL=chunk-TS2MTRP4.js.map
20146
- //# sourceMappingURL=chunk-TS2MTRP4.js.map
20174
+ export { ARKADE_MAGIC, ActivityRegistry, ArkNote, ArkadeCash, ArkadeCashCreateError, AssetManager, BIP322, Batch, ChainedTxType, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EmulatorPacket, EsploraProvider, Estimator, Extension, ExtensionNotFoundError, HDDescriptorProvider, INTENT_TERMINAL_STATES, InMemoryContractRepository, InMemoryIntentRepository, InMemoryVirtualTxRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBIntentRepository, IndexedDBVirtualTxRepository, IndexedDBWalletRepository, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, RestEmulatorProvider, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, UnilateralExit, UnknownPacket, Unroll, VtxoManager, Wallet2 as Wallet, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, arkade_exports, assertIntentIdUnique, boardingResolver, buildForfeitTx, buildOffchainTx, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, createAssetPacket, createDefaultActivityRegistry, createExitChainResolver, decodeArkContract, deserializeAssets, deserializeExitPackage, deserializeUtxo, deserializeVtxo, encodeArkContract, extendVirtualCoinForContract, getMigrationStatus, getRandomId, hasBoardingTxExpired, hasCandidates, intentMatchesFilter, intentPageBounds, isArkContract, isBatchSignable, isCooperativelyMigratable, isDiscoverable, isRetryableProviderError, isSubdust, isTerminalIntentState, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, mergeChainedTxType, migrateWalletRepository, openDatabase, requiresMigration, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, selectCoinsWithAsset, selectVirtualCoins, serializeAssets, serializeExitPackage, serializeUtxo, serializeVtxo, setupServiceWorker, signerSetFromInfo, toXOnlySignerHex, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, warnAndFilterVtxosForScript };
20175
+ //# sourceMappingURL=chunk-AXCKRS2D.js.map
20176
+ //# sourceMappingURL=chunk-AXCKRS2D.js.map