@arkade-os/sdk 0.4.14 → 0.4.16
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 +287 -215
- package/dist/cjs/arkfee/estimator.js +1 -1
- package/dist/cjs/arkfee/types.js +2 -1
- package/dist/cjs/arknote/index.js +43 -4
- package/dist/cjs/bip322/index.js +1 -1
- package/dist/cjs/contracts/arkcontract.js +1 -1
- package/dist/cjs/contracts/contractManager.js +40 -24
- package/dist/cjs/contracts/contractWatcher.js +29 -22
- package/dist/cjs/contracts/handlers/default.js +1 -1
- package/dist/cjs/contracts/handlers/delegate.js +1 -1
- package/dist/cjs/contracts/handlers/helpers.js +25 -1
- package/dist/cjs/contracts/handlers/vhtlc.js +2 -4
- package/dist/cjs/extension/asset/assetGroup.js +92 -5
- package/dist/cjs/extension/asset/assetId.js +67 -3
- package/dist/cjs/extension/asset/assetInput.js +18 -0
- package/dist/cjs/extension/asset/assetOutput.js +15 -0
- package/dist/cjs/extension/asset/assetRef.js +66 -0
- package/dist/cjs/extension/asset/metadata.js +15 -0
- package/dist/cjs/extension/asset/packet.js +4 -1
- package/dist/cjs/extension/index.js +1 -1
- package/dist/cjs/forfeit.js +14 -0
- package/dist/cjs/identity/index.js +6 -0
- package/dist/cjs/identity/seedIdentity.js +5 -5
- package/dist/cjs/identity/singleKey.js +4 -0
- package/dist/cjs/index.js +5 -3
- package/dist/cjs/intent/index.js +28 -12
- package/dist/cjs/providers/ark.js +3 -2
- package/dist/cjs/providers/delegator.js +20 -1
- package/dist/cjs/providers/expoArk.js +2 -2
- package/dist/cjs/providers/indexer.js +2 -2
- package/dist/cjs/providers/onchain.js +2 -1
- package/dist/cjs/repositories/realm/schemas.js +2 -2
- package/dist/cjs/repositories/realm/types.js +1 -1
- package/dist/cjs/script/address.js +37 -6
- package/dist/cjs/script/base.js +70 -1
- package/dist/cjs/script/default.js +3 -0
- package/dist/cjs/script/delegate.js +4 -0
- package/dist/cjs/script/tapscript.js +25 -4
- package/dist/cjs/script/vhtlc.js +35 -27
- package/dist/cjs/storage/fileSystem.js +1 -1
- package/dist/cjs/storage/inMemory.js +1 -1
- package/dist/cjs/storage/indexedDB.js +1 -1
- package/dist/cjs/storage/localStorage.js +1 -1
- package/dist/cjs/tree/validation.js +1 -1
- package/dist/cjs/utils/arkTransaction.js +5 -5
- package/dist/cjs/utils/bip21.js +16 -3
- package/dist/cjs/utils/syncCursors.js +4 -4
- package/dist/cjs/utils/transaction.js +1 -1
- package/dist/cjs/utils/transactionHistory.js +11 -11
- package/dist/cjs/utils/unknownFields.js +3 -3
- package/dist/cjs/wallet/asset-manager.js +4 -4
- package/dist/cjs/wallet/batch.js +5 -5
- package/dist/cjs/wallet/delegator.js +9 -8
- package/dist/cjs/wallet/expo/background.js +3 -3
- package/dist/cjs/wallet/expo/wallet.js +7 -7
- package/dist/cjs/wallet/index.js +43 -0
- package/dist/cjs/wallet/onchain.js +43 -5
- package/dist/cjs/wallet/ramps.js +44 -14
- package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +22 -22
- package/dist/cjs/wallet/serviceWorker/wallet.js +28 -24
- package/dist/cjs/wallet/unroll.js +12 -8
- package/dist/cjs/wallet/utils.js +1 -1
- package/dist/cjs/wallet/vtxo-manager.js +123 -82
- package/dist/cjs/wallet/wallet.js +231 -98
- package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +1 -1
- package/dist/cjs/worker/expo/processors/contractPollProcessor.js +2 -2
- package/dist/cjs/worker/expo/taskRunner.js +3 -3
- package/dist/cjs/worker/messageBus.js +3 -0
- package/dist/esm/arkfee/estimator.js +1 -1
- package/dist/esm/arkfee/types.js +2 -1
- package/dist/esm/arknote/index.js +43 -4
- package/dist/esm/bip322/index.js +1 -1
- package/dist/esm/contracts/arkcontract.js +1 -1
- package/dist/esm/contracts/contractManager.js +40 -24
- package/dist/esm/contracts/contractWatcher.js +29 -22
- package/dist/esm/contracts/handlers/default.js +1 -1
- package/dist/esm/contracts/handlers/delegate.js +1 -1
- package/dist/esm/contracts/handlers/helpers.js +24 -1
- package/dist/esm/contracts/handlers/vhtlc.js +3 -5
- package/dist/esm/extension/asset/assetGroup.js +92 -5
- package/dist/esm/extension/asset/assetId.js +67 -3
- package/dist/esm/extension/asset/assetInput.js +18 -0
- package/dist/esm/extension/asset/assetOutput.js +15 -0
- package/dist/esm/extension/asset/assetRef.js +66 -0
- package/dist/esm/extension/asset/metadata.js +15 -0
- package/dist/esm/extension/asset/packet.js +4 -1
- package/dist/esm/extension/index.js +1 -1
- package/dist/esm/forfeit.js +14 -0
- package/dist/esm/identity/index.js +5 -0
- package/dist/esm/identity/seedIdentity.js +5 -5
- package/dist/esm/identity/singleKey.js +4 -0
- package/dist/esm/index.js +3 -2
- package/dist/esm/intent/index.js +28 -12
- package/dist/esm/providers/ark.js +3 -2
- package/dist/esm/providers/delegator.js +20 -1
- package/dist/esm/providers/expoArk.js +2 -2
- package/dist/esm/providers/indexer.js +2 -2
- package/dist/esm/providers/onchain.js +2 -1
- package/dist/esm/repositories/realm/schemas.js +2 -2
- package/dist/esm/repositories/realm/types.js +1 -1
- package/dist/esm/script/address.js +37 -6
- package/dist/esm/script/base.js +70 -1
- package/dist/esm/script/default.js +3 -0
- package/dist/esm/script/delegate.js +4 -0
- package/dist/esm/script/tapscript.js +25 -4
- package/dist/esm/script/vhtlc.js +35 -27
- package/dist/esm/storage/fileSystem.js +1 -1
- package/dist/esm/storage/inMemory.js +1 -1
- package/dist/esm/storage/indexedDB.js +1 -1
- package/dist/esm/storage/localStorage.js +1 -1
- package/dist/esm/tree/validation.js +1 -1
- package/dist/esm/utils/arkTransaction.js +5 -5
- package/dist/esm/utils/bip21.js +16 -3
- package/dist/esm/utils/syncCursors.js +4 -4
- package/dist/esm/utils/transaction.js +1 -1
- package/dist/esm/utils/transactionHistory.js +11 -11
- package/dist/esm/utils/unknownFields.js +3 -3
- package/dist/esm/wallet/asset-manager.js +4 -4
- package/dist/esm/wallet/batch.js +5 -5
- package/dist/esm/wallet/delegator.js +9 -8
- package/dist/esm/wallet/expo/background.js +3 -3
- package/dist/esm/wallet/expo/wallet.js +7 -7
- package/dist/esm/wallet/index.js +43 -0
- package/dist/esm/wallet/onchain.js +43 -5
- package/dist/esm/wallet/ramps.js +44 -14
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +22 -22
- package/dist/esm/wallet/serviceWorker/wallet.js +28 -24
- package/dist/esm/wallet/unroll.js +12 -8
- package/dist/esm/wallet/utils.js +1 -1
- package/dist/esm/wallet/vtxo-manager.js +122 -81
- package/dist/esm/wallet/wallet.js +232 -99
- package/dist/esm/worker/expo/asyncStorageTaskQueue.js +1 -1
- package/dist/esm/worker/expo/processors/contractPollProcessor.js +2 -2
- package/dist/esm/worker/expo/taskRunner.js +3 -3
- package/dist/esm/worker/messageBus.js +3 -0
- package/dist/types/arkfee/estimator.d.ts +1 -1
- package/dist/types/arkfee/types.d.ts +2 -1
- package/dist/types/arknote/index.d.ts +44 -4
- 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 +40 -63
- package/dist/types/contracts/contractWatcher.d.ts +39 -18
- package/dist/types/contracts/handlers/default.d.ts +1 -1
- package/dist/types/contracts/handlers/delegate.d.ts +1 -1
- package/dist/types/contracts/handlers/helpers.d.ts +11 -1
- package/dist/types/contracts/types.d.ts +36 -26
- package/dist/types/extension/asset/assetGroup.d.ts +92 -1
- package/dist/types/extension/asset/assetId.d.ts +67 -3
- package/dist/types/extension/asset/assetInput.d.ts +18 -0
- package/dist/types/extension/asset/assetOutput.d.ts +15 -0
- package/dist/types/extension/asset/assetRef.d.ts +66 -0
- package/dist/types/extension/asset/metadata.d.ts +15 -0
- package/dist/types/extension/asset/packet.d.ts +4 -1
- package/dist/types/extension/index.d.ts +1 -1
- package/dist/types/forfeit.d.ts +14 -0
- package/dist/types/identity/index.d.ts +36 -0
- package/dist/types/identity/seedIdentity.d.ts +10 -8
- package/dist/types/identity/singleKey.d.ts +4 -0
- package/dist/types/index.d.ts +3 -3
- package/dist/types/intent/index.d.ts +19 -6
- package/dist/types/providers/ark.d.ts +40 -2
- package/dist/types/providers/delegator.d.ts +54 -1
- package/dist/types/providers/expoArk.d.ts +2 -2
- package/dist/types/providers/indexer.d.ts +105 -2
- package/dist/types/providers/onchain.d.ts +62 -1
- package/dist/types/repositories/realm/schemas.d.ts +2 -2
- package/dist/types/repositories/realm/types.d.ts +2 -2
- package/dist/types/repositories/walletRepository.d.ts +16 -0
- package/dist/types/script/address.d.ts +35 -2
- package/dist/types/script/base.d.ts +66 -1
- package/dist/types/script/default.d.ts +3 -0
- package/dist/types/script/delegate.d.ts +4 -0
- package/dist/types/script/tapscript.d.ts +17 -2
- package/dist/types/script/vhtlc.d.ts +35 -27
- package/dist/types/storage/fileSystem.d.ts +1 -1
- package/dist/types/storage/inMemory.d.ts +1 -1
- package/dist/types/storage/index.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/utils/arkTransaction.d.ts +3 -3
- package/dist/types/utils/bip21.d.ts +17 -0
- package/dist/types/utils/syncCursors.d.ts +4 -4
- package/dist/types/utils/transaction.d.ts +1 -1
- package/dist/types/utils/transactionHistory.d.ts +3 -3
- package/dist/types/utils/unknownFields.d.ts +5 -5
- package/dist/types/wallet/asset-manager.d.ts +3 -3
- package/dist/types/wallet/batch.d.ts +27 -7
- package/dist/types/wallet/delegator.d.ts +10 -0
- package/dist/types/wallet/expo/background.d.ts +4 -4
- package/dist/types/wallet/expo/wallet.d.ts +10 -10
- package/dist/types/wallet/index.d.ts +457 -25
- package/dist/types/wallet/onchain.d.ts +42 -4
- package/dist/types/wallet/ramps.d.ts +40 -10
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +4 -4
- package/dist/types/wallet/serviceWorker/wallet.d.ts +71 -33
- package/dist/types/wallet/unroll.d.ts +8 -6
- package/dist/types/wallet/vtxo-manager.d.ts +146 -93
- package/dist/types/wallet/wallet.d.ts +91 -33
- package/dist/types/worker/expo/asyncStorageTaskQueue.d.ts +1 -1
- package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +1 -1
- package/dist/types/worker/expo/taskRunner.d.ts +6 -6
- package/dist/types/worker/messageBus.d.ts +5 -3
- package/package.json +18 -10
|
@@ -65,6 +65,12 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
65
65
|
info: import("../providers/ark").ArkInfo;
|
|
66
66
|
delegatorProvider: DelegatorProvider | undefined;
|
|
67
67
|
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Create a readonly wallet for querying balances, addresses, and history.
|
|
70
|
+
*
|
|
71
|
+
* @param config - Readonly wallet configuration
|
|
72
|
+
* @returns A readonly wallet instance
|
|
73
|
+
*/
|
|
68
74
|
static create(config: ReadonlyWalletConfig): Promise<ReadonlyWallet>;
|
|
69
75
|
get arkAddress(): ArkAddress;
|
|
70
76
|
/**
|
|
@@ -72,13 +78,26 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
72
78
|
* This is the pkScript hex, used to identify the wallet in ContractManager.
|
|
73
79
|
*/
|
|
74
80
|
get defaultContractScript(): string;
|
|
81
|
+
/** Returns the wallet's Arkade address. */
|
|
75
82
|
getAddress(): Promise<string>;
|
|
83
|
+
/** Returns the onchain boarding address used to move funds into Arkade. */
|
|
76
84
|
getBoardingAddress(): Promise<string>;
|
|
85
|
+
/**
|
|
86
|
+
* Return the wallet's combined onchain and offchain balances.
|
|
87
|
+
*/
|
|
77
88
|
getBalance(): Promise<WalletBalance>;
|
|
89
|
+
/**
|
|
90
|
+
* Return virtual outputs tracked by the wallet.
|
|
91
|
+
*
|
|
92
|
+
* @param filter - Optional flags controlling whether recoverable or unrolled VTXOs are included
|
|
93
|
+
*/
|
|
78
94
|
getVtxos(filter?: GetVtxosFilter): Promise<ExtendedVirtualCoin[]>;
|
|
95
|
+
/**
|
|
96
|
+
* Return wallet transaction history derived from Arkade state and boarding transactions.
|
|
97
|
+
*/
|
|
79
98
|
getTransactionHistory(): Promise<ArkTransaction[]>;
|
|
80
99
|
/**
|
|
81
|
-
* Delta-sync wallet
|
|
100
|
+
* Delta-sync wallet virtual outputs: fetch only changed virtual outputs since the last
|
|
82
101
|
* cursor, or do a full bootstrap when no cursor exists. Upserts
|
|
83
102
|
* the result into the cache and advances the sync cursors.
|
|
84
103
|
*
|
|
@@ -89,16 +108,29 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
89
108
|
private syncVtxos;
|
|
90
109
|
private doSyncVtxos;
|
|
91
110
|
/**
|
|
92
|
-
* Clear all
|
|
111
|
+
* Clear all virtual output sync cursors, forcing a full re-bootstrap on next sync.
|
|
93
112
|
* Useful for recovery after indexer reprocessing or debugging.
|
|
94
113
|
*/
|
|
95
114
|
clearSyncCursors(): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Build a transaction history view for the wallet's boarding address.
|
|
117
|
+
*/
|
|
96
118
|
getBoardingTxs(): Promise<{
|
|
97
119
|
boardingTxs: ArkTransaction[];
|
|
98
120
|
commitmentsToIgnore: Set<string>;
|
|
99
121
|
}>;
|
|
122
|
+
/**
|
|
123
|
+
* Fetch and cache onchain inputs (UTXOs) received at the boarding address.
|
|
124
|
+
*/
|
|
100
125
|
getBoardingUtxos(): Promise<ExtendedCoin[]>;
|
|
126
|
+
/**
|
|
127
|
+
* Subscribe to onchain and offchain notifications for newly received funds.
|
|
128
|
+
*
|
|
129
|
+
* @param eventCallback - Callback invoked when matching funds are detected
|
|
130
|
+
* @returns A function that stops the subscriptions
|
|
131
|
+
*/
|
|
101
132
|
notifyIncomingFunds(eventCallback: (coins: IncomingFunds) => void): Promise<() => void>;
|
|
133
|
+
/** Fetch Arkade transaction ids that are still pending final settlement. */
|
|
102
134
|
fetchPendingTxs(): Promise<string[]>;
|
|
103
135
|
/**
|
|
104
136
|
* Get all pkScript hex strings for the wallet's own addresses
|
|
@@ -108,7 +140,7 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
108
140
|
getWalletScripts(): Promise<string[]>;
|
|
109
141
|
/**
|
|
110
142
|
* Build a map of scriptHex → VtxoScript for all wallet contracts,
|
|
111
|
-
* so
|
|
143
|
+
* so virtual outputs can be extended with the correct tapscript per contract.
|
|
112
144
|
*/
|
|
113
145
|
getScriptMap(): Promise<Map<string, DefaultVtxo.Script | DelegateVtxo.Script>>;
|
|
114
146
|
/**
|
|
@@ -140,28 +172,30 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
140
172
|
*/
|
|
141
173
|
getContractManager(): Promise<ContractManager>;
|
|
142
174
|
private initializeContractManager;
|
|
175
|
+
/** Dispose wallet-owned managers and release background resources. */
|
|
143
176
|
dispose(): Promise<void>;
|
|
177
|
+
/** Async-dispose hook that forwards to `dispose()`. */
|
|
144
178
|
[Symbol.asyncDispose](): Promise<void>;
|
|
145
179
|
}
|
|
146
180
|
/**
|
|
147
|
-
* Main wallet implementation for Bitcoin transactions with
|
|
148
|
-
* The wallet does not store any data locally and relies on
|
|
149
|
-
* providers to fetch
|
|
181
|
+
* Main wallet implementation for Bitcoin transactions with Arkade protocol support.
|
|
182
|
+
* The wallet does not store any data locally and relies on Arkade and onchain
|
|
183
|
+
* providers to fetch onchain and virtual outputs.
|
|
150
184
|
*
|
|
151
185
|
* @example
|
|
152
186
|
* ```typescript
|
|
153
187
|
* // Create a wallet with URL configuration
|
|
154
188
|
* const wallet = await Wallet.create({
|
|
155
|
-
* identity:
|
|
156
|
-
* arkServerUrl: 'https://
|
|
189
|
+
* identity: MnemonicIdentity.fromMnemonic('abandon abandon...'),
|
|
190
|
+
* arkServerUrl: 'https://arkade.computer',
|
|
157
191
|
* esploraUrl: 'https://mempool.space/api'
|
|
158
192
|
* });
|
|
159
193
|
*
|
|
160
194
|
* // Or with custom provider instances (e.g., for Expo/React Native)
|
|
161
195
|
* const wallet = await Wallet.create({
|
|
162
|
-
* identity:
|
|
163
|
-
* arkProvider: new ExpoArkProvider('https://
|
|
164
|
-
* indexerProvider: new ExpoIndexerProvider('https://
|
|
196
|
+
* identity: MnemonicIdentity.fromMnemonic('abandon abandon...'),
|
|
197
|
+
* arkProvider: new ExpoArkProvider('https://arkade.computer'),
|
|
198
|
+
* indexerProvider: new ExpoIndexerProvider('https://arkade.computer'),
|
|
165
199
|
* esploraUrl: 'https://mempool.space/api'
|
|
166
200
|
* });
|
|
167
201
|
*
|
|
@@ -170,9 +204,9 @@ export declare class ReadonlyWallet implements IReadonlyWallet {
|
|
|
170
204
|
* const boardingAddress = await wallet.getBoardingAddress();
|
|
171
205
|
*
|
|
172
206
|
* // Send bitcoin
|
|
173
|
-
* const txid = await wallet.
|
|
174
|
-
* address: '
|
|
175
|
-
* amount: 50000
|
|
207
|
+
* const txid = await wallet.send({
|
|
208
|
+
* address: 'ark1q...',
|
|
209
|
+
* amount: 50000,
|
|
176
210
|
* });
|
|
177
211
|
* ```
|
|
178
212
|
*/
|
|
@@ -189,7 +223,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
189
223
|
private _vtxoManagerInitializing?;
|
|
190
224
|
private _walletAssetManager?;
|
|
191
225
|
/**
|
|
192
|
-
* Async mutex that serializes all operations submitting VTXOs to the
|
|
226
|
+
* Async mutex that serializes all operations submitting VTXOs to the Arkade
|
|
193
227
|
* server (`settle`, `send`, `sendBitcoin`). This prevents VtxoManager's
|
|
194
228
|
* background renewal from racing with user-initiated transactions for the
|
|
195
229
|
* same VTXO inputs.
|
|
@@ -208,6 +242,19 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
208
242
|
get assetManager(): IAssetManager;
|
|
209
243
|
getVtxoManager(): Promise<VtxoManager>;
|
|
210
244
|
dispose(): Promise<void>;
|
|
245
|
+
/**
|
|
246
|
+
* Create a full wallet and initialize its background managers.
|
|
247
|
+
*
|
|
248
|
+
* @param config - Wallet configuration
|
|
249
|
+
* @returns A wallet ready to query balances and send transactions
|
|
250
|
+
* @example
|
|
251
|
+
* ```typescript
|
|
252
|
+
* const wallet = await Wallet.create({
|
|
253
|
+
* identity,
|
|
254
|
+
* arkServerUrl: 'https://arkade.computer',
|
|
255
|
+
* });
|
|
256
|
+
* ```
|
|
257
|
+
*/
|
|
211
258
|
static create(config: WalletConfig): Promise<Wallet>;
|
|
212
259
|
/**
|
|
213
260
|
* Convert this wallet to a readonly wallet.
|
|
@@ -215,7 +262,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
215
262
|
* @returns A readonly wallet with the same configuration but readonly identity
|
|
216
263
|
* @example
|
|
217
264
|
* ```typescript
|
|
218
|
-
* const wallet = await Wallet.create({ identity:
|
|
265
|
+
* const wallet = await Wallet.create({ identity: MnemonicIdentity.fromMnemonic('abandon abandon...'), ... });
|
|
219
266
|
* const readonlyWallet = await wallet.toReadonly();
|
|
220
267
|
*
|
|
221
268
|
* // Can query balance and addresses
|
|
@@ -223,25 +270,36 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
223
270
|
* const address = await readonlyWallet.getAddress();
|
|
224
271
|
*
|
|
225
272
|
* // But cannot send transactions (type error)
|
|
226
|
-
* // readonlyWallet.
|
|
273
|
+
* // readonlyWallet.send(...); // TypeScript error
|
|
227
274
|
* ```
|
|
228
275
|
*/
|
|
229
276
|
toReadonly(): Promise<ReadonlyWallet>;
|
|
277
|
+
/** Returns the delegator manager when delegation support is configured. */
|
|
230
278
|
getDelegatorManager(): Promise<IDelegatorManager | undefined>;
|
|
231
279
|
/**
|
|
232
|
-
*
|
|
233
|
-
*
|
|
280
|
+
* Send bitcoin to an Arkade address.
|
|
281
|
+
*
|
|
282
|
+
* @deprecated Use `send`.
|
|
283
|
+
* @param params - Send parameters
|
|
234
284
|
*/
|
|
235
285
|
sendBitcoin(params: SendBitcoinParams): Promise<string>;
|
|
286
|
+
/**
|
|
287
|
+
* Settle boarding inputs and/or virtual outputs into a finalized mainnet transaction.
|
|
288
|
+
*
|
|
289
|
+
* @param params - Optional settlement inputs and outputs. When omitted, the wallet settles all eligible funds.
|
|
290
|
+
* @param eventCallback - Optional callback invoked for settlement stream events.
|
|
291
|
+
* @returns The finalized Arkade transaction id
|
|
292
|
+
*/
|
|
236
293
|
settle(params?: SettleParams, eventCallback?: (event: SettlementEvent) => void): Promise<string>;
|
|
237
294
|
private _settleImpl;
|
|
238
295
|
private handleSettlementFinalizationEvent;
|
|
239
296
|
/**
|
|
240
|
-
*
|
|
297
|
+
* Create a batch event handler for settlement flows.
|
|
298
|
+
*
|
|
241
299
|
* @param intentId - The intent ID.
|
|
242
|
-
* @param inputs -
|
|
243
|
-
* @param
|
|
244
|
-
* @param
|
|
300
|
+
* @param inputs - Inputs used by the intent.
|
|
301
|
+
* @param expectedRecipients - Expected recipients to validate in the virtual output tree.
|
|
302
|
+
* @param session - Optional musig2 signing session. When omitted, signing steps are skipped.
|
|
245
303
|
*/
|
|
246
304
|
createBatchHandler(intentId: string, inputs: ExtendedCoin[], expectedRecipients: Recipient[], session?: SignerSession): Batch.Handler;
|
|
247
305
|
safeRegisterIntent(intent: SignedIntent<Intent.RegisterMessage>): Promise<string>;
|
|
@@ -251,7 +309,7 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
251
309
|
/**
|
|
252
310
|
* Finalizes pending transactions by retrieving them from the server and finalizing each one.
|
|
253
311
|
* Skips the server check entirely when no send was interrupted (no pending tx flag set).
|
|
254
|
-
* @param vtxos - Optional list of
|
|
312
|
+
* @param vtxos - Optional list of virtual outputs to use instead of retrieving them from the server
|
|
255
313
|
* @returns Array of transaction IDs that were finalized
|
|
256
314
|
*/
|
|
257
315
|
finalizePendingTxs(vtxos?: ExtendedVirtualCoin[]): Promise<{
|
|
@@ -263,24 +321,24 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
263
321
|
/**
|
|
264
322
|
* Send BTC and/or assets to one or more recipients.
|
|
265
323
|
*
|
|
266
|
-
* @param
|
|
267
|
-
* @returns Promise resolving to the
|
|
324
|
+
* @param args - Recipients with their addresses, BTC amounts, and assets
|
|
325
|
+
* @returns Promise resolving to the Arkade transaction ID
|
|
268
326
|
*
|
|
269
327
|
* @example
|
|
270
328
|
* ```typescript
|
|
271
329
|
* const txid = await wallet.send({
|
|
272
|
-
* address: '
|
|
330
|
+
* address: 'ark1q...',
|
|
273
331
|
* amount: 1000, // (optional, default to dust) btc amount to send to the output
|
|
274
332
|
* assets: [{ assetId: 'abc123...', amount: 50 }] // (optional) list of assets to send
|
|
275
333
|
* });
|
|
276
334
|
* ```
|
|
277
335
|
*/
|
|
278
|
-
send(...args: Recipient[]): Promise<string>;
|
|
336
|
+
send(...args: [Recipient, ...Recipient[]]): Promise<string>;
|
|
279
337
|
private _sendImpl;
|
|
280
338
|
/**
|
|
281
339
|
* Build an offchain transaction from the given inputs and outputs,
|
|
282
|
-
* sign it, submit to the
|
|
283
|
-
* @returns The
|
|
340
|
+
* sign it, submit to the Arkade provider, and finalize.
|
|
341
|
+
* @returns The Arkade transaction id and server-signed checkpoint PSBTs (for bookkeeping)
|
|
284
342
|
*/
|
|
285
343
|
buildAndSubmitOffchainTx(inputs: ExtendedVirtualCoin[], outputs: TransactionOutput[]): Promise<{
|
|
286
344
|
arkTxid: string;
|
|
@@ -290,10 +348,10 @@ export declare class Wallet extends ReadonlyWallet implements IWallet {
|
|
|
290
348
|
private updateDbAfterSettle;
|
|
291
349
|
}
|
|
292
350
|
/**
|
|
293
|
-
* Select virtual
|
|
294
|
-
* @param coins List of virtual
|
|
351
|
+
* Select virtual outputs to reach a target amount, prioritizing those closer to expiry
|
|
352
|
+
* @param coins List of virtual outputs to select from
|
|
295
353
|
* @param targetAmount Target amount to reach in satoshis
|
|
296
|
-
* @returns Selected
|
|
354
|
+
* @returns Selected virtual outputs and change amount
|
|
297
355
|
*/
|
|
298
356
|
export declare function selectVirtualCoins(coins: ExtendedVirtualCoin[], targetAmount: number): {
|
|
299
357
|
inputs: ExtendedVirtualCoin[];
|
|
@@ -32,7 +32,7 @@ export declare class AsyncStorageTaskQueue implements TaskQueue {
|
|
|
32
32
|
acknowledgeResults(ids: string[]): Promise<void>;
|
|
33
33
|
/**
|
|
34
34
|
* Persist a config blob alongside the queue data.
|
|
35
|
-
* Used by
|
|
35
|
+
* Used by @see ExpoWallet.setup to store the wallet parameters
|
|
36
36
|
* that the background handler needs to reconstruct providers.
|
|
37
37
|
*/
|
|
38
38
|
persistConfig(config: Record<string, unknown> | object): Promise<void>;
|
|
@@ -4,7 +4,7 @@ export declare const CONTRACT_POLL_TASK_TYPE = "contract-poll";
|
|
|
4
4
|
* Polls the indexer for the latest VTXO state of every contract and
|
|
5
5
|
* persists the results to the wallet repository.
|
|
6
6
|
*
|
|
7
|
-
* Replicates the polling subset of
|
|
7
|
+
* Replicates the polling subset of @see ContractManager.initialize:
|
|
8
8
|
* 1. Load all contracts from the contract repository.
|
|
9
9
|
* 2. Mark expired active contracts as inactive.
|
|
10
10
|
* 3. Paginated fetch of spendable VTXOs from the indexer.
|
|
@@ -20,9 +20,9 @@ export interface TaskDependencies {
|
|
|
20
20
|
* A stateless unit that handles one type of task item.
|
|
21
21
|
*
|
|
22
22
|
* Processors must not keep in-memory state across invocations —
|
|
23
|
-
* all coordination lives in the
|
|
23
|
+
* all coordination lives in the @see TaskQueue and repositories.
|
|
24
24
|
*
|
|
25
|
-
* The `TDeps` parameter defaults to
|
|
25
|
+
* The `TDeps` parameter defaults to @see TaskDependencies but
|
|
26
26
|
* can be overridden for domain-specific processors (e.g. swap processing).
|
|
27
27
|
*/
|
|
28
28
|
export interface TaskProcessor<TDeps = TaskDependencies> {
|
|
@@ -34,7 +34,7 @@ export interface TaskProcessor<TDeps = TaskDependencies> {
|
|
|
34
34
|
*
|
|
35
35
|
* For each task in the inbox:
|
|
36
36
|
* 1. Find the processor whose `taskType` matches `task.type`.
|
|
37
|
-
* 2. Execute it, producing a
|
|
37
|
+
* 2. Execute it, producing a @see TaskResult.
|
|
38
38
|
* 3. Push the result to the outbox and remove the task from the inbox.
|
|
39
39
|
*
|
|
40
40
|
* Tasks with no matching processor produce a `"noop"` result.
|
|
@@ -42,7 +42,7 @@ export interface TaskProcessor<TDeps = TaskDependencies> {
|
|
|
42
42
|
*/
|
|
43
43
|
export declare function runTasks<TDeps = TaskDependencies>(queue: TaskQueue, processors: TaskProcessor<TDeps>[], deps: TDeps): Promise<TaskResult[]>;
|
|
44
44
|
/**
|
|
45
|
-
* Options for
|
|
45
|
+
* Options for @see createTaskDependencies.
|
|
46
46
|
*/
|
|
47
47
|
export interface CreateTaskDependenciesOptions {
|
|
48
48
|
walletRepository: WalletRepository;
|
|
@@ -52,8 +52,8 @@ export interface CreateTaskDependenciesOptions {
|
|
|
52
52
|
offchainTapscript: ReadonlyWallet["offchainTapscript"];
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
|
-
* Build the
|
|
56
|
-
* (e.g.
|
|
55
|
+
* Build the @see TaskDependencies needed by task processors
|
|
56
|
+
* (e.g. `src/worker/expo/processors/contractPollProcessor.ts`)
|
|
57
57
|
*
|
|
58
58
|
* This is the same construction that `defineExpoBackgroundTask` does
|
|
59
59
|
* internally, extracted so that consumers with custom schedulers
|
|
@@ -22,9 +22,8 @@ export interface MessageHandler<REQ extends RequestEnvelope = RequestEnvelope, R
|
|
|
22
22
|
readonly messageTag: string;
|
|
23
23
|
/**
|
|
24
24
|
* Called once when the SW is starting up
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
27
|
-
* @param opts.readonlyWallet Read-only Wallet
|
|
25
|
+
* @param services - Providers and wallet instances available to the handler.
|
|
26
|
+
* @param repositories - Repositories available to the handler.
|
|
28
27
|
**/
|
|
29
28
|
start(services: {
|
|
30
29
|
arkProvider: ArkProvider;
|
|
@@ -91,8 +90,11 @@ export declare class MessageBus {
|
|
|
91
90
|
private initialized;
|
|
92
91
|
private readonly buildServicesFn;
|
|
93
92
|
private readonly boundOnMessage;
|
|
93
|
+
/** Create the service-worker message bus with repositories and handler configuration. */
|
|
94
94
|
constructor(walletRepository: WalletRepository, contractRepository: ContractRepository, { messageHandlers, tickIntervalMs, messageTimeoutMs, debug, buildServices, }: Options);
|
|
95
|
+
/** Start the message bus and attach service-worker event listeners. */
|
|
95
96
|
start(): Promise<void>;
|
|
97
|
+
/** Stop the message bus, cancel ticks, and stop all registered handlers. */
|
|
96
98
|
stop(): Promise<void>;
|
|
97
99
|
private scheduleNextTick;
|
|
98
100
|
private runTick;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arkade-os/sdk",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.4.16",
|
|
4
|
+
"description": "TypeScript SDK for building Bitcoin wallets using the Arkade protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
7
7
|
"module": "./dist/esm/index.js",
|
|
@@ -130,12 +130,20 @@
|
|
|
130
130
|
}
|
|
131
131
|
},
|
|
132
132
|
"keywords": [
|
|
133
|
-
"bitcoin",
|
|
134
|
-
"wallet",
|
|
135
|
-
"taproot",
|
|
136
133
|
"ark",
|
|
134
|
+
"arkade",
|
|
135
|
+
"bip39",
|
|
136
|
+
"bitcoin",
|
|
137
|
+
"btc",
|
|
138
|
+
"crypto",
|
|
139
|
+
"lightning",
|
|
137
140
|
"sdk",
|
|
138
|
-
"
|
|
141
|
+
"stablecoin",
|
|
142
|
+
"taproot",
|
|
143
|
+
"typescript",
|
|
144
|
+
"utxo",
|
|
145
|
+
"vtxo",
|
|
146
|
+
"wallet"
|
|
139
147
|
],
|
|
140
148
|
"author": "Ark Labs",
|
|
141
149
|
"license": "MIT",
|
|
@@ -159,11 +167,11 @@
|
|
|
159
167
|
"test:master": "ARK_ENV=master vitest run",
|
|
160
168
|
"test:unit": "vitest run --exclude test/e2e",
|
|
161
169
|
"test:setup": "node test/setup.mjs",
|
|
162
|
-
"regtest": "
|
|
170
|
+
"regtest:start": "./regtest/start-env.sh",
|
|
171
|
+
"regtest:stop": "./regtest/stop-env.sh",
|
|
172
|
+
"regtest:clean": "./regtest/clean-env.sh",
|
|
173
|
+
"regtest": "pnpm regtest:clean && pnpm regtest:start && pnpm test:setup-docker",
|
|
163
174
|
"test:setup-docker": "node test/setup.mjs docker",
|
|
164
|
-
"test:build-docker": "docker compose -f docker-compose.yml build --no-cache",
|
|
165
|
-
"test:up-docker": "docker compose -f docker-compose.yml up -d",
|
|
166
|
-
"test:down-docker": "docker compose -f docker-compose.yml down",
|
|
167
175
|
"test:integration": "vitest run test/e2e/**",
|
|
168
176
|
"test:integration-docker": "ARK_ENV=docker vitest run test/e2e/**",
|
|
169
177
|
"test:watch": "vitest",
|