@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
|
@@ -182,6 +182,13 @@ class ServiceWorkerReadonlyWallet {
|
|
|
182
182
|
getTimeoutForRequest(request) {
|
|
183
183
|
return this.messageTimeouts[request.type] ?? 30000;
|
|
184
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Create a readonly service-worker wallet bound to an already-registered worker.
|
|
187
|
+
*
|
|
188
|
+
* @param options - Service worker, identity, and backend configuration
|
|
189
|
+
* @returns Initialized readonly service-worker wallet
|
|
190
|
+
* @throws Error if service-worker initialization fails
|
|
191
|
+
*/
|
|
185
192
|
static async create(options) {
|
|
186
193
|
const walletRepository = options.storage?.walletRepository ??
|
|
187
194
|
new repositories_1.IndexedDBWalletRepository();
|
|
@@ -242,23 +249,17 @@ class ServiceWorkerReadonlyWallet {
|
|
|
242
249
|
return wallet;
|
|
243
250
|
}
|
|
244
251
|
/**
|
|
245
|
-
* Simplified setup method that handles service worker registration
|
|
246
|
-
*
|
|
252
|
+
* Simplified setup method that handles service worker registration
|
|
253
|
+
* and wallet initialization automatically.
|
|
254
|
+
*
|
|
255
|
+
* @see ServiceWorkerReadonlyWallet.create
|
|
247
256
|
*
|
|
248
257
|
* @example
|
|
249
258
|
* ```typescript
|
|
250
|
-
* // One-liner setup - handles everything automatically!
|
|
251
259
|
* const wallet = await ServiceWorkerReadonlyWallet.setup({
|
|
252
260
|
* serviceWorkerPath: '/service-worker.js',
|
|
253
|
-
* arkServerUrl: 'https://
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* // With custom readonly identity
|
|
257
|
-
* const identity = ReadonlySingleKey.fromPublicKey('your_public_key_hex');
|
|
258
|
-
* const wallet = await ServiceWorkerReadonlyWallet.setup({
|
|
259
|
-
* serviceWorkerPath: '/service-worker.js',
|
|
260
|
-
* arkServerUrl: 'https://mutinynet.arkade.sh',
|
|
261
|
-
* identity
|
|
261
|
+
* arkServerUrl: 'https://arkade.computer',
|
|
262
|
+
* identity: ReadonlySingleKey.fromPublicKey('your_public_key_hex')
|
|
262
263
|
* });
|
|
263
264
|
* ```
|
|
264
265
|
*/
|
|
@@ -460,6 +461,7 @@ class ServiceWorkerReadonlyWallet {
|
|
|
460
461
|
});
|
|
461
462
|
return this.reinitPromise;
|
|
462
463
|
}
|
|
464
|
+
/** Clear cached wallet state from both the page and service worker storage. */
|
|
463
465
|
async clear() {
|
|
464
466
|
const message = {
|
|
465
467
|
id: (0, utils_2.getRandomId)(),
|
|
@@ -532,6 +534,11 @@ class ServiceWorkerReadonlyWallet {
|
|
|
532
534
|
throw new Error(`Failed to get boarding UTXOs: ${error}`);
|
|
533
535
|
}
|
|
534
536
|
}
|
|
537
|
+
/**
|
|
538
|
+
* Return service-worker wallet status, including connectivity and sync state.
|
|
539
|
+
*
|
|
540
|
+
* @returns Current service-worker wallet status payload including `walletInitalized` and `xOnlyPublicKey`
|
|
541
|
+
*/
|
|
535
542
|
async getStatus() {
|
|
536
543
|
const message = {
|
|
537
544
|
id: (0, utils_2.getRandomId)(),
|
|
@@ -576,6 +583,11 @@ class ServiceWorkerReadonlyWallet {
|
|
|
576
583
|
throw new Error(`Failed to get vtxos: ${error}`);
|
|
577
584
|
}
|
|
578
585
|
}
|
|
586
|
+
/**
|
|
587
|
+
* Trigger a wallet reload inside the service worker.
|
|
588
|
+
*
|
|
589
|
+
* @returns `true` when the wallet was reloaded
|
|
590
|
+
*/
|
|
579
591
|
async reload() {
|
|
580
592
|
const message = {
|
|
581
593
|
id: (0, utils_2.getRandomId)(),
|
|
@@ -855,23 +867,15 @@ class ServiceWorkerWallet extends ServiceWorkerReadonlyWallet {
|
|
|
855
867
|
return wallet;
|
|
856
868
|
}
|
|
857
869
|
/**
|
|
858
|
-
* Simplified setup method that handles service worker registration
|
|
859
|
-
*
|
|
870
|
+
* Simplified setup method that handles service worker registration
|
|
871
|
+
* and wallet initialization automatically.
|
|
860
872
|
*
|
|
861
873
|
* @example
|
|
862
874
|
* ```typescript
|
|
863
|
-
* // One-liner setup - handles everything automatically!
|
|
864
|
-
* const wallet = await ServiceWorkerWallet.setup({
|
|
865
|
-
* serviceWorkerPath: '/service-worker.js',
|
|
866
|
-
* arkServerUrl: 'https://mutinynet.arkade.sh'
|
|
867
|
-
* });
|
|
868
|
-
*
|
|
869
|
-
* // With custom identity
|
|
870
|
-
* const identity = SingleKey.fromHex('your_private_key_hex');
|
|
871
875
|
* const wallet = await ServiceWorkerWallet.setup({
|
|
872
876
|
* serviceWorkerPath: '/service-worker.js',
|
|
873
|
-
* arkServerUrl: 'https://
|
|
874
|
-
* identity
|
|
877
|
+
* arkServerUrl: 'https://arkade.computer',
|
|
878
|
+
* identity: MnemonicIdentity.fromMnemonic('abandon abandon...')
|
|
875
879
|
* });
|
|
876
880
|
* ```
|
|
877
881
|
*/
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Unroll = void 0;
|
|
4
4
|
const base_1 = require("@scure/base");
|
|
5
5
|
const btc_signer_1 = require("@scure/btc-signer");
|
|
6
|
+
const helpers_1 = require("../contracts/handlers/helpers");
|
|
6
7
|
const indexer_1 = require("../providers/indexer");
|
|
7
8
|
const base_2 = require("../script/base");
|
|
8
9
|
const txSizeEstimator_1 = require("../utils/txSizeEstimator");
|
|
@@ -18,7 +19,7 @@ var Unroll;
|
|
|
18
19
|
StepType[StepType["DONE"] = 2] = "DONE";
|
|
19
20
|
})(StepType = Unroll.StepType || (Unroll.StepType = {}));
|
|
20
21
|
/**
|
|
21
|
-
* Manages the unrolling process of a
|
|
22
|
+
* Manages the unrolling process of a virtual output back to the Bitcoin blockchain.
|
|
22
23
|
*
|
|
23
24
|
* The Session class implements an async iterator that processes the unrolling steps:
|
|
24
25
|
* 1. **WAIT**: Waits for a transaction to be confirmed onchain (if it's in mempool)
|
|
@@ -42,19 +43,21 @@ var Unroll;
|
|
|
42
43
|
* console.log(`Broadcasting transaction ${doneStep.tx.id}`);
|
|
43
44
|
* break;
|
|
44
45
|
* case Unroll.StepType.DONE:
|
|
45
|
-
* console.log(`Unrolling complete for
|
|
46
|
+
* console.log(`Unrolling complete for virtual output ${doneStep.vtxoTxid}`);
|
|
46
47
|
* break;
|
|
47
48
|
* }
|
|
48
49
|
* }
|
|
49
50
|
* ```
|
|
50
51
|
**/
|
|
51
52
|
class Session {
|
|
53
|
+
/** Create an unroll session from a virtual output outpoint and its dependency chain. */
|
|
52
54
|
constructor(toUnroll, bumper, explorer, indexer) {
|
|
53
55
|
this.toUnroll = toUnroll;
|
|
54
56
|
this.bumper = bumper;
|
|
55
57
|
this.explorer = explorer;
|
|
56
58
|
this.indexer = indexer;
|
|
57
59
|
}
|
|
60
|
+
/** Create an unroll session by loading the virtual output chain from the indexer. */
|
|
58
61
|
static async create(toUnroll, bumper, explorer, indexer) {
|
|
59
62
|
const { chain } = await indexer.getVtxoChain(toUnroll);
|
|
60
63
|
return new Session({ ...toUnroll, chain }, bumper, explorer, indexer);
|
|
@@ -123,7 +126,7 @@ var Unroll;
|
|
|
123
126
|
});
|
|
124
127
|
}
|
|
125
128
|
else {
|
|
126
|
-
// finalize
|
|
129
|
+
// finalize Arkade transaction
|
|
127
130
|
tx.finalize();
|
|
128
131
|
}
|
|
129
132
|
return {
|
|
@@ -153,11 +156,11 @@ var Unroll;
|
|
|
153
156
|
}
|
|
154
157
|
Unroll.Session = Session;
|
|
155
158
|
/**
|
|
156
|
-
* Complete the unroll of a
|
|
157
|
-
* @param wallet the wallet owning the
|
|
158
|
-
* @param vtxoTxids the txids of the
|
|
159
|
+
* Complete the unroll of a virtual output by broadcasting the transaction that spends the CSV path.
|
|
160
|
+
* @param wallet the wallet owning the virtual output(s)
|
|
161
|
+
* @param vtxoTxids the txids of the virtual output(s) to complete unroll
|
|
159
162
|
* @param outputAddress the address to send the unrolled funds to
|
|
160
|
-
* @throws if the
|
|
163
|
+
* @throws if the virtual output(s) are not fully unrolled, if the txids are not found, if the tx is not confirmed, if no exit path is found or not available
|
|
161
164
|
* @returns the txid of the transaction spending the unrolled funds
|
|
162
165
|
*/
|
|
163
166
|
async function completeUnroll(wallet, vtxoTxids, outputAddress) {
|
|
@@ -187,11 +190,12 @@ var Unroll;
|
|
|
187
190
|
throw new Error(`spending leaf not found for vtxo ${vtxo.txid}:${vtxo.vout}`);
|
|
188
191
|
}
|
|
189
192
|
totalAmount += BigInt(vtxo.value);
|
|
193
|
+
const sequence = (0, helpers_1.timelockToSequence)(exit.params.timelock);
|
|
190
194
|
inputs.push({
|
|
191
195
|
txid: vtxo.txid,
|
|
192
196
|
index: vtxo.vout,
|
|
193
197
|
tapLeafScript: [spendingLeaf],
|
|
194
|
-
sequence
|
|
198
|
+
sequence,
|
|
195
199
|
witnessUtxo: {
|
|
196
200
|
amount: BigInt(vtxo.value),
|
|
197
201
|
script: base_2.VtxoScript.decode(vtxo.tapTree).pkScript,
|
package/dist/cjs/wallet/utils.js
CHANGED
|
@@ -61,7 +61,7 @@ function validateRecipients(recipients, dustAmount) {
|
|
|
61
61
|
address = __1.ArkAddress.decode(recipient.address);
|
|
62
62
|
}
|
|
63
63
|
catch (e) {
|
|
64
|
-
throw new Error(`Invalid
|
|
64
|
+
throw new Error(`Invalid Arkade address: ${recipient.address}`);
|
|
65
65
|
}
|
|
66
66
|
const amount = recipient.amount || dustAmount;
|
|
67
67
|
if (amount <= 0) {
|