@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.
- package/README.md +5 -25
- package/dist/cjs/contracts/contractManager.js +31 -11
- package/dist/cjs/contracts/contractWatcher.js +2 -2
- package/dist/cjs/identity/hdCapableIdentity.js +18 -0
- package/dist/cjs/identity/index.js +3 -1
- package/dist/cjs/identity/seedIdentity.js +16 -0
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/script/address.js +2 -2
- package/dist/cjs/wallet/delegator.js +10 -4
- package/dist/cjs/wallet/hdDescriptorProvider.js +29 -0
- package/dist/cjs/wallet/inputSignerRouter.js +98 -0
- package/dist/cjs/wallet/serviceWorker/wallet.js +1 -0
- package/dist/cjs/wallet/signingErrors.js +32 -0
- package/dist/cjs/wallet/unroll.js +5 -1
- package/dist/cjs/wallet/wallet.js +232 -86
- package/dist/cjs/wallet/walletReceiveRotator.js +547 -0
- package/dist/cjs/worker/messageBus.js +1 -0
- package/dist/esm/adapters/asyncStorage.js +1 -1
- package/dist/esm/adapters/expo.js +2 -2
- package/dist/esm/adapters/fileSystem.js +1 -1
- package/dist/esm/adapters/indexedDB.js +1 -1
- package/dist/esm/adapters/localStorage.js +1 -1
- package/dist/esm/arkfee/index.js +1 -1
- package/dist/esm/arknote/index.js +1 -1
- package/dist/esm/bip322/index.js +2 -2
- package/dist/esm/contracts/arkcontract.js +2 -2
- package/dist/esm/contracts/contractManager.js +36 -16
- package/dist/esm/contracts/contractWatcher.js +5 -5
- package/dist/esm/contracts/handlers/default.js +4 -4
- package/dist/esm/contracts/handlers/delegate.js +4 -4
- package/dist/esm/contracts/handlers/helpers.js +2 -2
- package/dist/esm/contracts/handlers/index.js +8 -8
- package/dist/esm/contracts/handlers/vhtlc.js +3 -3
- package/dist/esm/contracts/index.js +8 -8
- package/dist/esm/extension/asset/assetGroup.js +7 -7
- package/dist/esm/extension/asset/assetId.js +2 -2
- package/dist/esm/extension/asset/assetInput.js +2 -2
- package/dist/esm/extension/asset/assetOutput.js +1 -1
- package/dist/esm/extension/asset/assetRef.js +3 -3
- package/dist/esm/extension/asset/index.js +8 -8
- package/dist/esm/extension/asset/metadata.js +1 -1
- package/dist/esm/extension/asset/packet.js +3 -3
- package/dist/esm/extension/index.js +4 -4
- package/dist/esm/forfeit.js +2 -2
- package/dist/esm/identity/hdCapableIdentity.js +17 -1
- package/dist/esm/identity/index.js +6 -5
- package/dist/esm/identity/seedIdentity.js +18 -2
- package/dist/esm/identity/serialize.js +2 -2
- package/dist/esm/identity/singleKey.js +1 -1
- package/dist/esm/identity/staticDescriptorProvider.js +2 -2
- package/dist/esm/index.js +48 -48
- package/dist/esm/intent/index.js +3 -3
- package/dist/esm/musig2/index.js +3 -3
- package/dist/esm/musig2/sign.js +1 -1
- package/dist/esm/providers/ark.js +3 -3
- package/dist/esm/providers/delegator.js +1 -1
- package/dist/esm/providers/electrum.js +2 -2
- package/dist/esm/providers/expoArk.js +2 -2
- package/dist/esm/providers/expoIndexer.js +3 -3
- package/dist/esm/providers/indexer.js +3 -3
- package/dist/esm/repositories/inMemory/walletRepository.js +1 -1
- package/dist/esm/repositories/index.js +9 -9
- package/dist/esm/repositories/indexedDB/contractRepository.js +4 -4
- package/dist/esm/repositories/indexedDB/db.js +2 -2
- package/dist/esm/repositories/indexedDB/schema.js +1 -1
- package/dist/esm/repositories/indexedDB/walletRepository.js +6 -6
- package/dist/esm/repositories/migrations/fromStorageAdapter.js +1 -1
- package/dist/esm/repositories/migrations/walletRepositoryImpl.js +1 -1
- package/dist/esm/repositories/realm/index.js +3 -3
- package/dist/esm/repositories/realm/schemas.js +1 -1
- package/dist/esm/repositories/realm/walletRepository.js +3 -3
- package/dist/esm/repositories/scriptFromAddress.js +1 -1
- package/dist/esm/repositories/sqlite/index.js +2 -2
- package/dist/esm/repositories/sqlite/walletRepository.js +3 -3
- package/dist/esm/script/address.js +3 -3
- package/dist/esm/script/base.js +3 -3
- package/dist/esm/script/default.js +2 -2
- package/dist/esm/script/delegate.js +3 -3
- package/dist/esm/script/tapscript.js +1 -1
- package/dist/esm/script/vhtlc.js +2 -2
- package/dist/esm/storage/indexedDB.js +1 -1
- package/dist/esm/tree/signingSession.js +2 -2
- package/dist/esm/tree/validation.js +2 -2
- package/dist/esm/utils/arkTransaction.js +7 -7
- package/dist/esm/utils/transactionHistory.js +1 -1
- package/dist/esm/utils/unknownFields.js +1 -1
- package/dist/esm/wallet/asset-manager.js +5 -5
- package/dist/esm/wallet/asset.js +1 -1
- package/dist/esm/wallet/batch.js +2 -2
- package/dist/esm/wallet/delegator.js +16 -10
- package/dist/esm/wallet/expo/background.js +5 -5
- package/dist/esm/wallet/expo/index.js +2 -2
- package/dist/esm/wallet/expo/wallet.js +8 -8
- package/dist/esm/wallet/hdDescriptorProvider.js +31 -2
- package/dist/esm/wallet/inputSignerRouter.js +94 -0
- package/dist/esm/wallet/onchain.js +7 -7
- package/dist/esm/wallet/ramps.js +3 -3
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +6 -6
- package/dist/esm/wallet/serviceWorker/wallet.js +8 -7
- package/dist/esm/wallet/signingErrors.js +27 -0
- package/dist/esm/wallet/unroll.js +12 -8
- package/dist/esm/wallet/utils.js +2 -2
- package/dist/esm/wallet/validation.js +2 -2
- package/dist/esm/wallet/vtxo-manager.js +9 -9
- package/dist/esm/wallet/wallet.js +262 -117
- package/dist/esm/wallet/walletReceiveRotator.js +540 -0
- package/dist/esm/worker/expo/index.js +4 -4
- package/dist/esm/worker/expo/processors/contractPollProcessor.js +1 -1
- package/dist/esm/worker/expo/processors/index.js +1 -1
- package/dist/esm/worker/expo/taskRunner.js +1 -1
- package/dist/esm/worker/messageBus.js +7 -6
- package/dist/types/adapters/asyncStorage.d.ts +2 -2
- package/dist/types/adapters/expo.d.ts +4 -4
- package/dist/types/adapters/fileSystem.d.ts +2 -2
- package/dist/types/adapters/indexedDB.d.ts +2 -2
- package/dist/types/adapters/localStorage.d.ts +2 -2
- package/dist/types/arkfee/index.d.ts +2 -2
- package/dist/types/arknote/index.d.ts +2 -2
- package/dist/types/bip322/index.d.ts +1 -1
- package/dist/types/contracts/arkcontract.d.ts +1 -1
- package/dist/types/contracts/contractManager.d.ts +39 -9
- package/dist/types/contracts/contractWatcher.d.ts +3 -3
- package/dist/types/contracts/handlers/default.d.ts +3 -3
- package/dist/types/contracts/handlers/delegate.d.ts +3 -3
- package/dist/types/contracts/handlers/helpers.d.ts +1 -1
- package/dist/types/contracts/handlers/index.d.ts +7 -7
- package/dist/types/contracts/handlers/registry.d.ts +1 -1
- package/dist/types/contracts/handlers/vhtlc.d.ts +3 -3
- package/dist/types/contracts/index.d.ts +14 -14
- package/dist/types/contracts/types.d.ts +21 -4
- package/dist/types/contracts/vtxoOwnership.d.ts +3 -3
- package/dist/types/extension/asset/assetGroup.d.ts +6 -6
- package/dist/types/extension/asset/assetId.d.ts +1 -1
- package/dist/types/extension/asset/assetInput.d.ts +2 -2
- package/dist/types/extension/asset/assetOutput.d.ts +1 -1
- package/dist/types/extension/asset/assetRef.d.ts +3 -3
- package/dist/types/extension/asset/index.d.ts +8 -8
- package/dist/types/extension/asset/metadata.d.ts +1 -1
- package/dist/types/extension/asset/packet.d.ts +2 -2
- package/dist/types/extension/index.d.ts +6 -6
- package/dist/types/forfeit.d.ts +1 -1
- package/dist/types/identity/descriptorProvider.d.ts +8 -1
- package/dist/types/identity/hdCapableIdentity.d.ts +33 -6
- package/dist/types/identity/index.d.ts +12 -11
- package/dist/types/identity/seedIdentity.d.ts +21 -5
- package/dist/types/identity/serialize.d.ts +1 -1
- package/dist/types/identity/singleKey.d.ts +3 -3
- package/dist/types/identity/staticDescriptorProvider.d.ts +3 -3
- package/dist/types/index.d.ts +59 -59
- package/dist/types/intent/index.d.ts +2 -2
- package/dist/types/musig2/index.d.ts +4 -4
- package/dist/types/providers/ark.d.ts +5 -5
- package/dist/types/providers/delegator.d.ts +2 -2
- package/dist/types/providers/electrum.d.ts +5 -5
- package/dist/types/providers/expoArk.d.ts +1 -1
- package/dist/types/providers/expoIndexer.d.ts +1 -1
- package/dist/types/providers/indexer.d.ts +1 -1
- package/dist/types/providers/onchain.d.ts +2 -2
- package/dist/types/repositories/contractRepository.d.ts +1 -1
- package/dist/types/repositories/inMemory/contractRepository.d.ts +2 -2
- package/dist/types/repositories/inMemory/walletRepository.d.ts +2 -2
- package/dist/types/repositories/index.d.ts +9 -9
- package/dist/types/repositories/indexedDB/contractRepository.d.ts +2 -2
- package/dist/types/repositories/indexedDB/db.d.ts +3 -3
- package/dist/types/repositories/indexedDB/walletRepository.d.ts +2 -2
- package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +3 -3
- package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +2 -2
- package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +3 -3
- package/dist/types/repositories/realm/contractRepository.d.ts +3 -3
- package/dist/types/repositories/realm/index.d.ts +4 -4
- package/dist/types/repositories/realm/walletRepository.d.ts +3 -3
- package/dist/types/repositories/serialization.d.ts +11 -11
- package/dist/types/repositories/sqlite/contractRepository.d.ts +3 -3
- package/dist/types/repositories/sqlite/index.d.ts +3 -3
- package/dist/types/repositories/sqlite/walletRepository.d.ts +3 -3
- package/dist/types/repositories/walletRepository.d.ts +1 -1
- package/dist/types/script/address.d.ts +2 -2
- package/dist/types/script/base.d.ts +2 -2
- package/dist/types/script/default.d.ts +2 -2
- package/dist/types/script/delegate.d.ts +3 -3
- package/dist/types/script/vhtlc.d.ts +2 -2
- package/dist/types/storage/asyncStorage.d.ts +1 -1
- package/dist/types/storage/fileSystem.d.ts +1 -1
- package/dist/types/storage/inMemory.d.ts +1 -1
- package/dist/types/storage/indexedDB.d.ts +1 -1
- package/dist/types/storage/localStorage.d.ts +1 -1
- package/dist/types/tree/signingSession.d.ts +2 -2
- package/dist/types/tree/validation.d.ts +1 -1
- package/dist/types/utils/arkTransaction.d.ts +5 -5
- package/dist/types/utils/syncCursors.d.ts +1 -1
- package/dist/types/utils/timelock.d.ts +1 -1
- package/dist/types/utils/transaction.d.ts +2 -2
- package/dist/types/utils/transactionHistory.d.ts +1 -1
- package/dist/types/utils/txSizeEstimator.d.ts +1 -1
- package/dist/types/wallet/asset-manager.d.ts +3 -3
- package/dist/types/wallet/asset.d.ts +2 -2
- package/dist/types/wallet/batch.d.ts +2 -2
- package/dist/types/wallet/delegator.d.ts +5 -5
- package/dist/types/wallet/expo/background.d.ts +4 -4
- package/dist/types/wallet/expo/index.d.ts +4 -4
- package/dist/types/wallet/expo/wallet.d.ts +8 -8
- package/dist/types/wallet/hdDescriptorProvider.d.ts +26 -5
- package/dist/types/wallet/index.d.ts +63 -26
- package/dist/types/wallet/inputSignerRouter.d.ts +35 -0
- package/dist/types/wallet/onchain.d.ts +6 -6
- package/dist/types/wallet/ramps.d.ts +2 -2
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +7 -7
- package/dist/types/wallet/serviceWorker/wallet.d.ts +20 -10
- package/dist/types/wallet/signingErrors.d.ts +19 -0
- package/dist/types/wallet/unroll.d.ts +6 -6
- package/dist/types/wallet/utils.d.ts +5 -5
- package/dist/types/wallet/validation.d.ts +3 -3
- package/dist/types/wallet/vtxo-manager.d.ts +2 -2
- package/dist/types/wallet/wallet.d.ts +71 -22
- package/dist/types/wallet/walletReceiveRotator.d.ts +306 -0
- package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +1 -1
- package/dist/types/worker/expo/index.d.ts +7 -7
- package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +1 -1
- package/dist/types/worker/expo/processors/index.d.ts +1 -1
- package/dist/types/worker/expo/taskRunner.d.ts +7 -7
- package/dist/types/worker/messageBus.d.ts +7 -6
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { hex } from "@scure/base";
|
|
2
|
-
import { eventSourceIterator, isEventSourceError } from
|
|
3
|
-
import { maybeArkError } from
|
|
4
|
-
import { Intent } from
|
|
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";
|
|
@@ -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
|
|
96
|
-
* import { networks } from
|
|
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
|
|
2
|
-
import { getExpoFetch, sseStreamIterator } from
|
|
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
|
|
2
|
-
import { isFetchTimeoutError } from
|
|
3
|
-
import { getExpoFetch, sseStreamIterator } from
|
|
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
|
|
3
|
-
import { eventSourceIterator, isEventSourceError } from
|
|
4
|
-
import { MetadataList } from
|
|
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,10 +1,10 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
7
|
-
export { MIGRATION_KEY, migrateWalletRepository, requiresMigration, getMigrationStatus, rollbackMigration, } from
|
|
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
|
|
10
|
-
export { ContractRepositoryImpl } from
|
|
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
|
|
2
|
-
import { closeDatabase, openDatabase } from
|
|
3
|
-
import { initDatabase } from
|
|
4
|
-
import { DEFAULT_DB_NAME } from
|
|
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
|
|
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
|
|
4
|
+
export { serializeTapLeaf, serializeVtxo, serializeUtxo, deserializeTapLeaf, deserializeVtxo, deserializeUtxo, } from "../serialization.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { scriptFromArkAddress } from
|
|
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
|
|
2
|
-
import { closeDatabase, openDatabase } from
|
|
3
|
-
import { initDatabase } from
|
|
4
|
-
import { scriptFromArkAddress } from
|
|
5
|
-
import { DEFAULT_DB_NAME } from
|
|
6
|
-
import { isVtxoForScript } from
|
|
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
|
|
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
|
|
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
|
|
2
|
-
export { RealmContractRepository } from
|
|
3
|
-
export { ArkRealmSchemas, ARK_REALM_SCHEMA_VERSION, runArkRealmMigrations, } from
|
|
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
|
|
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
|
|
2
|
-
import { scriptFromArkAddress } from
|
|
3
|
-
import { isVtxoForScript } from
|
|
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
|
|
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
|
|
2
|
-
export { SQLiteContractRepository } from
|
|
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
|
|
2
|
-
import { scriptFromArkAddress } from
|
|
3
|
-
import { isVtxoForScript } from
|
|
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
|
|
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,
|
|
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
|
|
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`
|
package/dist/esm/script/base.js
CHANGED
|
@@ -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
|
|
6
|
-
import { timelockToSequence } from
|
|
7
|
-
import { CLTVMultisigTapscript, ConditionCSVMultisigTapscript, CSVMultisigTapscript, } from
|
|
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
|
|
2
|
-
import { CSVMultisigTapscript, MultisigTapscript, } from
|
|
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
|
|
2
|
-
import { MultisigTapscript } from
|
|
3
|
-
import { VtxoScript } from
|
|
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
|
|
3
|
+
import { sequenceToTimelock, timelockToSequence } from "../utils/timelock.js";
|
|
4
4
|
const MinimalScriptNum = ScriptNum(undefined, true);
|
|
5
5
|
export var TapscriptType;
|
|
6
6
|
(function (TapscriptType) {
|
package/dist/esm/script/vhtlc.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Script } from "@scure/btc-signer";
|
|
2
|
-
import { CLTVMultisigTapscript, ConditionCSVMultisigTapscript, ConditionMultisigTapscript, CSVMultisigTapscript, MultisigTapscript, } from
|
|
2
|
+
import { CLTVMultisigTapscript, ConditionCSVMultisigTapscript, ConditionMultisigTapscript, CSVMultisigTapscript, MultisigTapscript, } from "./tapscript.js";
|
|
3
3
|
import { hex } from "@scure/base";
|
|
4
|
-
import { VtxoScript } from
|
|
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,10 +1,10 @@
|
|
|
1
|
-
import * as musig2 from
|
|
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
|
|
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
|
|
5
|
-
import { CosignerPublicKey, getArkPsbtFields } from
|
|
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
|
|
6
|
-
import { scriptFromTapLeafScript, VtxoScript, } from
|
|
7
|
-
import { P2A } from
|
|
8
|
-
import { setArkPsbtField, VtxoTaprootTree } from
|
|
9
|
-
import { Transaction } from
|
|
10
|
-
import { ArkAddress } from
|
|
11
|
-
import { Extension } from
|
|
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,6 +1,6 @@
|
|
|
1
1
|
import { RawWitness, ScriptNum } from "@scure/btc-signer";
|
|
2
2
|
import { hex } from "@scure/base";
|
|
3
|
-
import { sequenceToTimelock } from
|
|
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
|
|
2
|
-
import { ArkAddress } from
|
|
3
|
-
import { selectedCoinsToAssetInputs, selectCoinsWithAsset } from
|
|
4
|
-
import { Extension } from
|
|
5
|
-
import { selectVirtualCoins } from
|
|
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;
|
package/dist/esm/wallet/asset.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssetGroup, AssetId, AssetInput, AssetOutput, Packet, } from
|
|
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
|
package/dist/esm/wallet/batch.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SettlementEventType } from
|
|
2
|
-
import { TxTree } from
|
|
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
|
|
1
|
+
import { ArkAddress, decodeTapscript, Estimator, Intent, isRecoverable, MultisigTapscript, VtxoScript, } from "../index.js";
|
|
2
2
|
import { base64, hex } from "@scure/base";
|
|
3
|
-
import { scriptFromTapLeafScript } from
|
|
4
|
-
import { buildForfeitTxWithOutput } from
|
|
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
|
|
8
|
-
import { createAssetPacket } from
|
|
9
|
-
import { Extension } from
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
2
|
-
import { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from
|
|
3
|
-
import { ExpoArkProvider } from
|
|
4
|
-
import { ExpoIndexerProvider } from
|
|
5
|
-
import { getRandomId } from
|
|
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
|
|
2
|
-
export { defineExpoBackgroundTask, registerExpoBackgroundTask, unregisterExpoBackgroundTask, } from
|
|
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
|
|
3
|
-
import { RestArkProvider } from
|
|
4
|
-
import { runTasks } from
|
|
5
|
-
import { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from
|
|
6
|
-
import { extendVirtualCoinForContract, getRandomId } from
|
|
7
|
-
import { DefaultVtxo } from
|
|
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
|
|
3
|
-
import { updateWalletState } from
|
|
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
|