@arkade-os/sdk 0.4.45 → 0.4.46
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/dist/adapters/expo.cjs +5 -5
- package/dist/adapters/expo.d.cts +2 -2
- package/dist/adapters/expo.d.ts +2 -2
- package/dist/adapters/expo.js +3 -3
- package/dist/adapters/indexedDB.cjs +5 -5
- package/dist/adapters/indexedDB.js +4 -4
- package/dist/{ark-C-PjOngm.d.cts → ark-C9ognsOV.d.cts} +6 -2
- package/dist/{ark-C-PjOngm.d.ts → ark-C9ognsOV.d.ts} +6 -2
- package/dist/{asyncStorageTaskQueue-CHpI3moJ.d.ts → asyncStorageTaskQueue-BAKZ5cS5.d.ts} +1 -1
- package/dist/{asyncStorageTaskQueue-BmBPvTyh.d.cts → asyncStorageTaskQueue-CmBYVlxw.d.cts} +1 -1
- package/dist/{chunk-32YKLQPS.cjs → chunk-4KXOCVXP.cjs} +32 -29
- package/dist/chunk-4KXOCVXP.cjs.map +1 -0
- package/dist/{chunk-OFQGANH2.cjs → chunk-6TQJOD72.cjs} +7 -7
- package/dist/{chunk-OFQGANH2.cjs.map → chunk-6TQJOD72.cjs.map} +1 -1
- package/dist/{chunk-UHOHLN3C.cjs → chunk-7IYIFMF4.cjs} +63 -14
- package/dist/chunk-7IYIFMF4.cjs.map +1 -0
- package/dist/{chunk-YBQV7XBC.js → chunk-CWJ7ZCP7.js} +57 -10
- package/dist/chunk-CWJ7ZCP7.js.map +1 -0
- package/dist/{chunk-SRCWBFSZ.cjs → chunk-D46YDM36.cjs} +282 -212
- package/dist/chunk-D46YDM36.cjs.map +1 -0
- package/dist/{chunk-BE5MUB7T.js → chunk-FWG4TSPN.js} +7 -2
- package/dist/chunk-FWG4TSPN.js.map +1 -0
- package/dist/{chunk-BOA4SHCD.js → chunk-JTCQ6QXQ.js} +4 -4
- package/dist/{chunk-BOA4SHCD.js.map → chunk-JTCQ6QXQ.js.map} +1 -1
- package/dist/{chunk-HXDZ2QTW.cjs → chunk-MQB5H4X5.cjs} +7 -2
- package/dist/chunk-MQB5H4X5.cjs.map +1 -0
- package/dist/{chunk-TGRJ5WAX.js → chunk-P6VBP3CT.js} +80 -10
- package/dist/chunk-P6VBP3CT.js.map +1 -0
- package/dist/{chunk-YNEDJTX2.js → chunk-QKC2T54O.js} +6 -3
- package/dist/chunk-QKC2T54O.js.map +1 -0
- package/dist/{chunk-QZ6HZZZK.js → chunk-R2SVAM5Q.js} +3 -3
- package/dist/{chunk-QZ6HZZZK.js.map → chunk-R2SVAM5Q.js.map} +1 -1
- package/dist/{chunk-HZ7VIN7P.cjs → chunk-SOXGAA52.cjs} +14 -14
- package/dist/{chunk-HZ7VIN7P.cjs.map → chunk-SOXGAA52.cjs.map} +1 -1
- package/dist/contracts/handlers/index.cjs +7 -7
- package/dist/contracts/handlers/index.d.cts +3 -3
- package/dist/contracts/handlers/index.d.ts +3 -3
- package/dist/contracts/handlers/index.js +2 -2
- package/dist/{delegate-DOEobYwH.d.cts → delegate-DVEgyRwI.d.cts} +1 -1
- package/dist/{delegate-BKNqva1j.d.ts → delegate-aOd5qINr.d.ts} +1 -1
- package/dist/{index-Cm2fGeox.d.ts → index-CPzL4tqg.d.ts} +2 -2
- package/dist/{index-BlW4I30l.d.cts → index-D8vmtWWO.d.cts} +2 -2
- package/dist/index.cjs +167 -159
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +4 -4
- package/dist/repositories/realm/index.cjs +23 -19
- package/dist/repositories/realm/index.cjs.map +1 -1
- package/dist/repositories/realm/index.d.cts +2 -2
- package/dist/repositories/realm/index.d.ts +2 -2
- package/dist/repositories/realm/index.js +9 -5
- package/dist/repositories/realm/index.js.map +1 -1
- package/dist/repositories/sqlite/index.cjs +22 -18
- package/dist/repositories/sqlite/index.cjs.map +1 -1
- package/dist/repositories/sqlite/index.d.cts +2 -2
- package/dist/repositories/sqlite/index.d.ts +2 -2
- package/dist/repositories/sqlite/index.js +9 -5
- package/dist/repositories/sqlite/index.js.map +1 -1
- package/dist/{taskRunner-BngWSFMi.d.ts → taskRunner-B48-V-Pb.d.ts} +1 -1
- package/dist/{taskRunner-DOiyRuJa.d.cts → taskRunner-nNecmQ2C.d.cts} +1 -1
- package/dist/wallet/expo/background.cjs +14 -14
- package/dist/wallet/expo/background.d.cts +3 -3
- package/dist/wallet/expo/background.d.ts +3 -3
- package/dist/wallet/expo/background.js +6 -6
- package/dist/wallet/expo/index.cjs +18 -14
- package/dist/wallet/expo/index.cjs.map +1 -1
- package/dist/wallet/expo/index.d.cts +4 -4
- package/dist/wallet/expo/index.d.ts +4 -4
- package/dist/wallet/expo/index.js +9 -5
- package/dist/wallet/expo/index.js.map +1 -1
- package/dist/{wallet-DBjumS42.d.cts → wallet-BUg3D4WJ.d.cts} +37 -3
- package/dist/{wallet-B3awP1Nj.d.ts → wallet-DM0oShTu.d.ts} +37 -3
- package/dist/worker/expo/index.cjs +10 -9
- package/dist/worker/expo/index.cjs.map +1 -1
- package/dist/worker/expo/index.d.cts +4 -4
- package/dist/worker/expo/index.d.ts +4 -4
- package/dist/worker/expo/index.js +6 -5
- package/dist/worker/expo/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-32YKLQPS.cjs.map +0 -1
- package/dist/chunk-BE5MUB7T.js.map +0 -1
- package/dist/chunk-HXDZ2QTW.cjs.map +0 -1
- package/dist/chunk-SRCWBFSZ.cjs.map +0 -1
- package/dist/chunk-TGRJ5WAX.js.map +0 -1
- package/dist/chunk-UHOHLN3C.cjs.map +0 -1
- package/dist/chunk-YBQV7XBC.js.map +0 -1
- package/dist/chunk-YNEDJTX2.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunk7IYIFMF4_cjs = require('./chunk-7IYIFMF4.cjs');
|
|
4
|
+
var chunk4KXOCVXP_cjs = require('./chunk-4KXOCVXP.cjs');
|
|
5
|
+
var chunkMQB5H4X5_cjs = require('./chunk-MQB5H4X5.cjs');
|
|
6
6
|
var utils_js = require('@scure/btc-signer/utils.js');
|
|
7
7
|
var btcSigner = require('@scure/btc-signer');
|
|
8
8
|
var base = require('@scure/base');
|
|
@@ -84,6 +84,8 @@ var PartialSig = class _PartialSig {
|
|
|
84
84
|
throw new PartialSignatureError("Invalid R length");
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
+
s;
|
|
88
|
+
R;
|
|
87
89
|
/**
|
|
88
90
|
* Encodes the partial signature into bytes
|
|
89
91
|
* Returns a 32-byte array containing just the s value
|
|
@@ -133,6 +135,7 @@ var TreeSignerSession = class _TreeSignerSession {
|
|
|
133
135
|
constructor(secretKey) {
|
|
134
136
|
this.secretKey = secretKey;
|
|
135
137
|
}
|
|
138
|
+
secretKey;
|
|
136
139
|
static NOT_INITIALIZED = new Error("session not initialized, call init method");
|
|
137
140
|
myNonces = null;
|
|
138
141
|
aggregateNonces = null;
|
|
@@ -181,7 +184,7 @@ var TreeSignerSession = class _TreeSignerSession {
|
|
|
181
184
|
noncesByPubkey.set(base.hex.encode(myPublicKey.subarray(1)), myNonce);
|
|
182
185
|
const tx = this.graph.find(txid);
|
|
183
186
|
if (!tx) throw new Error(`missing tx for txid ${txid}`);
|
|
184
|
-
const cosigners =
|
|
187
|
+
const cosigners = chunk7IYIFMF4_cjs.getArkPsbtFields(tx.root, 0, chunk7IYIFMF4_cjs.CosignerPublicKey).map(
|
|
185
188
|
(c) => base.hex.encode(c.key.subarray(1))
|
|
186
189
|
// xonly pubkey
|
|
187
190
|
);
|
|
@@ -233,7 +236,7 @@ var TreeSignerSession = class _TreeSignerSession {
|
|
|
233
236
|
if (!aggNonce) throw new Error("missing aggregate nonce");
|
|
234
237
|
const prevoutAmounts = [];
|
|
235
238
|
const prevoutScripts = [];
|
|
236
|
-
const cosigners =
|
|
239
|
+
const cosigners = chunk7IYIFMF4_cjs.getArkPsbtFields(g.root, 0, chunk7IYIFMF4_cjs.CosignerPublicKey).map((c) => c.key);
|
|
237
240
|
const { finalKey } = aggregateKeys(cosigners, true, {
|
|
238
241
|
taprootTweak: this.scriptRoot
|
|
239
242
|
});
|
|
@@ -359,6 +362,7 @@ var ReadonlySingleKey = class _ReadonlySingleKey {
|
|
|
359
362
|
throw new Error("Invalid public key length");
|
|
360
363
|
}
|
|
361
364
|
}
|
|
365
|
+
publicKey;
|
|
362
366
|
/**
|
|
363
367
|
* Create a ReadonlySingleKey from a compressed public key.
|
|
364
368
|
*
|
|
@@ -411,7 +415,7 @@ var SeedIdentity = class _SeedIdentity {
|
|
|
411
415
|
let network;
|
|
412
416
|
if ("descriptor" in opts && typeof opts.descriptor === "string") {
|
|
413
417
|
descriptor = opts.descriptor;
|
|
414
|
-
network =
|
|
418
|
+
network = chunk4KXOCVXP_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
|
|
415
419
|
} else {
|
|
416
420
|
network = opts.isMainnet ?? true ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
|
|
417
421
|
descriptor = descriptorsScure.scriptExpressions.trBIP32({
|
|
@@ -496,7 +500,7 @@ var SeedIdentity = class _SeedIdentity {
|
|
|
496
500
|
* `StaticDescriptorProvider` for legacy single-key wallets.
|
|
497
501
|
*/
|
|
498
502
|
isOurs(descriptor) {
|
|
499
|
-
return
|
|
503
|
+
return chunk4KXOCVXP_cjs.descriptorIsOurs(descriptor, this.descriptor, utils_js.pubSchnorr(this.derivedKey));
|
|
500
504
|
}
|
|
501
505
|
/**
|
|
502
506
|
* Signs each request with the key derived from its descriptor.
|
|
@@ -533,7 +537,7 @@ var SeedIdentity = class _SeedIdentity {
|
|
|
533
537
|
}
|
|
534
538
|
// ── internal helpers ─────────────────────────────────────────────
|
|
535
539
|
derivePrivateKeyForDescriptor(descriptor) {
|
|
536
|
-
const network =
|
|
540
|
+
const network = chunk4KXOCVXP_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
|
|
537
541
|
const expansion = descriptorsScure.expand({ descriptor, network });
|
|
538
542
|
if (expansion.isRanged) {
|
|
539
543
|
throw new Error(
|
|
@@ -619,7 +623,7 @@ var ReadonlyDescriptorIdentity = class _ReadonlyDescriptorIdentity {
|
|
|
619
623
|
*/
|
|
620
624
|
descriptor;
|
|
621
625
|
constructor(descriptor) {
|
|
622
|
-
const network =
|
|
626
|
+
const network = chunk4KXOCVXP_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
|
|
623
627
|
let expansion;
|
|
624
628
|
try {
|
|
625
629
|
expansion = descriptorsScure.expand({ descriptor, network, index: 0 });
|
|
@@ -669,7 +673,7 @@ var ReadonlyDescriptorIdentity = class _ReadonlyDescriptorIdentity {
|
|
|
669
673
|
* `StaticDescriptorProvider` for legacy single-key wallets.
|
|
670
674
|
*/
|
|
671
675
|
isOurs(descriptor) {
|
|
672
|
-
return
|
|
676
|
+
return chunk4KXOCVXP_cjs.descriptorIsOurs(descriptor, this.descriptor, this.indexZero.pubkey);
|
|
673
677
|
}
|
|
674
678
|
};
|
|
675
679
|
function serializeSeedOwnedSigningIdentity(identity) {
|
|
@@ -970,6 +974,7 @@ var RestDelegateProvider = class {
|
|
|
970
974
|
constructor(url) {
|
|
971
975
|
this.url = url;
|
|
972
976
|
}
|
|
977
|
+
url;
|
|
973
978
|
/**
|
|
974
979
|
* Submit a delegation request to the remote delegation service.
|
|
975
980
|
*
|
|
@@ -980,14 +985,14 @@ var RestDelegateProvider = class {
|
|
|
980
985
|
*/
|
|
981
986
|
async delegate(intent, forfeitTxs, options) {
|
|
982
987
|
const url = `${this.url}/v1/delegate`;
|
|
983
|
-
const response = await
|
|
988
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(url, {
|
|
984
989
|
method: "POST",
|
|
985
990
|
headers: {
|
|
986
991
|
"Content-Type": "application/json"
|
|
987
992
|
},
|
|
988
993
|
body: JSON.stringify({
|
|
989
994
|
intent: {
|
|
990
|
-
message:
|
|
995
|
+
message: chunk7IYIFMF4_cjs.Intent.encodeMessage(intent.message),
|
|
991
996
|
proof: intent.proof
|
|
992
997
|
},
|
|
993
998
|
forfeit_txs: forfeitTxs,
|
|
@@ -1007,7 +1012,7 @@ var RestDelegateProvider = class {
|
|
|
1007
1012
|
*/
|
|
1008
1013
|
async getDelegateInfo() {
|
|
1009
1014
|
const url = `${this.url}/v1/delegator/info`;
|
|
1010
|
-
const response = await
|
|
1015
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(url);
|
|
1011
1016
|
if (!response.ok) {
|
|
1012
1017
|
const errorText2 = await response.text();
|
|
1013
1018
|
throw new Error(`Failed to get delegate info: ${errorText2}`);
|
|
@@ -1034,22 +1039,23 @@ var ESPLORA_URL = {
|
|
|
1034
1039
|
regtest: "http://localhost:3000/api"
|
|
1035
1040
|
};
|
|
1036
1041
|
var EsploraProvider = class {
|
|
1037
|
-
constructor(baseUrl = ESPLORA_URL[
|
|
1042
|
+
constructor(baseUrl = ESPLORA_URL[chunkMQB5H4X5_cjs.DEFAULT_NETWORK_NAME], opts) {
|
|
1038
1043
|
this.baseUrl = baseUrl;
|
|
1039
1044
|
this.pollingInterval = opts?.pollingInterval ?? 15e3;
|
|
1040
1045
|
this.forcePolling = opts?.forcePolling ?? false;
|
|
1041
1046
|
}
|
|
1047
|
+
baseUrl;
|
|
1042
1048
|
pollingInterval;
|
|
1043
1049
|
forcePolling;
|
|
1044
1050
|
async getCoins(address) {
|
|
1045
|
-
const response = await
|
|
1051
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/address/${address}/utxo`);
|
|
1046
1052
|
if (!response.ok) {
|
|
1047
1053
|
throw new Error(`Failed to fetch UTXOs: ${response.statusText}`);
|
|
1048
1054
|
}
|
|
1049
1055
|
return response.json();
|
|
1050
1056
|
}
|
|
1051
1057
|
async getFeeRate() {
|
|
1052
|
-
const response = await
|
|
1058
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/fee-estimates`);
|
|
1053
1059
|
if (response.status === 404) {
|
|
1054
1060
|
return void 0;
|
|
1055
1061
|
}
|
|
@@ -1070,7 +1076,7 @@ var EsploraProvider = class {
|
|
|
1070
1076
|
}
|
|
1071
1077
|
}
|
|
1072
1078
|
async getTxOutspends(txid) {
|
|
1073
|
-
const response = await
|
|
1079
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/outspends`);
|
|
1074
1080
|
if (!response.ok) {
|
|
1075
1081
|
const error = await response.text();
|
|
1076
1082
|
throw new Error(`Failed to get transaction outspends: ${error}`);
|
|
@@ -1078,7 +1084,7 @@ var EsploraProvider = class {
|
|
|
1078
1084
|
return response.json();
|
|
1079
1085
|
}
|
|
1080
1086
|
async getTransactions(address) {
|
|
1081
|
-
const response = await
|
|
1087
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/address/${address}/txs`);
|
|
1082
1088
|
if (!response.ok) {
|
|
1083
1089
|
const error = await response.text();
|
|
1084
1090
|
throw new Error(`Failed to get transactions: ${error}`);
|
|
@@ -1086,7 +1092,7 @@ var EsploraProvider = class {
|
|
|
1086
1092
|
return response.json();
|
|
1087
1093
|
}
|
|
1088
1094
|
async getTxStatus(txid) {
|
|
1089
|
-
const txresponse = await
|
|
1095
|
+
const txresponse = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/tx/${txid}`);
|
|
1090
1096
|
if (!txresponse.ok) {
|
|
1091
1097
|
throw new Error(txresponse.statusText);
|
|
1092
1098
|
}
|
|
@@ -1094,7 +1100,7 @@ var EsploraProvider = class {
|
|
|
1094
1100
|
if (!tx.status.confirmed) {
|
|
1095
1101
|
return { confirmed: false };
|
|
1096
1102
|
}
|
|
1097
|
-
const response = await
|
|
1103
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/tx/${txid}/status`);
|
|
1098
1104
|
if (!response.ok) {
|
|
1099
1105
|
throw new Error(`Failed to get transaction status: ${response.statusText}`);
|
|
1100
1106
|
}
|
|
@@ -1178,7 +1184,7 @@ var EsploraProvider = class {
|
|
|
1178
1184
|
return stopFunc;
|
|
1179
1185
|
}
|
|
1180
1186
|
async getChainTip() {
|
|
1181
|
-
const tipBlocks = await
|
|
1187
|
+
const tipBlocks = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/blocks`);
|
|
1182
1188
|
if (!tipBlocks.ok) {
|
|
1183
1189
|
throw new Error(`Failed to get chain tip: ${tipBlocks.statusText}`);
|
|
1184
1190
|
}
|
|
@@ -1197,7 +1203,7 @@ var EsploraProvider = class {
|
|
|
1197
1203
|
};
|
|
1198
1204
|
}
|
|
1199
1205
|
async broadcastPackage(parent, child) {
|
|
1200
|
-
const response = await
|
|
1206
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/txs/package`, {
|
|
1201
1207
|
method: "POST",
|
|
1202
1208
|
headers: {
|
|
1203
1209
|
"Content-Type": "application/json"
|
|
@@ -1211,7 +1217,7 @@ var EsploraProvider = class {
|
|
|
1211
1217
|
return response.json();
|
|
1212
1218
|
}
|
|
1213
1219
|
async broadcastTx(tx) {
|
|
1214
|
-
const response = await
|
|
1220
|
+
const response = await chunk7IYIFMF4_cjs.baseFetch(`${this.baseUrl}/tx`, {
|
|
1215
1221
|
method: "POST",
|
|
1216
1222
|
headers: {
|
|
1217
1223
|
"Content-Type": "text/plain"
|
|
@@ -1373,7 +1379,7 @@ function findP2AOutput(tx) {
|
|
|
1373
1379
|
var CHILD_DUST_AMOUNT = 546;
|
|
1374
1380
|
function buildAnchorChild(params) {
|
|
1375
1381
|
const { parent, feeRate, fundingCoins, changeAddress, tapInternalKey, network } = params;
|
|
1376
|
-
const child = new
|
|
1382
|
+
const child = new chunk7IYIFMF4_cjs.Transaction({ version: 3, allowLegacyWitnessUtxo: true });
|
|
1377
1383
|
child.addInput(findP2AOutput(parent));
|
|
1378
1384
|
const estimator = TxWeightEstimator.create().addP2AInput();
|
|
1379
1385
|
for (const _ of fundingCoins) {
|
|
@@ -1421,7 +1427,7 @@ function buildForfeitTx(inputs, forfeitPkScript, txLocktime) {
|
|
|
1421
1427
|
);
|
|
1422
1428
|
}
|
|
1423
1429
|
function buildForfeitTxWithOutput(inputs, output, txLocktime) {
|
|
1424
|
-
const tx = new
|
|
1430
|
+
const tx = new chunk7IYIFMF4_cjs.Transaction({
|
|
1425
1431
|
version: 3,
|
|
1426
1432
|
lockTime: txLocktime
|
|
1427
1433
|
});
|
|
@@ -1497,7 +1503,7 @@ function validateVtxoTxGraph(graph, roundTransaction, sweepTapTreeRoot) {
|
|
|
1497
1503
|
if (previousScriptKey.length !== 32) {
|
|
1498
1504
|
throw new Error(`parent output ${childIndex} has invalid script`);
|
|
1499
1505
|
}
|
|
1500
|
-
const cosigners =
|
|
1506
|
+
const cosigners = chunk7IYIFMF4_cjs.getArkPsbtFields(child.root, 0, chunk7IYIFMF4_cjs.CosignerPublicKey);
|
|
1501
1507
|
if (cosigners.length === 0) {
|
|
1502
1508
|
throw ErrMissingCosignersPublicKeys;
|
|
1503
1509
|
}
|
|
@@ -1518,6 +1524,8 @@ var UnknownPacket = class {
|
|
|
1518
1524
|
this.packetType = packetType;
|
|
1519
1525
|
this.data = data;
|
|
1520
1526
|
}
|
|
1527
|
+
packetType;
|
|
1528
|
+
data;
|
|
1521
1529
|
type() {
|
|
1522
1530
|
return this.packetType;
|
|
1523
1531
|
}
|
|
@@ -1538,6 +1546,7 @@ var Extension = class _Extension {
|
|
|
1538
1546
|
constructor(packets) {
|
|
1539
1547
|
this.packets = packets;
|
|
1540
1548
|
}
|
|
1549
|
+
packets;
|
|
1541
1550
|
static create(packets) {
|
|
1542
1551
|
if (packets.length === 0) {
|
|
1543
1552
|
throw new Error("missing packets");
|
|
@@ -1597,7 +1606,7 @@ var Extension = class _Extension {
|
|
|
1597
1606
|
`expected magic prefix ${base.hex.encode(ARKADE_MAGIC)}, got ${base.hex.encode(payload.slice(0, Math.min(payload.length, ARKADE_MAGIC.length)))}`
|
|
1598
1607
|
);
|
|
1599
1608
|
}
|
|
1600
|
-
const reader = new
|
|
1609
|
+
const reader = new chunk7IYIFMF4_cjs.BufferReader(payload.slice(ARKADE_MAGIC.length));
|
|
1601
1610
|
const packets = [];
|
|
1602
1611
|
while (reader.remaining() > 0) {
|
|
1603
1612
|
const packetType = reader.readByte();
|
|
@@ -1671,7 +1680,7 @@ var Extension = class _Extension {
|
|
|
1671
1680
|
*/
|
|
1672
1681
|
getAssetPacket() {
|
|
1673
1682
|
for (const p of this.packets) {
|
|
1674
|
-
if (p instanceof
|
|
1683
|
+
if (p instanceof chunk7IYIFMF4_cjs.Packet) {
|
|
1675
1684
|
return p;
|
|
1676
1685
|
}
|
|
1677
1686
|
}
|
|
@@ -1679,8 +1688,8 @@ var Extension = class _Extension {
|
|
|
1679
1688
|
}
|
|
1680
1689
|
};
|
|
1681
1690
|
function parsePacket(packetType, data) {
|
|
1682
|
-
if (packetType ===
|
|
1683
|
-
return
|
|
1691
|
+
if (packetType === chunk7IYIFMF4_cjs.Packet.PACKET_TYPE) {
|
|
1692
|
+
return chunk7IYIFMF4_cjs.Packet.fromBytes(data);
|
|
1684
1693
|
}
|
|
1685
1694
|
return new UnknownPacket(packetType, data);
|
|
1686
1695
|
}
|
|
@@ -1738,7 +1747,7 @@ function validateBatchRecipients(commitmentTx, vtxoTreeLeaves, recipients, netwo
|
|
|
1738
1747
|
for (const recipient of recipients) {
|
|
1739
1748
|
let arkAddress;
|
|
1740
1749
|
try {
|
|
1741
|
-
arkAddress =
|
|
1750
|
+
arkAddress = chunkMQB5H4X5_cjs.ArkAddress.decode(recipient.address);
|
|
1742
1751
|
} catch {
|
|
1743
1752
|
validateOnchainRecipient(commitmentTx, recipient, network, usedOnchainOutputs);
|
|
1744
1753
|
continue;
|
|
@@ -1976,6 +1985,7 @@ function isExpired(vtxo) {
|
|
|
1976
1985
|
return expiry <= Date.now();
|
|
1977
1986
|
}
|
|
1978
1987
|
function isSubdust(vtxo, dust) {
|
|
1988
|
+
if (typeof vtxo === "bigint") return vtxo < dust;
|
|
1979
1989
|
return vtxo.value < dust;
|
|
1980
1990
|
}
|
|
1981
1991
|
|
|
@@ -1987,7 +1997,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
|
|
|
1987
1997
|
const existing = inputsByAssetId.get(asset.assetId);
|
|
1988
1998
|
inputsByAssetId.set(asset.assetId, [
|
|
1989
1999
|
...existing ?? [],
|
|
1990
|
-
|
|
2000
|
+
chunk7IYIFMF4_cjs.AssetInput.create(inputIndex, asset.amount)
|
|
1991
2001
|
]);
|
|
1992
2002
|
}
|
|
1993
2003
|
}
|
|
@@ -1999,7 +2009,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
|
|
|
1999
2009
|
const existing = outputsByAssetId.get(asset.assetId);
|
|
2000
2010
|
outputsByAssetId.set(asset.assetId, [
|
|
2001
2011
|
...existing ?? [],
|
|
2002
|
-
|
|
2012
|
+
chunk7IYIFMF4_cjs.AssetOutput.create(outputIndex, asset.amount)
|
|
2003
2013
|
]);
|
|
2004
2014
|
}
|
|
2005
2015
|
}
|
|
@@ -2010,7 +2020,7 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
|
|
|
2010
2020
|
const existing = outputsByAssetId.get(asset.assetId);
|
|
2011
2021
|
outputsByAssetId.set(asset.assetId, [
|
|
2012
2022
|
...existing ?? [],
|
|
2013
|
-
|
|
2023
|
+
chunk7IYIFMF4_cjs.AssetOutput.create(outputIndex, asset.amount)
|
|
2014
2024
|
]);
|
|
2015
2025
|
}
|
|
2016
2026
|
}
|
|
@@ -2019,11 +2029,11 @@ function createAssetPacket(assetInputs, receivers, changeReceiver) {
|
|
|
2019
2029
|
for (const assetIdStr of allAssetIds) {
|
|
2020
2030
|
const inputs = inputsByAssetId.get(assetIdStr);
|
|
2021
2031
|
const outputs = outputsByAssetId.get(assetIdStr);
|
|
2022
|
-
const assetId =
|
|
2023
|
-
const group =
|
|
2032
|
+
const assetId = chunk7IYIFMF4_cjs.AssetId.fromString(assetIdStr);
|
|
2033
|
+
const group = chunk7IYIFMF4_cjs.AssetGroup.create(assetId, null, inputs ?? [], outputs ?? [], []);
|
|
2024
2034
|
groups.push(group);
|
|
2025
2035
|
}
|
|
2026
|
-
return
|
|
2036
|
+
return chunk7IYIFMF4_cjs.Packet.create(groups);
|
|
2027
2037
|
}
|
|
2028
2038
|
function selectCoinsWithAsset(coins, assetId, requiredAmount) {
|
|
2029
2039
|
const coinsWithAsset = coins.filter((coin) => coin.assets?.some((a) => a.assetId === assetId));
|
|
@@ -2128,8 +2138,8 @@ function buildOffchainTx(inputs, outputs, serverUnrollScript) {
|
|
|
2128
2138
|
function buildVirtualTx(inputs, outputs) {
|
|
2129
2139
|
let lockTime = 0n;
|
|
2130
2140
|
for (const input of inputs) {
|
|
2131
|
-
const tapscript =
|
|
2132
|
-
if (
|
|
2141
|
+
const tapscript = chunkMQB5H4X5_cjs.decodeTapscript(chunkMQB5H4X5_cjs.scriptFromTapLeafScript(input.tapLeafScript));
|
|
2142
|
+
if (chunkMQB5H4X5_cjs.CLTVMultisigTapscript.is(tapscript)) {
|
|
2133
2143
|
if (lockTime !== 0n) {
|
|
2134
2144
|
if (isSeconds(lockTime) !== isSeconds(tapscript.params.absoluteTimelock)) {
|
|
2135
2145
|
throw new Error("cannot mix seconds and blocks locktime");
|
|
@@ -2140,7 +2150,7 @@ function buildVirtualTx(inputs, outputs) {
|
|
|
2140
2150
|
}
|
|
2141
2151
|
}
|
|
2142
2152
|
}
|
|
2143
|
-
const tx = new
|
|
2153
|
+
const tx = new chunk7IYIFMF4_cjs.Transaction({
|
|
2144
2154
|
version: 3,
|
|
2145
2155
|
lockTime: Number(lockTime)
|
|
2146
2156
|
});
|
|
@@ -2150,12 +2160,12 @@ function buildVirtualTx(inputs, outputs) {
|
|
|
2150
2160
|
index: input.vout,
|
|
2151
2161
|
sequence: lockTime ? btcSigner.DEFAULT_SEQUENCE - 1 : void 0,
|
|
2152
2162
|
witnessUtxo: {
|
|
2153
|
-
script:
|
|
2163
|
+
script: chunkMQB5H4X5_cjs.VtxoScript.decode(input.tapTree).pkScript,
|
|
2154
2164
|
amount: BigInt(input.value)
|
|
2155
2165
|
},
|
|
2156
2166
|
tapLeafScript: [input.tapLeafScript]
|
|
2157
2167
|
});
|
|
2158
|
-
|
|
2168
|
+
chunk7IYIFMF4_cjs.setArkPsbtField(tx, i, chunk7IYIFMF4_cjs.VtxoTaprootTree, input.tapTree);
|
|
2159
2169
|
}
|
|
2160
2170
|
for (const output of outputs) {
|
|
2161
2171
|
tx.addOutput(output);
|
|
@@ -2164,8 +2174,8 @@ function buildVirtualTx(inputs, outputs) {
|
|
|
2164
2174
|
return tx;
|
|
2165
2175
|
}
|
|
2166
2176
|
function buildCheckpointTx(vtxo, serverUnrollScript) {
|
|
2167
|
-
const collaborativeClosure =
|
|
2168
|
-
const checkpointVtxoScript = new
|
|
2177
|
+
const collaborativeClosure = chunkMQB5H4X5_cjs.decodeTapscript(chunkMQB5H4X5_cjs.scriptFromTapLeafScript(vtxo.tapLeafScript));
|
|
2178
|
+
const checkpointVtxoScript = new chunkMQB5H4X5_cjs.VtxoScript([
|
|
2169
2179
|
serverUnrollScript.script,
|
|
2170
2180
|
collaborativeClosure.script
|
|
2171
2181
|
]);
|
|
@@ -2309,7 +2319,7 @@ function combineTapscriptSigs(signedTx, originalTx) {
|
|
|
2309
2319
|
}
|
|
2310
2320
|
function isValidArkAddress(address) {
|
|
2311
2321
|
try {
|
|
2312
|
-
|
|
2322
|
+
chunkMQB5H4X5_cjs.ArkAddress.decode(address);
|
|
2313
2323
|
return true;
|
|
2314
2324
|
} catch (e) {
|
|
2315
2325
|
return false;
|
|
@@ -2334,6 +2344,7 @@ var FeeAmount = class _FeeAmount {
|
|
|
2334
2344
|
constructor(value) {
|
|
2335
2345
|
this.value = value;
|
|
2336
2346
|
}
|
|
2347
|
+
value;
|
|
2337
2348
|
static ZERO = new _FeeAmount(0);
|
|
2338
2349
|
/** Returns the fee amount rounded up to whole satoshis. */
|
|
2339
2350
|
get satoshis() {
|
|
@@ -2358,6 +2369,7 @@ var Estimator = class {
|
|
|
2358
2369
|
this.intentOffchainOutput = config.offchainOutput ? parseProgram(config.offchainOutput, IntentOutputEnv) : void 0;
|
|
2359
2370
|
this.intentOnchainOutput = config.onchainOutput ? parseProgram(config.onchainOutput, IntentOutputEnv) : void 0;
|
|
2360
2371
|
}
|
|
2372
|
+
config;
|
|
2361
2373
|
intentOffchainInput;
|
|
2362
2374
|
intentOnchainInput;
|
|
2363
2375
|
intentOffchainOutput;
|
|
@@ -2482,7 +2494,7 @@ function extendCoinWithTapscript(boardingTapscript, utxo) {
|
|
|
2482
2494
|
};
|
|
2483
2495
|
}
|
|
2484
2496
|
function deriveContractTapscripts(contract) {
|
|
2485
|
-
const handler =
|
|
2497
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(contract.type);
|
|
2486
2498
|
if (!handler) {
|
|
2487
2499
|
throw new Error(`No handler for contract type '${contract.type}'`);
|
|
2488
2500
|
}
|
|
@@ -2552,7 +2564,7 @@ function validateRecipients(recipients, dustAmount) {
|
|
|
2552
2564
|
for (const recipient of recipients) {
|
|
2553
2565
|
let address;
|
|
2554
2566
|
try {
|
|
2555
|
-
address =
|
|
2567
|
+
address = chunkMQB5H4X5_cjs.ArkAddress.decode(recipient.address);
|
|
2556
2568
|
} catch (e) {
|
|
2557
2569
|
throw new Error(`Invalid Arkade address: ${recipient.address}`);
|
|
2558
2570
|
}
|
|
@@ -2760,6 +2772,8 @@ var VtxoManager = class _VtxoManager {
|
|
|
2760
2772
|
}
|
|
2761
2773
|
this.contractEventsSubscriptionReady = this.initializeSubscription();
|
|
2762
2774
|
}
|
|
2775
|
+
wallet;
|
|
2776
|
+
renewalConfig;
|
|
2763
2777
|
settlementConfig;
|
|
2764
2778
|
contractEventsSubscriptionReady;
|
|
2765
2779
|
disposePromise;
|
|
@@ -3157,11 +3171,11 @@ var VtxoManager = class _VtxoManager {
|
|
|
3157
3171
|
`Sweep not economical: output ${outputAmount} sats after ${fee} sats fee is below dust (${dustAmount} sats)`
|
|
3158
3172
|
);
|
|
3159
3173
|
}
|
|
3160
|
-
const tx = new
|
|
3174
|
+
const tx = new chunk7IYIFMF4_cjs.Transaction();
|
|
3161
3175
|
for (const utxo of expiredUtxos) {
|
|
3162
|
-
const utxoScript =
|
|
3176
|
+
const utxoScript = chunkMQB5H4X5_cjs.VtxoScript.decode(utxo.tapTree);
|
|
3163
3177
|
const utxoExitLeaf = utxoScript.leaves.find(
|
|
3164
|
-
(leaf) =>
|
|
3178
|
+
(leaf) => chunkMQB5H4X5_cjs.CSVMultisigTapscript.isScriptValid(chunkMQB5H4X5_cjs.scriptFromTapLeafScript(leaf)) === true
|
|
3165
3179
|
);
|
|
3166
3180
|
if (!utxoExitLeaf) {
|
|
3167
3181
|
throw new Error(
|
|
@@ -3176,7 +3190,7 @@ var VtxoManager = class _VtxoManager {
|
|
|
3176
3190
|
amount: BigInt(utxo.value)
|
|
3177
3191
|
},
|
|
3178
3192
|
tapLeafScript: [utxoExitLeaf],
|
|
3179
|
-
sequence:
|
|
3193
|
+
sequence: chunkMQB5H4X5_cjs.getSequence(utxoExitLeaf)
|
|
3180
3194
|
});
|
|
3181
3195
|
}
|
|
3182
3196
|
tx.addOutputAddress(boardingAddress, outputAmount, this.getNetwork());
|
|
@@ -3665,7 +3679,7 @@ var VtxoManager = class _VtxoManager {
|
|
|
3665
3679
|
/** Decodes the boarding tapscript exit path to extract the CSV timelock. */
|
|
3666
3680
|
getBoardingTimelock() {
|
|
3667
3681
|
const wallet = this.getSweepWallet();
|
|
3668
|
-
const exitScript =
|
|
3682
|
+
const exitScript = chunkMQB5H4X5_cjs.CSVMultisigTapscript.decode(
|
|
3669
3683
|
base.hex.decode(wallet.boardingTapscript.exitScript)
|
|
3670
3684
|
);
|
|
3671
3685
|
return exitScript.params.timelock;
|
|
@@ -3796,8 +3810,8 @@ var VtxoManager = class _VtxoManager {
|
|
|
3796
3810
|
* or doesn't carry the metadata.
|
|
3797
3811
|
*/
|
|
3798
3812
|
extractSpentOutpoint(error) {
|
|
3799
|
-
const ark =
|
|
3800
|
-
if (!ark
|
|
3813
|
+
const ark = chunk7IYIFMF4_cjs.maybeArkError(error);
|
|
3814
|
+
if (!chunk7IYIFMF4_cjs.isArkError(ark, chunk7IYIFMF4_cjs.ArkErrorName.VTXO_ALREADY_SPENT)) return void 0;
|
|
3801
3815
|
const raw = ark.metadata?.vtxo_outpoint;
|
|
3802
3816
|
if (typeof raw !== "string") return void 0;
|
|
3803
3817
|
const [txid, voutStr] = raw.split(":");
|
|
@@ -4011,7 +4025,7 @@ var VtxoManager = class _VtxoManager {
|
|
|
4011
4025
|
const arkAddress = await this.wallet.getAddress();
|
|
4012
4026
|
const outputFee = estimator.evalOffchainOutput({
|
|
4013
4027
|
amount: totalAmount,
|
|
4014
|
-
script: base.hex.encode(
|
|
4028
|
+
script: base.hex.encode(chunkMQB5H4X5_cjs.ArkAddress.decode(arkAddress).pkScript)
|
|
4015
4029
|
});
|
|
4016
4030
|
totalAmount -= BigInt(outputFee.satoshis);
|
|
4017
4031
|
if (totalAmount < dustAmount) return;
|
|
@@ -4091,7 +4105,7 @@ var ArkNote = class _ArkNote {
|
|
|
4091
4105
|
this.value = value;
|
|
4092
4106
|
this.HRP = HRP;
|
|
4093
4107
|
const preimageHash = utils_js.sha256(this.preimage);
|
|
4094
|
-
this.vtxoScript = new
|
|
4108
|
+
this.vtxoScript = new chunkMQB5H4X5_cjs.VtxoScript([noteTapscript(preimageHash)]);
|
|
4095
4109
|
const leaf = this.vtxoScript.leaves[0];
|
|
4096
4110
|
this.txid = base.hex.encode(new Uint8Array(preimageHash).reverse());
|
|
4097
4111
|
this.tapTree = this.vtxoScript.encode();
|
|
@@ -4101,6 +4115,9 @@ var ArkNote = class _ArkNote {
|
|
|
4101
4115
|
this.status = { confirmed: true };
|
|
4102
4116
|
this.extraWitness = [this.preimage];
|
|
4103
4117
|
}
|
|
4118
|
+
preimage;
|
|
4119
|
+
value;
|
|
4120
|
+
HRP;
|
|
4104
4121
|
static DefaultHRP = "arknote";
|
|
4105
4122
|
static PreimageLength = 32;
|
|
4106
4123
|
// 32 bytes for the preimage
|
|
@@ -4443,7 +4460,7 @@ async function captureExitBranch(params) {
|
|
|
4443
4460
|
const nonCommitment = ordered.filter((c) => chainTxTypeToChainedExit(c.type) !== 1 /* Commitment */).map((c) => c.txid);
|
|
4444
4461
|
if (nonCommitment.length > 0) {
|
|
4445
4462
|
for (const psbt of await resolver.getVirtualTxs(nonCommitment)) {
|
|
4446
|
-
psbtByTxid.set(
|
|
4463
|
+
psbtByTxid.set(chunk7IYIFMF4_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
|
|
4447
4464
|
}
|
|
4448
4465
|
}
|
|
4449
4466
|
}
|
|
@@ -4477,6 +4494,7 @@ var IndexerExitDataSource = class {
|
|
|
4477
4494
|
constructor(indexer) {
|
|
4478
4495
|
this.indexer = indexer;
|
|
4479
4496
|
}
|
|
4497
|
+
indexer;
|
|
4480
4498
|
name = "indexer";
|
|
4481
4499
|
async getVtxoChain(vtxo) {
|
|
4482
4500
|
const chain = [];
|
|
@@ -4485,10 +4503,10 @@ var IndexerExitDataSource = class {
|
|
|
4485
4503
|
while (hasMore) {
|
|
4486
4504
|
const { chain: page, page: meta } = await this.indexer.getVtxoChain(
|
|
4487
4505
|
{ txid: vtxo.txid, vout: vtxo.vout },
|
|
4488
|
-
{ pageIndex, pageSize:
|
|
4506
|
+
{ pageIndex, pageSize: chunk4KXOCVXP_cjs.DEFAULT_PAGE_SIZE }
|
|
4489
4507
|
);
|
|
4490
4508
|
chain.push(...page);
|
|
4491
|
-
hasMore = meta ? page.length ===
|
|
4509
|
+
hasMore = meta ? page.length === chunk4KXOCVXP_cjs.DEFAULT_PAGE_SIZE : false;
|
|
4492
4510
|
pageIndex++;
|
|
4493
4511
|
}
|
|
4494
4512
|
return chain;
|
|
@@ -4500,12 +4518,12 @@ var IndexerExitDataSource = class {
|
|
|
4500
4518
|
while (hasMore) {
|
|
4501
4519
|
const { txs, page } = await this.indexer.getVirtualTxs(txids, {
|
|
4502
4520
|
pageIndex,
|
|
4503
|
-
pageSize:
|
|
4521
|
+
pageSize: chunk4KXOCVXP_cjs.DEFAULT_PAGE_SIZE
|
|
4504
4522
|
});
|
|
4505
4523
|
for (const psbt of txs) {
|
|
4506
|
-
out.set(
|
|
4524
|
+
out.set(chunk7IYIFMF4_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
|
|
4507
4525
|
}
|
|
4508
|
-
hasMore = page ? txs.length ===
|
|
4526
|
+
hasMore = page ? txs.length === chunk4KXOCVXP_cjs.DEFAULT_PAGE_SIZE : false;
|
|
4509
4527
|
pageIndex++;
|
|
4510
4528
|
}
|
|
4511
4529
|
return out;
|
|
@@ -4526,7 +4544,7 @@ function chainedTxTypeToChainTxType(t) {
|
|
|
4526
4544
|
}
|
|
4527
4545
|
}
|
|
4528
4546
|
function psbtInputTxids(psbtBase64) {
|
|
4529
|
-
const tx =
|
|
4547
|
+
const tx = chunk7IYIFMF4_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
|
|
4530
4548
|
const ids = [];
|
|
4531
4549
|
for (let i = 0; i < tx.inputsLength; i++) {
|
|
4532
4550
|
const txid = tx.getInput(i).txid;
|
|
@@ -4538,6 +4556,7 @@ var RepositoryExitDataSource = class {
|
|
|
4538
4556
|
constructor(repo) {
|
|
4539
4557
|
this.repo = repo;
|
|
4540
4558
|
}
|
|
4559
|
+
repo;
|
|
4541
4560
|
name = "repository";
|
|
4542
4561
|
async getVtxoChain(vtxo) {
|
|
4543
4562
|
const branch = await this.repo.getBranch(vtxo);
|
|
@@ -4575,6 +4594,8 @@ var OrderedExitChainResolver = class {
|
|
|
4575
4594
|
this.sources = sources;
|
|
4576
4595
|
this.persist = persist;
|
|
4577
4596
|
}
|
|
4597
|
+
sources;
|
|
4598
|
+
persist;
|
|
4578
4599
|
async getVtxoChain(vtxo) {
|
|
4579
4600
|
let lastErr;
|
|
4580
4601
|
for (const source of this.sources) {
|
|
@@ -4626,7 +4647,7 @@ function createExitChainResolver(params) {
|
|
|
4626
4647
|
|
|
4627
4648
|
// src/providers/availability.ts
|
|
4628
4649
|
function isRetryableProviderError(error) {
|
|
4629
|
-
return error instanceof
|
|
4650
|
+
return error instanceof chunk7IYIFMF4_cjs.ProviderUnavailableError || error instanceof chunk7IYIFMF4_cjs.FetchError || chunk7IYIFMF4_cjs.isFetchTimeoutError(error);
|
|
4630
4651
|
}
|
|
4631
4652
|
|
|
4632
4653
|
// src/utils/syncCursors.ts
|
|
@@ -4879,7 +4900,7 @@ async function resolveArkInfo(arkProvider, walletRepository) {
|
|
|
4879
4900
|
if (!isRetryableProviderError(err)) throw err;
|
|
4880
4901
|
const snapshot = await loadArkInfoSnapshot(walletRepository);
|
|
4881
4902
|
if (!snapshot) {
|
|
4882
|
-
throw new
|
|
4903
|
+
throw new chunk7IYIFMF4_cjs.ProviderUnavailableError(
|
|
4883
4904
|
"Arkade server info is unavailable and no cached snapshot exists",
|
|
4884
4905
|
{ cause: err }
|
|
4885
4906
|
);
|
|
@@ -4900,6 +4921,8 @@ var TxTree = class {
|
|
|
4900
4921
|
this.root = root;
|
|
4901
4922
|
this.children = children;
|
|
4902
4923
|
}
|
|
4924
|
+
root;
|
|
4925
|
+
children;
|
|
4903
4926
|
static create(chunks) {
|
|
4904
4927
|
if (chunks.length === 0) {
|
|
4905
4928
|
throw new Error("empty chunks");
|
|
@@ -5371,6 +5394,7 @@ var ReadonlyAssetManager = class {
|
|
|
5371
5394
|
constructor(indexer) {
|
|
5372
5395
|
this.indexer = indexer;
|
|
5373
5396
|
}
|
|
5397
|
+
indexer;
|
|
5374
5398
|
async getAssetDetails(assetId) {
|
|
5375
5399
|
return this.indexer.getAssetDetails(assetId);
|
|
5376
5400
|
}
|
|
@@ -5380,6 +5404,7 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5380
5404
|
super(wallet.indexerProvider);
|
|
5381
5405
|
this.wallet = wallet;
|
|
5382
5406
|
}
|
|
5407
|
+
wallet;
|
|
5383
5408
|
/**
|
|
5384
5409
|
* Issue a new asset.
|
|
5385
5410
|
* @param params - Parameters for asset issuance
|
|
@@ -5410,7 +5435,7 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5410
5435
|
const virtualCoins = await this.wallet.getVtxos({
|
|
5411
5436
|
withRecoverable: false
|
|
5412
5437
|
});
|
|
5413
|
-
const controlAssetRef = params.controlAssetId ?
|
|
5438
|
+
const controlAssetRef = params.controlAssetId ? chunk7IYIFMF4_cjs.AssetRef.fromId(chunk7IYIFMF4_cjs.AssetId.fromString(params.controlAssetId)) : null;
|
|
5414
5439
|
const coinSelection = selectVirtualCoins(virtualCoins, Number(this.wallet.dustAmount));
|
|
5415
5440
|
let totalBtcSelected = 0n;
|
|
5416
5441
|
const assetChanges = /* @__PURE__ */ new Map();
|
|
@@ -5423,8 +5448,8 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5423
5448
|
}
|
|
5424
5449
|
}
|
|
5425
5450
|
const groups = [];
|
|
5426
|
-
const issuedAssetOutput =
|
|
5427
|
-
const issuedAssetGroup =
|
|
5451
|
+
const issuedAssetOutput = chunk7IYIFMF4_cjs.AssetOutput.create(0, params.amount);
|
|
5452
|
+
const issuedAssetGroup = chunk7IYIFMF4_cjs.AssetGroup.create(
|
|
5428
5453
|
null,
|
|
5429
5454
|
controlAssetRef,
|
|
5430
5455
|
[],
|
|
@@ -5439,28 +5464,28 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5439
5464
|
for (const [inputIndex, assets] of assetInputs) {
|
|
5440
5465
|
for (const asset of assets) {
|
|
5441
5466
|
if (asset.assetId !== assetId) continue;
|
|
5442
|
-
changeInputs.push(
|
|
5467
|
+
changeInputs.push(chunk7IYIFMF4_cjs.AssetInput.create(inputIndex, asset.amount));
|
|
5443
5468
|
}
|
|
5444
5469
|
}
|
|
5445
5470
|
groups.push(
|
|
5446
|
-
|
|
5447
|
-
|
|
5471
|
+
chunk7IYIFMF4_cjs.AssetGroup.create(
|
|
5472
|
+
chunk7IYIFMF4_cjs.AssetId.fromString(assetId),
|
|
5448
5473
|
null,
|
|
5449
5474
|
changeInputs,
|
|
5450
|
-
[
|
|
5475
|
+
[chunk7IYIFMF4_cjs.AssetOutput.create(0, amount)],
|
|
5451
5476
|
[]
|
|
5452
5477
|
)
|
|
5453
5478
|
);
|
|
5454
5479
|
}
|
|
5455
5480
|
}
|
|
5456
5481
|
const address = await this.wallet.getAddress();
|
|
5457
|
-
const outputAddress =
|
|
5482
|
+
const outputAddress = chunkMQB5H4X5_cjs.ArkAddress.decode(address);
|
|
5458
5483
|
const outputs = [
|
|
5459
5484
|
{
|
|
5460
5485
|
script: outputAddress.pkScript,
|
|
5461
5486
|
amount: BigInt(totalBtcSelected)
|
|
5462
5487
|
},
|
|
5463
|
-
Extension.create([
|
|
5488
|
+
Extension.create([chunk7IYIFMF4_cjs.Packet.create(groups)]).txOut()
|
|
5464
5489
|
];
|
|
5465
5490
|
const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(
|
|
5466
5491
|
coinSelection.inputs,
|
|
@@ -5468,7 +5493,7 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5468
5493
|
);
|
|
5469
5494
|
return {
|
|
5470
5495
|
arkTxId: arkTxid,
|
|
5471
|
-
assetId:
|
|
5496
|
+
assetId: chunk7IYIFMF4_cjs.AssetId.create(arkTxid, 0).toString()
|
|
5472
5497
|
};
|
|
5473
5498
|
}
|
|
5474
5499
|
/**
|
|
@@ -5540,16 +5565,16 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5540
5565
|
for (const [inputIndex, assets] of assetInputs) {
|
|
5541
5566
|
for (const asset of assets) {
|
|
5542
5567
|
if (asset.assetId !== params.assetId) continue;
|
|
5543
|
-
reissueInputs.push(
|
|
5568
|
+
reissueInputs.push(chunk7IYIFMF4_cjs.AssetInput.create(inputIndex, asset.amount));
|
|
5544
5569
|
}
|
|
5545
5570
|
}
|
|
5546
5571
|
const totalAssetAmount = assetToReissueAmount + params.amount;
|
|
5547
|
-
const reissueAssetIdObj =
|
|
5548
|
-
const reissueAssetGroup =
|
|
5572
|
+
const reissueAssetIdObj = chunk7IYIFMF4_cjs.AssetId.fromString(params.assetId);
|
|
5573
|
+
const reissueAssetGroup = chunk7IYIFMF4_cjs.AssetGroup.create(
|
|
5549
5574
|
reissueAssetIdObj,
|
|
5550
5575
|
null,
|
|
5551
5576
|
reissueInputs,
|
|
5552
|
-
[
|
|
5577
|
+
[chunk7IYIFMF4_cjs.AssetOutput.create(0, totalAssetAmount)],
|
|
5553
5578
|
[]
|
|
5554
5579
|
);
|
|
5555
5580
|
const groups = [reissueAssetGroup];
|
|
@@ -5558,27 +5583,27 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5558
5583
|
for (const [inputIndex, assets] of assetInputs) {
|
|
5559
5584
|
for (const asset of assets) {
|
|
5560
5585
|
if (asset.assetId !== assetId) continue;
|
|
5561
|
-
changeInputs.push(
|
|
5586
|
+
changeInputs.push(chunk7IYIFMF4_cjs.AssetInput.create(inputIndex, asset.amount));
|
|
5562
5587
|
}
|
|
5563
5588
|
}
|
|
5564
5589
|
groups.push(
|
|
5565
|
-
|
|
5566
|
-
|
|
5590
|
+
chunk7IYIFMF4_cjs.AssetGroup.create(
|
|
5591
|
+
chunk7IYIFMF4_cjs.AssetId.fromString(assetId),
|
|
5567
5592
|
null,
|
|
5568
5593
|
changeInputs,
|
|
5569
|
-
[
|
|
5594
|
+
[chunk7IYIFMF4_cjs.AssetOutput.create(0, amount)],
|
|
5570
5595
|
[]
|
|
5571
5596
|
)
|
|
5572
5597
|
);
|
|
5573
5598
|
}
|
|
5574
5599
|
const address = await this.wallet.getAddress();
|
|
5575
|
-
const outputAddress =
|
|
5600
|
+
const outputAddress = chunkMQB5H4X5_cjs.ArkAddress.decode(address);
|
|
5576
5601
|
const outputs = [
|
|
5577
5602
|
{
|
|
5578
5603
|
script: outputAddress.pkScript,
|
|
5579
5604
|
amount: BigInt(totalBtcSelected)
|
|
5580
5605
|
},
|
|
5581
|
-
Extension.create([
|
|
5606
|
+
Extension.create([chunk7IYIFMF4_cjs.Packet.create(groups)]).txOut()
|
|
5582
5607
|
];
|
|
5583
5608
|
const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(selectedCoins, outputs);
|
|
5584
5609
|
return arkTxid;
|
|
@@ -5645,27 +5670,27 @@ var AssetManager = class extends ReadonlyAssetManager {
|
|
|
5645
5670
|
for (const [inputIndex, assets] of assetInputs) {
|
|
5646
5671
|
for (const asset of assets) {
|
|
5647
5672
|
if (asset.assetId !== assetId) continue;
|
|
5648
|
-
changeInputs.push(
|
|
5673
|
+
changeInputs.push(chunk7IYIFMF4_cjs.AssetInput.create(inputIndex, asset.amount));
|
|
5649
5674
|
}
|
|
5650
5675
|
}
|
|
5651
5676
|
groups.push(
|
|
5652
|
-
|
|
5653
|
-
|
|
5677
|
+
chunk7IYIFMF4_cjs.AssetGroup.create(
|
|
5678
|
+
chunk7IYIFMF4_cjs.AssetId.fromString(assetId),
|
|
5654
5679
|
null,
|
|
5655
5680
|
changeInputs,
|
|
5656
|
-
amount > 0n ? [
|
|
5681
|
+
amount > 0n ? [chunk7IYIFMF4_cjs.AssetOutput.create(0, amount)] : [],
|
|
5657
5682
|
[]
|
|
5658
5683
|
)
|
|
5659
5684
|
);
|
|
5660
5685
|
}
|
|
5661
5686
|
const address = await this.wallet.getAddress();
|
|
5662
|
-
const outputAddress =
|
|
5687
|
+
const outputAddress = chunkMQB5H4X5_cjs.ArkAddress.decode(address);
|
|
5663
5688
|
const outputs = [
|
|
5664
5689
|
{
|
|
5665
5690
|
script: outputAddress.pkScript,
|
|
5666
5691
|
amount: BigInt(totalBtcSelected)
|
|
5667
5692
|
},
|
|
5668
|
-
Extension.create([
|
|
5693
|
+
Extension.create([chunk7IYIFMF4_cjs.Packet.create(groups)]).txOut()
|
|
5669
5694
|
];
|
|
5670
5695
|
const { arkTxid } = await this.wallet.buildAndSubmitOffchainTx(selectedCoins, outputs);
|
|
5671
5696
|
return arkTxid;
|
|
@@ -5690,7 +5715,7 @@ function castMetadata(metadata) {
|
|
|
5690
5715
|
} else {
|
|
5691
5716
|
throw new Error("Invalid metadata value type");
|
|
5692
5717
|
}
|
|
5693
|
-
md.push(
|
|
5718
|
+
md.push(chunk7IYIFMF4_cjs.Metadata.create(textEncoder.encode(key), valueBytes));
|
|
5694
5719
|
}
|
|
5695
5720
|
return md;
|
|
5696
5721
|
}
|
|
@@ -5701,6 +5726,9 @@ var DelegateManagerImpl = class {
|
|
|
5701
5726
|
this.arkInfoProvider = arkInfoProvider;
|
|
5702
5727
|
this.identity = identity;
|
|
5703
5728
|
}
|
|
5729
|
+
delegateProvider;
|
|
5730
|
+
arkInfoProvider;
|
|
5731
|
+
identity;
|
|
5704
5732
|
async getDelegateInfo() {
|
|
5705
5733
|
return this.delegateProvider.getDelegateInfo();
|
|
5706
5734
|
}
|
|
@@ -5708,7 +5736,7 @@ var DelegateManagerImpl = class {
|
|
|
5708
5736
|
if (vtxos.length === 0) {
|
|
5709
5737
|
return { delegated: [], failed: [] };
|
|
5710
5738
|
}
|
|
5711
|
-
const destinationScript =
|
|
5739
|
+
const destinationScript = chunkMQB5H4X5_cjs.ArkAddress.decode(destination).pkScript;
|
|
5712
5740
|
const arkInfo = await this.arkInfoProvider.getInfo();
|
|
5713
5741
|
const delegateInfo = await this.delegateProvider.getDelegateInfo();
|
|
5714
5742
|
const eligible = vtxos.filter(
|
|
@@ -5856,7 +5884,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
|
|
|
5856
5884
|
const delegateFee = BigInt(Number(fee));
|
|
5857
5885
|
if (delegateFee > 0n) {
|
|
5858
5886
|
outputs.push({
|
|
5859
|
-
script:
|
|
5887
|
+
script: chunkMQB5H4X5_cjs.ArkAddress.decode(delegateAddress).pkScript,
|
|
5860
5888
|
amount: delegateFee
|
|
5861
5889
|
});
|
|
5862
5890
|
}
|
|
@@ -5867,12 +5895,12 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
|
|
|
5867
5895
|
script: base.hex.encode(output.script)
|
|
5868
5896
|
}).satoshis;
|
|
5869
5897
|
}, 0);
|
|
5870
|
-
if (amount - BigInt(outputFee)
|
|
5898
|
+
if (isSubdust(amount - BigInt(outputFee), dust)) {
|
|
5871
5899
|
throw new Error("Amount is below dust limit, cannot delegate");
|
|
5872
5900
|
}
|
|
5873
5901
|
amount -= BigInt(outputFee);
|
|
5874
5902
|
amount -= delegateFee;
|
|
5875
|
-
if (amount
|
|
5903
|
+
if (isSubdust(amount, dust)) {
|
|
5876
5904
|
throw new Error("Amount is below dust limit, cannot delegate");
|
|
5877
5905
|
}
|
|
5878
5906
|
outputs.push({
|
|
@@ -5889,7 +5917,7 @@ async function delegate(identity, delegateProvider, arkInfo, delegateInfo, vtxos
|
|
|
5889
5917
|
destinationScript
|
|
5890
5918
|
);
|
|
5891
5919
|
const forfeitOutputScript = btcSigner.OutScript.encode(
|
|
5892
|
-
btcSigner.Address(
|
|
5920
|
+
btcSigner.Address(chunkMQB5H4X5_cjs.getNetwork(network)).decode(forfeitAddress)
|
|
5893
5921
|
);
|
|
5894
5922
|
const forfeits = await Promise.all(
|
|
5895
5923
|
vtxos.filter((v) => !isRecoverable(v)).map(async (coin) => {
|
|
@@ -5917,7 +5945,7 @@ async function makeDelegateForfeitTx(input, connectorAmount, delegatePubkey, for
|
|
|
5917
5945
|
index: input.vout,
|
|
5918
5946
|
witnessUtxo: {
|
|
5919
5947
|
amount: BigInt(input.value),
|
|
5920
|
-
script:
|
|
5948
|
+
script: chunkMQB5H4X5_cjs.VtxoScript.decode(input.tapTree).pkScript
|
|
5921
5949
|
},
|
|
5922
5950
|
sighashType: btcSigner.SigHash.ALL_ANYONECANPAY,
|
|
5923
5951
|
tapLeafScript: [delegateTapLeaf]
|
|
@@ -5975,7 +6003,7 @@ async function makeSignedDelegateIntent(identity, coins, outputs, onchainOutputs
|
|
|
5975
6003
|
expire_at: 0,
|
|
5976
6004
|
cosigners_public_keys: cosignerPubKeys
|
|
5977
6005
|
};
|
|
5978
|
-
const proof =
|
|
6006
|
+
const proof = chunk7IYIFMF4_cjs.Intent.create(message, coins, outputs);
|
|
5979
6007
|
const signedProof = await identity.sign(proof);
|
|
5980
6008
|
return {
|
|
5981
6009
|
proof: base.base64.encode(signedProof.toPSBT()),
|
|
@@ -5993,10 +6021,10 @@ function getDayTimestamp(timestamp) {
|
|
|
5993
6021
|
function findDelegateTapLeaf(vtxo, delegatePubkey) {
|
|
5994
6022
|
if (!vtxo.tapTree) return void 0;
|
|
5995
6023
|
const pk = delegatePubkey.length === 66 ? delegatePubkey.slice(2) : delegatePubkey;
|
|
5996
|
-
const vtxoScript =
|
|
6024
|
+
const vtxoScript = chunkMQB5H4X5_cjs.VtxoScript.decode(vtxo.tapTree);
|
|
5997
6025
|
return vtxoScript.leaves.find((tapLeaf) => {
|
|
5998
|
-
const arkTapscript =
|
|
5999
|
-
if (!
|
|
6026
|
+
const arkTapscript = chunkMQB5H4X5_cjs.decodeTapscript(chunkMQB5H4X5_cjs.scriptFromTapLeafScript(tapLeaf));
|
|
6027
|
+
if (!chunkMQB5H4X5_cjs.MultisigTapscript.is(arkTapscript)) return false;
|
|
6000
6028
|
return arkTapscript.params.pubkeys.map(base.hex.encode).includes(pk);
|
|
6001
6029
|
});
|
|
6002
6030
|
}
|
|
@@ -6184,7 +6212,7 @@ async function closeDatabase(dbName) {
|
|
|
6184
6212
|
return true;
|
|
6185
6213
|
}
|
|
6186
6214
|
function scriptFromArkAddress(address) {
|
|
6187
|
-
return base.hex.encode(
|
|
6215
|
+
return base.hex.encode(chunkMQB5H4X5_cjs.ArkAddress.decode(address).pkScript);
|
|
6188
6216
|
}
|
|
6189
6217
|
|
|
6190
6218
|
// src/repositories/indexedDB/schema.ts
|
|
@@ -6469,6 +6497,7 @@ var IndexedDBVirtualTxRepository = class {
|
|
|
6469
6497
|
constructor(dbName = DEFAULT_DB_NAME) {
|
|
6470
6498
|
this.dbName = dbName;
|
|
6471
6499
|
}
|
|
6500
|
+
dbName;
|
|
6472
6501
|
version = 1;
|
|
6473
6502
|
db = null;
|
|
6474
6503
|
async getDB() {
|
|
@@ -6598,6 +6627,7 @@ var IndexedDBIntentRepository = class {
|
|
|
6598
6627
|
constructor(dbName = DEFAULT_DB_NAME) {
|
|
6599
6628
|
this.dbName = dbName;
|
|
6600
6629
|
}
|
|
6630
|
+
dbName;
|
|
6601
6631
|
version = 1;
|
|
6602
6632
|
db = null;
|
|
6603
6633
|
async getDB() {
|
|
@@ -6908,6 +6938,7 @@ var IndexedDBContractRepository = class {
|
|
|
6908
6938
|
constructor(dbName = DEFAULT_DB_NAME) {
|
|
6909
6939
|
this.dbName = dbName;
|
|
6910
6940
|
}
|
|
6941
|
+
dbName;
|
|
6911
6942
|
version = 1;
|
|
6912
6943
|
db = null;
|
|
6913
6944
|
async clear() {
|
|
@@ -7074,6 +7105,7 @@ var IndexedDBWalletRepository = class {
|
|
|
7074
7105
|
constructor(dbName = DEFAULT_DB_NAME) {
|
|
7075
7106
|
this.dbName = dbName;
|
|
7076
7107
|
}
|
|
7108
|
+
dbName;
|
|
7077
7109
|
version = 1;
|
|
7078
7110
|
db = null;
|
|
7079
7111
|
async clear() {
|
|
@@ -8059,7 +8091,7 @@ var ContractWatcher = class {
|
|
|
8059
8091
|
this.connectionState = "connected";
|
|
8060
8092
|
this.reconnectAttempts = 0;
|
|
8061
8093
|
this.listenLoop().catch((e) => {
|
|
8062
|
-
if (
|
|
8094
|
+
if (chunk7IYIFMF4_cjs.isEventSourceError(e)) {
|
|
8063
8095
|
console.debug("ContractWatcher subscription disconnected; reconnecting");
|
|
8064
8096
|
} else {
|
|
8065
8097
|
console.error(e);
|
|
@@ -8585,7 +8617,7 @@ var ContractManager = class _ContractManager {
|
|
|
8585
8617
|
* `persisted` is `true`.
|
|
8586
8618
|
*/
|
|
8587
8619
|
async upsertContract(params) {
|
|
8588
|
-
const handler =
|
|
8620
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(params.type);
|
|
8589
8621
|
if (!handler) {
|
|
8590
8622
|
throw new Error(`No handler registered for contract type '${params.type}'`);
|
|
8591
8623
|
}
|
|
@@ -8668,7 +8700,7 @@ var ContractManager = class _ContractManager {
|
|
|
8668
8700
|
`scanContracts: batchSize must be a positive integer (got ${String(opts.batchSize)})`
|
|
8669
8701
|
);
|
|
8670
8702
|
}
|
|
8671
|
-
const registered =
|
|
8703
|
+
const registered = chunk4KXOCVXP_cjs.contractHandlers.getRegisteredTypes().map((t) => chunk4KXOCVXP_cjs.contractHandlers.get(t)).filter(isDiscoverable);
|
|
8672
8704
|
const discoverables = [
|
|
8673
8705
|
...registered.filter((h) => h.type === "boarding"),
|
|
8674
8706
|
...registered.filter((h) => h.type !== "boarding")
|
|
@@ -8858,7 +8890,7 @@ var ContractManager = class _ContractManager {
|
|
|
8858
8890
|
const { contractScript, collaborative = true, walletPubKey, vtxo } = options;
|
|
8859
8891
|
const [contract] = await this.getContracts({ script: contractScript });
|
|
8860
8892
|
if (!contract) return [];
|
|
8861
|
-
const handler =
|
|
8893
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(contract.type);
|
|
8862
8894
|
if (!handler) return [];
|
|
8863
8895
|
const script = handler.createScript(contract.params);
|
|
8864
8896
|
const context = {
|
|
@@ -8878,7 +8910,7 @@ var ContractManager = class _ContractManager {
|
|
|
8878
8910
|
const { contractScript, collaborative = true, walletPubKey } = options;
|
|
8879
8911
|
const [contract] = await this.getContracts({ script: contractScript });
|
|
8880
8912
|
if (!contract) return [];
|
|
8881
|
-
const handler =
|
|
8913
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(contract.type);
|
|
8882
8914
|
if (!handler) return [];
|
|
8883
8915
|
const script = handler.createScript(contract.params);
|
|
8884
8916
|
const context = {
|
|
@@ -9145,7 +9177,7 @@ var ContractManager = class _ContractManager {
|
|
|
9145
9177
|
}
|
|
9146
9178
|
return result;
|
|
9147
9179
|
}
|
|
9148
|
-
async fetchContractVtxosBulk(contracts, pageSize =
|
|
9180
|
+
async fetchContractVtxosBulk(contracts, pageSize = chunk4KXOCVXP_cjs.DEFAULT_PAGE_SIZE, syncWindow) {
|
|
9149
9181
|
if (contracts.length === 0) {
|
|
9150
9182
|
return /* @__PURE__ */ new Map();
|
|
9151
9183
|
}
|
|
@@ -9219,6 +9251,8 @@ var HDDescriptorProvider = class _HDDescriptorProvider {
|
|
|
9219
9251
|
this.identity = identity;
|
|
9220
9252
|
this.walletRepository = walletRepository;
|
|
9221
9253
|
}
|
|
9254
|
+
identity;
|
|
9255
|
+
walletRepository;
|
|
9222
9256
|
/**
|
|
9223
9257
|
* Construct an HDDescriptorProvider. No I/O is performed here;
|
|
9224
9258
|
* persisted state is read lazily on the first call to
|
|
@@ -9321,7 +9355,7 @@ var HDDescriptorProvider = class _HDDescriptorProvider {
|
|
|
9321
9355
|
*/
|
|
9322
9356
|
materializeDescriptorAt(index) {
|
|
9323
9357
|
const descriptor = this.identity.descriptor;
|
|
9324
|
-
const network =
|
|
9358
|
+
const network = chunk4KXOCVXP_cjs.isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
|
|
9325
9359
|
const expansion = descriptorsScure.expand({ descriptor, network, index });
|
|
9326
9360
|
const keyInfo = expansion.expansionMap?.["@0"];
|
|
9327
9361
|
if (!keyInfo?.keyExpression) {
|
|
@@ -9411,6 +9445,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
|
|
|
9411
9445
|
this.currentTaggedScript = priorTaggedScript;
|
|
9412
9446
|
this.logger = logger ?? console;
|
|
9413
9447
|
}
|
|
9448
|
+
provider;
|
|
9414
9449
|
unsubscribe;
|
|
9415
9450
|
chain = Promise.resolve();
|
|
9416
9451
|
/**
|
|
@@ -9464,7 +9499,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
|
|
|
9464
9499
|
const provider = await resolveDescriptorProvider(config, setup.walletRepository);
|
|
9465
9500
|
if (!provider) return void 0;
|
|
9466
9501
|
const allowSilentFallback = (config.walletMode ?? "auto") === "auto";
|
|
9467
|
-
const expectedContractType = setup.offchainTapscript instanceof
|
|
9502
|
+
const expectedContractType = setup.offchainTapscript instanceof chunk4KXOCVXP_cjs.DelegateVtxo.Script ? "delegate" : "default";
|
|
9468
9503
|
const factoryOpts = {
|
|
9469
9504
|
walletRepository: setup.walletRepository,
|
|
9470
9505
|
contractRepository: setup.contractRepository,
|
|
@@ -9647,7 +9682,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
|
|
|
9647
9682
|
const newAddress = newTapscript.address(wallet.network.hrp, wallet.arkServerPublicKey).encode();
|
|
9648
9683
|
const manager = await wallet.getContractManager();
|
|
9649
9684
|
const csvTimelock = newTapscript.options.csvTimelock;
|
|
9650
|
-
const csvTimelockStr =
|
|
9685
|
+
const csvTimelockStr = chunkMQB5H4X5_cjs.timelockToSequence(csvTimelock).toString();
|
|
9651
9686
|
const serverPubKeyHex = base.hex.encode(newTapscript.options.serverPubKey);
|
|
9652
9687
|
const baseParams = {
|
|
9653
9688
|
script: newScript,
|
|
@@ -9661,11 +9696,11 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
|
|
|
9661
9696
|
// produce unsigned PSBTs that the server rejects with
|
|
9662
9697
|
// `INVALID_PSBT_INPUT (5): missing tapscript spend sig`.
|
|
9663
9698
|
metadata: {
|
|
9664
|
-
source:
|
|
9699
|
+
source: chunk4KXOCVXP_cjs.WALLET_RECEIVE_SOURCE,
|
|
9665
9700
|
signingDescriptor: descriptor
|
|
9666
9701
|
}
|
|
9667
9702
|
};
|
|
9668
|
-
if (newTapscript instanceof
|
|
9703
|
+
if (newTapscript instanceof chunk4KXOCVXP_cjs.DelegateVtxo.Script) {
|
|
9669
9704
|
await manager.createContract({
|
|
9670
9705
|
...baseParams,
|
|
9671
9706
|
type: "delegate",
|
|
@@ -9697,7 +9732,7 @@ var WalletReceiveRotator = class _WalletReceiveRotator {
|
|
|
9697
9732
|
};
|
|
9698
9733
|
function deriveLeafPubkey(descriptor) {
|
|
9699
9734
|
try {
|
|
9700
|
-
return
|
|
9735
|
+
return chunk4KXOCVXP_cjs.deriveDescriptorLeafPubKey(descriptor);
|
|
9701
9736
|
} catch (e) {
|
|
9702
9737
|
throw new NonRangeableDescriptorError(
|
|
9703
9738
|
"Cannot derive leaf pubkey: descriptor is not a materialized, parsable tr(...) shape.",
|
|
@@ -9706,10 +9741,10 @@ function deriveLeafPubkey(descriptor) {
|
|
|
9706
9741
|
}
|
|
9707
9742
|
}
|
|
9708
9743
|
function rebuildTapscript(current, pubKey) {
|
|
9709
|
-
if (current instanceof
|
|
9710
|
-
return new
|
|
9744
|
+
if (current instanceof chunk4KXOCVXP_cjs.DelegateVtxo.Script) {
|
|
9745
|
+
return new chunk4KXOCVXP_cjs.DelegateVtxo.Script({ ...current.options, pubKey });
|
|
9711
9746
|
}
|
|
9712
|
-
return new
|
|
9747
|
+
return new chunk4KXOCVXP_cjs.DefaultVtxo.Script({ ...current.options, pubKey });
|
|
9713
9748
|
}
|
|
9714
9749
|
async function pickActiveReceive(contractRepository, serverPubKey, expectedType) {
|
|
9715
9750
|
const candidates = await contractRepository.getContracts({
|
|
@@ -9718,7 +9753,7 @@ async function pickActiveReceive(contractRepository, serverPubKey, expectedType)
|
|
|
9718
9753
|
});
|
|
9719
9754
|
const serverPubKeyHex = base.hex.encode(serverPubKey);
|
|
9720
9755
|
const matching = candidates.filter(
|
|
9721
|
-
(c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source ===
|
|
9756
|
+
(c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunk4KXOCVXP_cjs.WALLET_RECEIVE_SOURCE
|
|
9722
9757
|
).sort((a, b) => {
|
|
9723
9758
|
if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt;
|
|
9724
9759
|
return signingDescriptorIndex(b.metadata?.signingDescriptor) - signingDescriptorIndex(a.metadata?.signingDescriptor);
|
|
@@ -9764,6 +9799,8 @@ var MissingSigningDescriptorError = class extends Error {
|
|
|
9764
9799
|
this.contractScript = contractScript;
|
|
9765
9800
|
this.contractType = contractType;
|
|
9766
9801
|
}
|
|
9802
|
+
contractScript;
|
|
9803
|
+
contractType;
|
|
9767
9804
|
name = "MissingSigningDescriptorError";
|
|
9768
9805
|
};
|
|
9769
9806
|
var DescriptorSigningProviderMissingError = class extends Error {
|
|
@@ -9779,6 +9816,7 @@ var InputSignerRouter = class {
|
|
|
9779
9816
|
constructor(deps) {
|
|
9780
9817
|
this.deps = deps;
|
|
9781
9818
|
}
|
|
9819
|
+
deps;
|
|
9782
9820
|
/**
|
|
9783
9821
|
* Resolve each job to its target signer without invoking signing. The
|
|
9784
9822
|
* returned plan is the single source of truth for both {@link sign} and
|
|
@@ -9891,12 +9929,12 @@ var InputSignerRouter = class {
|
|
|
9891
9929
|
};
|
|
9892
9930
|
|
|
9893
9931
|
// src/wallet/wallet.ts
|
|
9894
|
-
var getArkadeServerUrl = ({ arkServerUrl }) => arkServerUrl ||
|
|
9932
|
+
var getArkadeServerUrl = ({ arkServerUrl }) => arkServerUrl || chunkMQB5H4X5_cjs.DEFAULT_ARKADE_SERVER_URL;
|
|
9895
9933
|
function intentProofJobs(coins) {
|
|
9896
9934
|
if (coins.length === 0) return [];
|
|
9897
9935
|
const coinJobs = coins.map((coin, i) => ({
|
|
9898
9936
|
index: i + 1,
|
|
9899
|
-
lookupScript:
|
|
9937
|
+
lookupScript: chunkMQB5H4X5_cjs.VtxoScript.decode(coin.tapTree).pkScript
|
|
9900
9938
|
}));
|
|
9901
9939
|
return [{ index: 0, lookupScript: coinJobs[0].lookupScript }, ...coinJobs];
|
|
9902
9940
|
}
|
|
@@ -9920,7 +9958,7 @@ function dedupeTimelocks(timelocks) {
|
|
|
9920
9958
|
const seen = /* @__PURE__ */ new Set();
|
|
9921
9959
|
const deduped = [];
|
|
9922
9960
|
for (const timelock of timelocks) {
|
|
9923
|
-
const sequence =
|
|
9961
|
+
const sequence = chunkMQB5H4X5_cjs.timelockToSequence(timelock).toString();
|
|
9924
9962
|
if (seen.has(sequence)) continue;
|
|
9925
9963
|
seen.add(sequence);
|
|
9926
9964
|
deduped.push(timelock);
|
|
@@ -9937,7 +9975,7 @@ async function resolveBoardingBootTapscript(contractRepository, serverPubKey, ba
|
|
|
9937
9975
|
state: "active"
|
|
9938
9976
|
});
|
|
9939
9977
|
const newest = candidates.filter(
|
|
9940
|
-
(c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source ===
|
|
9978
|
+
(c) => c.params.serverPubKey === serverPubKeyHex && c.metadata?.source === chunk4KXOCVXP_cjs.WALLET_RECEIVE_SOURCE
|
|
9941
9979
|
).sort((a, b) => {
|
|
9942
9980
|
if (b.createdAt !== a.createdAt) return b.createdAt - a.createdAt;
|
|
9943
9981
|
return signingDescriptorIndex(b.metadata?.signingDescriptor) - signingDescriptorIndex(a.metadata?.signingDescriptor);
|
|
@@ -9945,7 +9983,7 @@ async function resolveBoardingBootTapscript(contractRepository, serverPubKey, ba
|
|
|
9945
9983
|
if (!newest?.params.pubKey) return baseline;
|
|
9946
9984
|
try {
|
|
9947
9985
|
const pubKey = base.hex.decode(newest.params.pubKey);
|
|
9948
|
-
return new
|
|
9986
|
+
return new chunk4KXOCVXP_cjs.DefaultVtxo.Script({ ...baseline.options, pubKey });
|
|
9949
9987
|
} catch (e) {
|
|
9950
9988
|
console.warn("Skipping malformed boarding contract at boot", newest.script, e);
|
|
9951
9989
|
return baseline;
|
|
@@ -9997,6 +10035,14 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
9997
10035
|
this._assetManager = new ReadonlyAssetManager(this.indexerProvider);
|
|
9998
10036
|
this.walletContractTimelocks = walletContractTimelocks && walletContractTimelocks.length > 0 ? dedupeTimelocks(walletContractTimelocks) : [this.offchainTapscript.options.csvTimelock];
|
|
9999
10037
|
}
|
|
10038
|
+
identity;
|
|
10039
|
+
network;
|
|
10040
|
+
onchainProvider;
|
|
10041
|
+
indexerProvider;
|
|
10042
|
+
dustAmount;
|
|
10043
|
+
walletRepository;
|
|
10044
|
+
contractRepository;
|
|
10045
|
+
delegateProvider;
|
|
10000
10046
|
_contractManager;
|
|
10001
10047
|
_contractManagerInitializing;
|
|
10002
10048
|
watcherConfig;
|
|
@@ -10239,7 +10285,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10239
10285
|
*/
|
|
10240
10286
|
static async setupWalletConfig(config, pubKey) {
|
|
10241
10287
|
const arkadeServerUrl = getArkadeServerUrl(config);
|
|
10242
|
-
const arkProvider = config.arkProvider || new
|
|
10288
|
+
const arkProvider = config.arkProvider || new chunk7IYIFMF4_cjs.RestArkProvider(arkadeServerUrl);
|
|
10243
10289
|
let indexerProvider = config.indexerProvider;
|
|
10244
10290
|
if (!indexerProvider) {
|
|
10245
10291
|
let indexerUrl = config.indexerUrl;
|
|
@@ -10256,7 +10302,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10256
10302
|
indexerUrl = arkadeServerUrl;
|
|
10257
10303
|
}
|
|
10258
10304
|
}
|
|
10259
|
-
indexerProvider = new
|
|
10305
|
+
indexerProvider = new chunk7IYIFMF4_cjs.RestIndexerProvider(indexerUrl);
|
|
10260
10306
|
}
|
|
10261
10307
|
const walletRepository = config.storage?.walletRepository ?? new IndexedDBWalletRepository();
|
|
10262
10308
|
const contractRepository = config.storage?.contractRepository ?? new IndexedDBContractRepository();
|
|
@@ -10265,7 +10311,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10265
10311
|
source: serverInfoSource,
|
|
10266
10312
|
lastOnlineAt: serverInfoLastOnlineAt
|
|
10267
10313
|
} = await resolveArkInfo(arkProvider, walletRepository);
|
|
10268
|
-
const network =
|
|
10314
|
+
const network = chunkMQB5H4X5_cjs.getNetwork(info.network);
|
|
10269
10315
|
if ("descriptor" in config.identity) {
|
|
10270
10316
|
const descriptor = config.identity.descriptor;
|
|
10271
10317
|
const identityIsMainnet = !descriptor.includes("tpub");
|
|
@@ -10312,11 +10358,11 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10312
10358
|
serverPubKey,
|
|
10313
10359
|
csvTimelock: exitTimelock
|
|
10314
10360
|
};
|
|
10315
|
-
const offchainTapscript = !delegatePubKey ? new
|
|
10316
|
-
const boardingTapscript =
|
|
10361
|
+
const offchainTapscript = !delegatePubKey ? new chunk4KXOCVXP_cjs.DefaultVtxo.Script(offchainOptions) : new chunk4KXOCVXP_cjs.DelegateVtxo.Script({ ...offchainOptions, delegatePubKey });
|
|
10362
|
+
const boardingTapscript = chunk4KXOCVXP_cjs.BoardingContractHandler.createScript({
|
|
10317
10363
|
pubKey: base.hex.encode(pubKey),
|
|
10318
10364
|
serverPubKey: base.hex.encode(serverPubKey),
|
|
10319
|
-
csvTimelock:
|
|
10365
|
+
csvTimelock: chunkMQB5H4X5_cjs.timelockToSequence(boardingTimelock).toString()
|
|
10320
10366
|
});
|
|
10321
10367
|
return {
|
|
10322
10368
|
arkProvider,
|
|
@@ -10650,9 +10696,9 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10650
10696
|
async getBoardingTapscripts(allowedSigners) {
|
|
10651
10697
|
const byScript = /* @__PURE__ */ new Map();
|
|
10652
10698
|
const add = (s) => byScript.set(base.hex.encode(s.pkScript), s);
|
|
10653
|
-
const boardingCsv = this.boardingTapscript.options.csvTimelock ??
|
|
10699
|
+
const boardingCsv = this.boardingTapscript.options.csvTimelock ?? chunk4KXOCVXP_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
10654
10700
|
add(
|
|
10655
|
-
new
|
|
10701
|
+
new chunk4KXOCVXP_cjs.DefaultVtxo.Script({
|
|
10656
10702
|
pubKey: await this.identity.xOnlyPublicKey(),
|
|
10657
10703
|
serverPubKey: this.boardingTapscript.options.serverPubKey,
|
|
10658
10704
|
csvTimelock: boardingCsv
|
|
@@ -10667,7 +10713,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10667
10713
|
for (const c of boardingContracts) {
|
|
10668
10714
|
if (!allowed.has(toXOnlySignerHex(c.params.serverPubKey))) continue;
|
|
10669
10715
|
try {
|
|
10670
|
-
add(
|
|
10716
|
+
add(chunk4KXOCVXP_cjs.BoardingContractHandler.createScript(c.params));
|
|
10671
10717
|
} catch (e) {
|
|
10672
10718
|
console.warn("Skipping malformed boarding contract", c.script, e);
|
|
10673
10719
|
}
|
|
@@ -10705,7 +10751,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10705
10751
|
// Per-row CSV delay decoded from THIS tapscript's exit leaf —
|
|
10706
10752
|
// not the wallet's current boarding timelock, which a signer
|
|
10707
10753
|
// rotation may have changed.
|
|
10708
|
-
csvTimelock:
|
|
10754
|
+
csvTimelock: chunkMQB5H4X5_cjs.CSVMultisigTapscript.decode(base.hex.decode(tapscript.exitScript)).params.timelock,
|
|
10709
10755
|
coins: utxos
|
|
10710
10756
|
});
|
|
10711
10757
|
}
|
|
@@ -10871,7 +10917,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10871
10917
|
});
|
|
10872
10918
|
for (const contract of contracts) {
|
|
10873
10919
|
if (map.has(contract.script)) continue;
|
|
10874
|
-
const handler =
|
|
10920
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(contract.type);
|
|
10875
10921
|
if (handler) {
|
|
10876
10922
|
const script = handler.createScript(contract.params);
|
|
10877
10923
|
map.set(contract.script, script);
|
|
@@ -10965,7 +11011,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10965
11011
|
watcherConfig: this.watcherConfig
|
|
10966
11012
|
});
|
|
10967
11013
|
const baselinePubkey = await this.identity.xOnlyPublicKey();
|
|
10968
|
-
const delegatePubKey = this.offchainTapscript instanceof
|
|
11014
|
+
const delegatePubKey = this.offchainTapscript instanceof chunk4KXOCVXP_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
|
|
10969
11015
|
const baselineSigners = [
|
|
10970
11016
|
this.offchainTapscript.options.serverPubKey,
|
|
10971
11017
|
...[...this._deprecatedSigners.keys()].map((h) => base.hex.decode(h))
|
|
@@ -10973,8 +11019,8 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10973
11019
|
const seenBaselineScripts = /* @__PURE__ */ new Set();
|
|
10974
11020
|
for (const serverPubKey of baselineSigners) {
|
|
10975
11021
|
for (const csvTimelock of this.walletContractTimelocks) {
|
|
10976
|
-
const csvTimelockStr =
|
|
10977
|
-
const defaultScript = new
|
|
11022
|
+
const csvTimelockStr = chunkMQB5H4X5_cjs.timelockToSequence(csvTimelock).toString();
|
|
11023
|
+
const defaultScript = new chunk4KXOCVXP_cjs.DefaultVtxo.Script({
|
|
10978
11024
|
pubKey: baselinePubkey,
|
|
10979
11025
|
serverPubKey,
|
|
10980
11026
|
csvTimelock
|
|
@@ -10995,7 +11041,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
10995
11041
|
});
|
|
10996
11042
|
}
|
|
10997
11043
|
if (delegatePubKey) {
|
|
10998
|
-
const delegateScript = new
|
|
11044
|
+
const delegateScript = new chunk4KXOCVXP_cjs.DelegateVtxo.Script({
|
|
10999
11045
|
pubKey: baselinePubkey,
|
|
11000
11046
|
serverPubKey,
|
|
11001
11047
|
delegatePubKey,
|
|
@@ -11019,9 +11065,9 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
11019
11065
|
}
|
|
11020
11066
|
}
|
|
11021
11067
|
}
|
|
11022
|
-
const boardingCsvTimelock = this.boardingTapscript.options.csvTimelock ??
|
|
11068
|
+
const boardingCsvTimelock = this.boardingTapscript.options.csvTimelock ?? chunk4KXOCVXP_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
11023
11069
|
for (const serverPubKey of baselineSigners) {
|
|
11024
|
-
const baselineBoarding = new
|
|
11070
|
+
const baselineBoarding = new chunk4KXOCVXP_cjs.DefaultVtxo.Script({
|
|
11025
11071
|
pubKey: baselinePubkey,
|
|
11026
11072
|
serverPubKey,
|
|
11027
11073
|
csvTimelock: boardingCsvTimelock
|
|
@@ -11034,7 +11080,7 @@ var ReadonlyWallet = class _ReadonlyWallet {
|
|
|
11034
11080
|
params: {
|
|
11035
11081
|
pubKey: base.hex.encode(baselineBoarding.options.pubKey),
|
|
11036
11082
|
serverPubKey: base.hex.encode(serverPubKey),
|
|
11037
|
-
csvTimelock:
|
|
11083
|
+
csvTimelock: chunkMQB5H4X5_cjs.timelockToSequence(boardingCsvTimelock).toString()
|
|
11038
11084
|
},
|
|
11039
11085
|
script: boardingScriptHex,
|
|
11040
11086
|
address: baselineBoarding.address(this.network.hrp, serverPubKey).encode(),
|
|
@@ -11103,6 +11149,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11103
11149
|
boardingPkScript: boardingTapscript.pkScript
|
|
11104
11150
|
});
|
|
11105
11151
|
}
|
|
11152
|
+
arkProvider;
|
|
11153
|
+
forfeitOutputScript;
|
|
11154
|
+
forfeitPubkey;
|
|
11106
11155
|
static MIN_FEE_RATE = 1;
|
|
11107
11156
|
// sats/vbyte
|
|
11108
11157
|
identity;
|
|
@@ -11254,25 +11303,25 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11254
11303
|
return this.getBoardingAddress();
|
|
11255
11304
|
}
|
|
11256
11305
|
const descriptor = await provider.getNextSigningDescriptor();
|
|
11257
|
-
const pubKey =
|
|
11258
|
-
const newBoarding = new
|
|
11306
|
+
const pubKey = chunk4KXOCVXP_cjs.deriveDescriptorLeafPubKey(descriptor);
|
|
11307
|
+
const newBoarding = new chunk4KXOCVXP_cjs.DefaultVtxo.Script({
|
|
11259
11308
|
...this._boardingTapscript.options,
|
|
11260
11309
|
pubKey
|
|
11261
11310
|
});
|
|
11262
|
-
const csvTimelock = newBoarding.options.csvTimelock ??
|
|
11311
|
+
const csvTimelock = newBoarding.options.csvTimelock ?? chunk4KXOCVXP_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
11263
11312
|
const manager = await this.getContractManager();
|
|
11264
11313
|
await manager.createContract({
|
|
11265
11314
|
type: "boarding",
|
|
11266
11315
|
params: {
|
|
11267
11316
|
pubKey: base.hex.encode(pubKey),
|
|
11268
11317
|
serverPubKey: base.hex.encode(newBoarding.options.serverPubKey),
|
|
11269
|
-
csvTimelock:
|
|
11318
|
+
csvTimelock: chunkMQB5H4X5_cjs.timelockToSequence(csvTimelock).toString()
|
|
11270
11319
|
},
|
|
11271
11320
|
script: base.hex.encode(newBoarding.pkScript),
|
|
11272
11321
|
address: newBoarding.address(this.network.hrp, this.arkServerPublicKey).encode(),
|
|
11273
11322
|
state: "active",
|
|
11274
11323
|
metadata: {
|
|
11275
|
-
source:
|
|
11324
|
+
source: chunk4KXOCVXP_cjs.WALLET_RECEIVE_SOURCE,
|
|
11276
11325
|
signingDescriptor: descriptor
|
|
11277
11326
|
}
|
|
11278
11327
|
});
|
|
@@ -11311,7 +11360,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11311
11360
|
const xonly = toXOnlyPubKey(newServerPubKey);
|
|
11312
11361
|
let newServerUnrollScript;
|
|
11313
11362
|
try {
|
|
11314
|
-
newServerUnrollScript =
|
|
11363
|
+
newServerUnrollScript = chunkMQB5H4X5_cjs.CSVMultisigTapscript.decode(base.hex.decode(checkpointTapscript));
|
|
11315
11364
|
} catch (e) {
|
|
11316
11365
|
throw new Error("Invalid checkpointTapscript from server");
|
|
11317
11366
|
}
|
|
@@ -11339,21 +11388,21 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11339
11388
|
const [currentBoardingRow] = await manager.getContracts({
|
|
11340
11389
|
script: currentBoardingScript
|
|
11341
11390
|
});
|
|
11342
|
-
const newOffchain = this.offchainTapscript instanceof
|
|
11391
|
+
const newOffchain = this.offchainTapscript instanceof chunk4KXOCVXP_cjs.DelegateVtxo.Script ? new chunk4KXOCVXP_cjs.DelegateVtxo.Script({
|
|
11343
11392
|
...this.offchainTapscript.options,
|
|
11344
11393
|
serverPubKey: xonly
|
|
11345
|
-
}) : new
|
|
11394
|
+
}) : new chunk4KXOCVXP_cjs.DefaultVtxo.Script({
|
|
11346
11395
|
...this.offchainTapscript.options,
|
|
11347
11396
|
serverPubKey: xonly
|
|
11348
11397
|
});
|
|
11349
|
-
const newBoarding = new
|
|
11398
|
+
const newBoarding = new chunk4KXOCVXP_cjs.DefaultVtxo.Script({
|
|
11350
11399
|
...this._boardingTapscript.options,
|
|
11351
11400
|
serverPubKey: xonly
|
|
11352
11401
|
});
|
|
11353
|
-
const offchainCsv =
|
|
11402
|
+
const offchainCsv = chunkMQB5H4X5_cjs.timelockToSequence(newOffchain.options.csvTimelock).toString();
|
|
11354
11403
|
const newOffchainScript = base.hex.encode(newOffchain.pkScript);
|
|
11355
11404
|
const newOffchainAddress = newOffchain.address(this.network.hrp, xonly).encode();
|
|
11356
|
-
if (newOffchain instanceof
|
|
11405
|
+
if (newOffchain instanceof chunk4KXOCVXP_cjs.DelegateVtxo.Script) {
|
|
11357
11406
|
await manager.createContract({
|
|
11358
11407
|
type: "delegate",
|
|
11359
11408
|
params: {
|
|
@@ -11381,13 +11430,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11381
11430
|
metadata: currentOffchainRow?.metadata
|
|
11382
11431
|
});
|
|
11383
11432
|
}
|
|
11384
|
-
const boardingCsv = newBoarding.options.csvTimelock ??
|
|
11433
|
+
const boardingCsv = newBoarding.options.csvTimelock ?? chunk4KXOCVXP_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
11385
11434
|
await manager.createContract({
|
|
11386
11435
|
type: "boarding",
|
|
11387
11436
|
params: {
|
|
11388
11437
|
pubKey: base.hex.encode(newBoarding.options.pubKey),
|
|
11389
11438
|
serverPubKey: base.hex.encode(xonly),
|
|
11390
|
-
csvTimelock:
|
|
11439
|
+
csvTimelock: chunkMQB5H4X5_cjs.timelockToSequence(boardingCsv).toString()
|
|
11391
11440
|
},
|
|
11392
11441
|
script: base.hex.encode(newBoarding.pkScript),
|
|
11393
11442
|
address: newBoarding.address(this.network.hrp, xonly).encode(),
|
|
@@ -11482,7 +11531,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11482
11531
|
const hd = provider instanceof HDDescriptorProvider;
|
|
11483
11532
|
const staticDescriptor = hd ? void 0 : `tr(${base.hex.encode(await this.identity.xOnlyPublicKey())})`;
|
|
11484
11533
|
const materialize = (index) => hd ? provider.materializeDescriptorAt(index) : staticDescriptor;
|
|
11485
|
-
const delegatePubKey = this.offchainTapscript instanceof
|
|
11534
|
+
const delegatePubKey = this.offchainTapscript instanceof chunk4KXOCVXP_cjs.DelegateVtxo.Script ? this.offchainTapscript.options.delegatePubKey : void 0;
|
|
11486
11535
|
const arkInfo = await this.arkProvider.getInfo();
|
|
11487
11536
|
const currentSignerPubKey = toXOnlyPubKey(base.hex.decode(arkInfo.signerPubkey));
|
|
11488
11537
|
const deprecatedSignerPubKeys = arkInfo.deprecatedSigners.map(
|
|
@@ -11501,7 +11550,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11501
11550
|
csvTimelocks: this.walletContractTimelocks,
|
|
11502
11551
|
// Boarding-exit CSV so the boarding handler can build its
|
|
11503
11552
|
// candidate script (distinct from the unilateral-exit matrix).
|
|
11504
|
-
boardingTimelock: this.boardingTapscript.options.csvTimelock ??
|
|
11553
|
+
boardingTimelock: this.boardingTapscript.options.csvTimelock ?? chunk4KXOCVXP_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK,
|
|
11505
11554
|
delegatePubKey
|
|
11506
11555
|
};
|
|
11507
11556
|
const result = await manager.scanContracts({
|
|
@@ -11605,7 +11654,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11605
11654
|
let serverUnrollScript;
|
|
11606
11655
|
try {
|
|
11607
11656
|
const raw = base.hex.decode(setup.info.checkpointTapscript);
|
|
11608
|
-
serverUnrollScript =
|
|
11657
|
+
serverUnrollScript = chunkMQB5H4X5_cjs.CSVMultisigTapscript.decode(raw);
|
|
11609
11658
|
} catch (e) {
|
|
11610
11659
|
throw new Error("Invalid checkpointTapscript from server");
|
|
11611
11660
|
}
|
|
@@ -11742,7 +11791,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11742
11791
|
inputs: params.selectedVtxos,
|
|
11743
11792
|
changeAmount: BigInt(changeAmount)
|
|
11744
11793
|
};
|
|
11745
|
-
const outputAddress =
|
|
11794
|
+
const outputAddress = chunkMQB5H4X5_cjs.ArkAddress.decode(params.address);
|
|
11746
11795
|
const outputScript = BigInt(params.amount) < this.dustAmount ? outputAddress.subdustPkScript : outputAddress.pkScript;
|
|
11747
11796
|
const outputs = [
|
|
11748
11797
|
{
|
|
@@ -11795,13 +11844,13 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11795
11844
|
}
|
|
11796
11845
|
}
|
|
11797
11846
|
const offchainAddress = await this.getAddress();
|
|
11798
|
-
const offchainPkScript =
|
|
11847
|
+
const offchainPkScript = chunkMQB5H4X5_cjs.ArkAddress.decode(offchainAddress).pkScript;
|
|
11799
11848
|
const offchainOutputScript = base.hex.encode(offchainPkScript);
|
|
11800
11849
|
if (!params) {
|
|
11801
11850
|
const { fees, vtxoMaxAmount } = await this.arkProvider.getInfo();
|
|
11802
11851
|
const estimator = new Estimator(fees.intentFee);
|
|
11803
11852
|
let amount = 0;
|
|
11804
|
-
const exitScript =
|
|
11853
|
+
const exitScript = chunkMQB5H4X5_cjs.CSVMultisigTapscript.decode(
|
|
11805
11854
|
base.hex.decode(this.boardingTapscript.exitScript)
|
|
11806
11855
|
);
|
|
11807
11856
|
const boardingTimelock = exitScript.params.timelock;
|
|
@@ -11867,7 +11916,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11867
11916
|
script: offchainOutputScript
|
|
11868
11917
|
});
|
|
11869
11918
|
output.amount -= BigInt(outputFee.satoshis);
|
|
11870
|
-
if (output.amount
|
|
11919
|
+
if (isSubdust(output.amount, this.dustAmount)) {
|
|
11871
11920
|
throw new Error("Output amount is below dust limit");
|
|
11872
11921
|
}
|
|
11873
11922
|
params = {
|
|
@@ -11881,7 +11930,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
11881
11930
|
for (const [index, output] of params.outputs.entries()) {
|
|
11882
11931
|
let script;
|
|
11883
11932
|
try {
|
|
11884
|
-
const addr =
|
|
11933
|
+
const addr = chunkMQB5H4X5_cjs.ArkAddress.decode(output.address);
|
|
11885
11934
|
script = addr.pkScript;
|
|
11886
11935
|
hasOffchainOutputs = true;
|
|
11887
11936
|
} catch {
|
|
@@ -12115,7 +12164,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12115
12164
|
}
|
|
12116
12165
|
continue;
|
|
12117
12166
|
}
|
|
12118
|
-
if (isRecoverable(input) || isSubdust(input, this.dustAmount)) {
|
|
12167
|
+
if (isRecoverable(input) || isSubdust({ value: input.value }, this.dustAmount)) {
|
|
12119
12168
|
continue;
|
|
12120
12169
|
}
|
|
12121
12170
|
if (connectorsLeaves.length === 0) {
|
|
@@ -12143,7 +12192,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12143
12192
|
index: input.vout,
|
|
12144
12193
|
witnessUtxo: {
|
|
12145
12194
|
amount: BigInt(input.value),
|
|
12146
|
-
script:
|
|
12195
|
+
script: chunkMQB5H4X5_cjs.VtxoScript.decode(input.tapTree).pkScript
|
|
12147
12196
|
},
|
|
12148
12197
|
sighashType: btcSigner.SigHash.DEFAULT,
|
|
12149
12198
|
tapLeafScript: [input.forfeitTapLeafScript]
|
|
@@ -12162,7 +12211,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12162
12211
|
forfeitTx = await this._signerRouter.sign(forfeitTx, [
|
|
12163
12212
|
{
|
|
12164
12213
|
index: 0,
|
|
12165
|
-
lookupScript:
|
|
12214
|
+
lookupScript: chunkMQB5H4X5_cjs.VtxoScript.decode(input.tapTree).pkScript
|
|
12166
12215
|
}
|
|
12167
12216
|
]);
|
|
12168
12217
|
signedForfeits.push(base.base64.encode(forfeitTx.toPSBT()));
|
|
@@ -12220,7 +12269,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12220
12269
|
if (skip) {
|
|
12221
12270
|
return { skip };
|
|
12222
12271
|
}
|
|
12223
|
-
const sweepTapscript =
|
|
12272
|
+
const sweepTapscript = chunkMQB5H4X5_cjs.CSVMultisigTapscript.encode({
|
|
12224
12273
|
timelock: {
|
|
12225
12274
|
value: event.batchExpiry,
|
|
12226
12275
|
type: event.batchExpiry >= 512n ? "seconds" : "blocks"
|
|
@@ -12326,9 +12375,9 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12326
12375
|
...existing ?? {},
|
|
12327
12376
|
intentTxId,
|
|
12328
12377
|
registerProof: intent.proof,
|
|
12329
|
-
registerProofMessage:
|
|
12378
|
+
registerProofMessage: chunk7IYIFMF4_cjs.Intent.encodeMessage(intent.message),
|
|
12330
12379
|
deleteProof: deleteIntent.proof,
|
|
12331
|
-
deleteProofMessage:
|
|
12380
|
+
deleteProofMessage: chunk7IYIFMF4_cjs.Intent.encodeMessage(deleteIntent.message),
|
|
12332
12381
|
intentVtxos: inputs.map((i) => ({
|
|
12333
12382
|
txid: i.txid,
|
|
12334
12383
|
vout: i.vout
|
|
@@ -12360,7 +12409,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12360
12409
|
try {
|
|
12361
12410
|
return await this.arkProvider.registerIntent(intent);
|
|
12362
12411
|
} catch (error) {
|
|
12363
|
-
if (error instanceof
|
|
12412
|
+
if (error instanceof chunk7IYIFMF4_cjs.ArkError && error.code === 0 && error.message.includes("duplicated input")) {
|
|
12364
12413
|
const deleteIntent = await this.makeDeleteIntentSignature(inputs);
|
|
12365
12414
|
await this.arkProvider.deleteIntent(deleteIntent);
|
|
12366
12415
|
return this.arkProvider.registerIntent(intent);
|
|
@@ -12376,7 +12425,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12376
12425
|
expire_at: 0,
|
|
12377
12426
|
cosigners_public_keys: cosignerPubKeys
|
|
12378
12427
|
};
|
|
12379
|
-
const proof =
|
|
12428
|
+
const proof = chunk7IYIFMF4_cjs.Intent.create(message, coins, outputs);
|
|
12380
12429
|
const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
|
|
12381
12430
|
return {
|
|
12382
12431
|
proof: base.base64.encode(signedProof.toPSBT()),
|
|
@@ -12388,7 +12437,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12388
12437
|
type: "delete",
|
|
12389
12438
|
expire_at: 0
|
|
12390
12439
|
};
|
|
12391
|
-
const proof =
|
|
12440
|
+
const proof = chunk7IYIFMF4_cjs.Intent.create(message, coins, []);
|
|
12392
12441
|
const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
|
|
12393
12442
|
return {
|
|
12394
12443
|
proof: base.base64.encode(signedProof.toPSBT()),
|
|
@@ -12400,7 +12449,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12400
12449
|
type: "get-pending-tx",
|
|
12401
12450
|
expire_at: 0
|
|
12402
12451
|
};
|
|
12403
|
-
const proof =
|
|
12452
|
+
const proof = chunk7IYIFMF4_cjs.Intent.create(message, coins, []);
|
|
12404
12453
|
const signedProof = await this._signerRouter.sign(proof, intentProofJobs(coins));
|
|
12405
12454
|
return {
|
|
12406
12455
|
proof: base.base64.encode(signedProof.toPSBT()),
|
|
@@ -12816,7 +12865,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
12816
12865
|
);
|
|
12817
12866
|
const arkTxJobs = inputs.map((input, index) => ({
|
|
12818
12867
|
index,
|
|
12819
|
-
lookupScript:
|
|
12868
|
+
lookupScript: chunkMQB5H4X5_cjs.VtxoScript.decode(input.tapTree).pkScript
|
|
12820
12869
|
}));
|
|
12821
12870
|
const checkpointJobs = offchainTx.checkpoints.map(
|
|
12822
12871
|
(c) => this.inputSigningJobsFromWitnessUtxos(c)
|
|
@@ -13049,7 +13098,7 @@ var Wallet2 = class _Wallet extends ReadonlyWallet {
|
|
|
13049
13098
|
} else {
|
|
13050
13099
|
let sourceAddress;
|
|
13051
13100
|
try {
|
|
13052
|
-
sourceAddress =
|
|
13101
|
+
sourceAddress = chunkMQB5H4X5_cjs.VtxoScript.decode(input.tapTree).onchainAddress(
|
|
13053
13102
|
this.network
|
|
13054
13103
|
);
|
|
13055
13104
|
} catch {
|
|
@@ -13194,6 +13243,8 @@ var MessageBus = class {
|
|
|
13194
13243
|
this.debug = debug;
|
|
13195
13244
|
this.buildServicesFn = buildServices ?? this.buildServices.bind(this);
|
|
13196
13245
|
}
|
|
13246
|
+
walletRepository;
|
|
13247
|
+
contractRepository;
|
|
13197
13248
|
handlers;
|
|
13198
13249
|
tickIntervalMs;
|
|
13199
13250
|
messageTimeoutMs;
|
|
@@ -13358,7 +13409,7 @@ var MessageBus = class {
|
|
|
13358
13409
|
this.initialized = true;
|
|
13359
13410
|
}
|
|
13360
13411
|
async buildServices(config) {
|
|
13361
|
-
const arkProvider = new
|
|
13412
|
+
const arkProvider = new chunk7IYIFMF4_cjs.RestArkProvider(config.arkServer.url);
|
|
13362
13413
|
const storage = {
|
|
13363
13414
|
walletRepository: this.walletRepository,
|
|
13364
13415
|
contractRepository: this.contractRepository
|
|
@@ -13695,6 +13746,7 @@ var Ramps = class {
|
|
|
13695
13746
|
constructor(wallet) {
|
|
13696
13747
|
this.wallet = wallet;
|
|
13697
13748
|
}
|
|
13749
|
+
wallet;
|
|
13698
13750
|
/**
|
|
13699
13751
|
* Onboard boarding inputs.
|
|
13700
13752
|
*
|
|
@@ -13740,7 +13792,7 @@ var Ramps = class {
|
|
|
13740
13792
|
}
|
|
13741
13793
|
amount = amount ?? totalAmount;
|
|
13742
13794
|
const offchainAddress = await this.wallet.getAddress();
|
|
13743
|
-
const offchainAddr =
|
|
13795
|
+
const offchainAddr = chunkMQB5H4X5_cjs.ArkAddress.decode(offchainAddress);
|
|
13744
13796
|
const offchainScript = base.hex.encode(offchainAddr.pkScript);
|
|
13745
13797
|
const outputFee = estimator.evalOffchainOutput({
|
|
13746
13798
|
amount,
|
|
@@ -13838,7 +13890,7 @@ var Ramps = class {
|
|
|
13838
13890
|
let destinationScript;
|
|
13839
13891
|
for (const networkName of networkNames) {
|
|
13840
13892
|
try {
|
|
13841
|
-
const network =
|
|
13893
|
+
const network = chunkMQB5H4X5_cjs.networks[networkName];
|
|
13842
13894
|
const addr = btcSigner.Address(network).decode(destinationAddress);
|
|
13843
13895
|
destinationScript = btcSigner.OutScript.encode(addr);
|
|
13844
13896
|
break;
|
|
@@ -14523,7 +14575,7 @@ var WalletMessageHandler = class {
|
|
|
14523
14575
|
// Wallet methods
|
|
14524
14576
|
async handleInitWallet({ payload }) {
|
|
14525
14577
|
const { arkServerUrl } = payload;
|
|
14526
|
-
this.indexerProvider = new
|
|
14578
|
+
this.indexerProvider = new chunk7IYIFMF4_cjs.RestIndexerProvider(arkServerUrl);
|
|
14527
14579
|
await this.onWalletInitialized();
|
|
14528
14580
|
}
|
|
14529
14581
|
async handleGetBalance() {
|
|
@@ -15041,6 +15093,8 @@ var ServiceWorkerReadonlyAssetManager = class {
|
|
|
15041
15093
|
this.sendMessage = sendMessage;
|
|
15042
15094
|
this.messageTag = messageTag;
|
|
15043
15095
|
}
|
|
15096
|
+
sendMessage;
|
|
15097
|
+
messageTag;
|
|
15044
15098
|
async getAssetDetails(assetId) {
|
|
15045
15099
|
const message = {
|
|
15046
15100
|
tag: this.messageTag,
|
|
@@ -15125,6 +15179,8 @@ var ServiceWorkerReadonlyWallet = class _ServiceWorkerReadonlyWallet {
|
|
|
15125
15179
|
messageTag
|
|
15126
15180
|
);
|
|
15127
15181
|
}
|
|
15182
|
+
serviceWorker;
|
|
15183
|
+
messageTag;
|
|
15128
15184
|
walletRepository;
|
|
15129
15185
|
contractRepository;
|
|
15130
15186
|
identity;
|
|
@@ -15877,6 +15933,7 @@ var ServiceWorkerWallet = class _ServiceWorkerWallet extends ServiceWorkerReadon
|
|
|
15877
15933
|
);
|
|
15878
15934
|
this.hasDelegate = hasDelegate;
|
|
15879
15935
|
}
|
|
15936
|
+
serviceWorker;
|
|
15880
15937
|
walletRepository;
|
|
15881
15938
|
contractRepository;
|
|
15882
15939
|
identity;
|
|
@@ -16258,6 +16315,7 @@ var OnchainWallet = class _OnchainWallet {
|
|
|
16258
16315
|
this.onchainP2TR = onchainP2TR;
|
|
16259
16316
|
this.provider = provider;
|
|
16260
16317
|
}
|
|
16318
|
+
identity;
|
|
16261
16319
|
static MIN_FEE_RATE = 1;
|
|
16262
16320
|
// sat/vbyte
|
|
16263
16321
|
onchainP2TR;
|
|
@@ -16272,12 +16330,12 @@ var OnchainWallet = class _OnchainWallet {
|
|
|
16272
16330
|
* @returns Configured onchain wallet
|
|
16273
16331
|
* @throws Error if the configured identity cannot produce a valid x-only public key
|
|
16274
16332
|
*/
|
|
16275
|
-
static async create(identity, networkName =
|
|
16333
|
+
static async create(identity, networkName = chunkMQB5H4X5_cjs.DEFAULT_NETWORK_NAME, provider) {
|
|
16276
16334
|
const pubkey = await identity.xOnlyPublicKey();
|
|
16277
16335
|
if (!pubkey) {
|
|
16278
16336
|
throw new Error("Invalid configured public key");
|
|
16279
16337
|
}
|
|
16280
|
-
const network =
|
|
16338
|
+
const network = chunkMQB5H4X5_cjs.getNetwork(networkName);
|
|
16281
16339
|
const onchainProvider = provider || new EsploraProvider(ESPLORA_URL[networkName]);
|
|
16282
16340
|
const onchainP2TR = btcSigner.p2tr(pubkey, void 0, network);
|
|
16283
16341
|
return new _OnchainWallet(identity, network, onchainP2TR, onchainProvider);
|
|
@@ -16383,7 +16441,7 @@ var OnchainWallet = class _OnchainWallet {
|
|
|
16383
16441
|
if (!inputs) {
|
|
16384
16442
|
throw new Error("Fee estimation failed");
|
|
16385
16443
|
}
|
|
16386
|
-
let tx = new
|
|
16444
|
+
let tx = new chunk7IYIFMF4_cjs.Transaction();
|
|
16387
16445
|
for (const input of inputs) {
|
|
16388
16446
|
tx.addInput({
|
|
16389
16447
|
txid: input.txid,
|
|
@@ -16441,7 +16499,7 @@ var OnchainWallet = class _OnchainWallet {
|
|
|
16441
16499
|
* @throws If the parent has no anchor, or funding cannot be selected/signed
|
|
16442
16500
|
*/
|
|
16443
16501
|
async bumpAnchor(parentHex, feeRate) {
|
|
16444
|
-
const parent =
|
|
16502
|
+
const parent = chunk7IYIFMF4_cjs.Transaction.fromRaw(base.hex.decode(parentHex));
|
|
16445
16503
|
const coins = (await this.getCoins()).filter((c) => c.status.confirmed);
|
|
16446
16504
|
const child = await this.buildBumpPackage(parent, feeRate, coins);
|
|
16447
16505
|
return [parent.hex, child.hex];
|
|
@@ -16559,6 +16617,8 @@ var WsElectrumChainSource = class {
|
|
|
16559
16617
|
this.ws = ws;
|
|
16560
16618
|
this.network = network;
|
|
16561
16619
|
}
|
|
16620
|
+
ws;
|
|
16621
|
+
network;
|
|
16562
16622
|
// Cached chain tip kept fresh by the headers subscription. Initialized
|
|
16563
16623
|
// lazily on first call to subscribeHeaders().
|
|
16564
16624
|
cachedTip = null;
|
|
@@ -16841,6 +16901,8 @@ var ElectrumOnchainProvider = class {
|
|
|
16841
16901
|
this.network = network;
|
|
16842
16902
|
this.chain = new WsElectrumChainSource(ws, network);
|
|
16843
16903
|
}
|
|
16904
|
+
ws;
|
|
16905
|
+
network;
|
|
16844
16906
|
chain;
|
|
16845
16907
|
async getCoins(address) {
|
|
16846
16908
|
const script = this.encodeAddress(address);
|
|
@@ -17202,7 +17264,7 @@ exports.BIP322 = void 0;
|
|
|
17202
17264
|
async function sign2(message, identity, network) {
|
|
17203
17265
|
const xOnlyPubKey = await identity.xOnlyPublicKey();
|
|
17204
17266
|
const payment = btcSigner.p2tr(xOnlyPubKey, void 0, network);
|
|
17205
|
-
const toSpend =
|
|
17267
|
+
const toSpend = chunk7IYIFMF4_cjs.craftToSpendTx(message, payment.script, TAG_BIP322);
|
|
17206
17268
|
const toSign = craftBIP322ToSignP2TR(toSpend, payment.script, xOnlyPubKey);
|
|
17207
17269
|
const signed = await identity.sign(toSign, [0]);
|
|
17208
17270
|
signed.finalizeIdx(0);
|
|
@@ -17260,7 +17322,7 @@ function verifyP2TR(message, witnessItems, pkScript, pubkey) {
|
|
|
17260
17322
|
if (sighashType !== btcSigner.SigHash.DEFAULT && sighashType !== btcSigner.SigHash.ALL) {
|
|
17261
17323
|
return false;
|
|
17262
17324
|
}
|
|
17263
|
-
const toSpend =
|
|
17325
|
+
const toSpend = chunk7IYIFMF4_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
|
|
17264
17326
|
const toSign = craftBIP322ToSignP2TR(toSpend, pkScript, pubkey);
|
|
17265
17327
|
const sighash = toSign.preimageWitnessV1(0, [pkScript], sighashType, [0n]);
|
|
17266
17328
|
const rawSig = sig.length === 65 ? sig.subarray(0, 64) : sig;
|
|
@@ -17281,7 +17343,7 @@ function verifyP2WPKH(message, witnessItems, pkScript, addressHash) {
|
|
|
17281
17343
|
}
|
|
17282
17344
|
const sighashType = sigWithHash[sigWithHash.length - 1];
|
|
17283
17345
|
const derSig = sigWithHash.subarray(0, sigWithHash.length - 1);
|
|
17284
|
-
const toSpend =
|
|
17346
|
+
const toSpend = chunk7IYIFMF4_cjs.craftToSpendTx(message, pkScript, TAG_BIP322);
|
|
17285
17347
|
const toSign = craftBIP322ToSignSimple(toSpend, pkScript);
|
|
17286
17348
|
const scriptCode = btcSigner.OutScript.encode({ type: "pkh", hash: addressHash });
|
|
17287
17349
|
const sighash = toSign.preimageWitnessV0(0, scriptCode, sighashType, 0n);
|
|
@@ -17334,7 +17396,7 @@ function encodeCompactSize(n) {
|
|
|
17334
17396
|
return buf;
|
|
17335
17397
|
}
|
|
17336
17398
|
function craftBIP322ToSignP2TR(toSpend, pkScript, tapInternalKey) {
|
|
17337
|
-
const tx = new
|
|
17399
|
+
const tx = new chunk7IYIFMF4_cjs.Transaction({ version: 0 });
|
|
17338
17400
|
tx.addInput({
|
|
17339
17401
|
txid: toSpend.id,
|
|
17340
17402
|
index: 0,
|
|
@@ -17348,12 +17410,12 @@ function craftBIP322ToSignP2TR(toSpend, pkScript, tapInternalKey) {
|
|
|
17348
17410
|
});
|
|
17349
17411
|
tx.addOutput({
|
|
17350
17412
|
amount: 0n,
|
|
17351
|
-
script:
|
|
17413
|
+
script: chunk7IYIFMF4_cjs.OP_RETURN_EMPTY_PKSCRIPT
|
|
17352
17414
|
});
|
|
17353
17415
|
return tx;
|
|
17354
17416
|
}
|
|
17355
17417
|
function craftBIP322ToSignSimple(toSpend, pkScript) {
|
|
17356
|
-
const tx = new
|
|
17418
|
+
const tx = new chunk7IYIFMF4_cjs.Transaction({ version: 0 });
|
|
17357
17419
|
tx.addInput({
|
|
17358
17420
|
txid: toSpend.id,
|
|
17359
17421
|
index: 0,
|
|
@@ -17365,12 +17427,12 @@ function craftBIP322ToSignSimple(toSpend, pkScript) {
|
|
|
17365
17427
|
});
|
|
17366
17428
|
tx.addOutput({
|
|
17367
17429
|
amount: 0n,
|
|
17368
|
-
script:
|
|
17430
|
+
script: chunk7IYIFMF4_cjs.OP_RETURN_EMPTY_PKSCRIPT
|
|
17369
17431
|
});
|
|
17370
17432
|
return tx;
|
|
17371
17433
|
}
|
|
17372
17434
|
function finalizeVirtualTx(type, psbtBase64) {
|
|
17373
|
-
const tx =
|
|
17435
|
+
const tx = chunk7IYIFMF4_cjs.Transaction.fromPSBT(base.base64.decode(psbtBase64));
|
|
17374
17436
|
if (type === "INDEXER_CHAINED_TX_TYPE_TREE" /* TREE */) {
|
|
17375
17437
|
const input = tx.getInput(0);
|
|
17376
17438
|
if (!input) {
|
|
@@ -17394,16 +17456,17 @@ var ExitPathError = class extends Error {
|
|
|
17394
17456
|
this.reason = reason;
|
|
17395
17457
|
this.name = "ExitPathError";
|
|
17396
17458
|
}
|
|
17459
|
+
reason;
|
|
17397
17460
|
};
|
|
17398
17461
|
function delayWeight(sequence) {
|
|
17399
|
-
const t =
|
|
17462
|
+
const t = chunkMQB5H4X5_cjs.sequenceToTimelock(sequence);
|
|
17400
17463
|
return t.type === "blocks" ? Number(t.value) : Number(t.value) / 600;
|
|
17401
17464
|
}
|
|
17402
17465
|
async function resolveUnilateralPath(params) {
|
|
17403
17466
|
const { vtxo, scriptHex, contractRepository } = params;
|
|
17404
17467
|
const contract = contractRepository ? (await contractRepository.getContracts({ script: scriptHex }))[0] : void 0;
|
|
17405
17468
|
if (contract) {
|
|
17406
|
-
const handler =
|
|
17469
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(contract.type);
|
|
17407
17470
|
if (!handler) {
|
|
17408
17471
|
throw new ExitPathError(
|
|
17409
17472
|
"no-handler",
|
|
@@ -17426,12 +17489,12 @@ async function resolveUnilateralPath(params) {
|
|
|
17426
17489
|
paths.sort((a, b) => delayWeight(a.sequence) - delayWeight(b.sequence));
|
|
17427
17490
|
return { selection: paths[0], label: `${contract.type}:unilateral` };
|
|
17428
17491
|
}
|
|
17429
|
-
const decoded =
|
|
17492
|
+
const decoded = chunkMQB5H4X5_cjs.VtxoScript.decode(vtxo.tapTree);
|
|
17430
17493
|
let best;
|
|
17431
17494
|
for (const exit of decoded.exitPaths()) {
|
|
17432
17495
|
const leaf = decoded.findLeaf(base.hex.encode(exit.script));
|
|
17433
17496
|
if (!leaf) continue;
|
|
17434
|
-
const sequence =
|
|
17497
|
+
const sequence = chunkMQB5H4X5_cjs.timelockToSequence(exit.params.timelock);
|
|
17435
17498
|
const weight = delayWeight(sequence);
|
|
17436
17499
|
if (!best || weight < best.weight) {
|
|
17437
17500
|
best = { selection: { leaf, sequence }, weight };
|
|
@@ -17477,6 +17540,11 @@ exports.Unroll = void 0;
|
|
|
17477
17540
|
this.indexer = indexer;
|
|
17478
17541
|
this.virtualTxRepository = virtualTxRepository;
|
|
17479
17542
|
}
|
|
17543
|
+
toUnroll;
|
|
17544
|
+
bumper;
|
|
17545
|
+
explorer;
|
|
17546
|
+
indexer;
|
|
17547
|
+
virtualTxRepository;
|
|
17480
17548
|
/** Create an unroll session by loading the virtual output chain from the indexer. */
|
|
17481
17549
|
static async create(toUnroll, bumper, explorer, indexer, virtualTxRepository) {
|
|
17482
17550
|
const { chain } = await indexer.getVtxoChain(toUnroll);
|
|
@@ -17612,14 +17680,14 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
|
|
|
17612
17680
|
}
|
|
17613
17681
|
const resolved = await resolveUnilateralPath({
|
|
17614
17682
|
vtxo,
|
|
17615
|
-
scriptHex: base.hex.encode(
|
|
17683
|
+
scriptHex: base.hex.encode(chunkMQB5H4X5_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
|
|
17616
17684
|
contractRepository: wallet.contractRepository,
|
|
17617
17685
|
walletPubKeyHex: base.hex.encode(await wallet.identity.xOnlyPublicKey()),
|
|
17618
17686
|
currentTime: Date.now()
|
|
17619
17687
|
});
|
|
17620
17688
|
const spendingLeaf = resolved.selection.leaf;
|
|
17621
17689
|
const sequence = resolved.selection.sequence;
|
|
17622
|
-
const timelock =
|
|
17690
|
+
const timelock = chunkMQB5H4X5_cjs.sequenceToTimelock(sequence);
|
|
17623
17691
|
const elapsed = timelock.type === "blocks" ? chainTip.height >= txStatus.blockHeight + Number(timelock.value) : chainTip.time >= txStatus.blockTime + Number(timelock.value);
|
|
17624
17692
|
if (!elapsed) {
|
|
17625
17693
|
throw new Error(`no available exit path found for vtxo ${vtxo.txid}:${vtxo.vout}`);
|
|
@@ -17632,7 +17700,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
|
|
|
17632
17700
|
sequence,
|
|
17633
17701
|
witnessUtxo: {
|
|
17634
17702
|
amount: BigInt(vtxo.value),
|
|
17635
|
-
script:
|
|
17703
|
+
script: chunkMQB5H4X5_cjs.VtxoScript.decode(vtxo.tapTree).pkScript
|
|
17636
17704
|
},
|
|
17637
17705
|
sighashType: btcSigner.SigHash.DEFAULT
|
|
17638
17706
|
});
|
|
@@ -17642,7 +17710,7 @@ async function prepareUnrollTransaction(wallet, vtxoTxIds, outputAddress) {
|
|
|
17642
17710
|
btcSigner.TaprootControlBlock.encode(spendingLeaf[0]).length
|
|
17643
17711
|
);
|
|
17644
17712
|
}
|
|
17645
|
-
const tx = new
|
|
17713
|
+
const tx = new chunk7IYIFMF4_cjs.Transaction({ version: 2 });
|
|
17646
17714
|
for (const input of inputs) {
|
|
17647
17715
|
tx.addInput(input);
|
|
17648
17716
|
}
|
|
@@ -17709,7 +17777,7 @@ async function buildSignedSweep(params) {
|
|
|
17709
17777
|
`uneconomic vtxo ${vtxo.txid}:${vtxo.vout}: value ${vtxo.value} - fee ${fee} < dust`
|
|
17710
17778
|
);
|
|
17711
17779
|
}
|
|
17712
|
-
const tx = new
|
|
17780
|
+
const tx = new chunk7IYIFMF4_cjs.Transaction({ version: 2 });
|
|
17713
17781
|
tx.addInput({
|
|
17714
17782
|
txid: vtxo.txid,
|
|
17715
17783
|
index: vtxo.vout,
|
|
@@ -17734,7 +17802,7 @@ async function buildSignedSweep(params) {
|
|
|
17734
17802
|
finalScriptWitness: [
|
|
17735
17803
|
tapScriptSig[0][1],
|
|
17736
17804
|
...path.extraWitness,
|
|
17737
|
-
|
|
17805
|
+
chunkMQB5H4X5_cjs.scriptFromTapLeafScript(path.leaf),
|
|
17738
17806
|
btcSigner.TaprootControlBlock.encode(controlBlock)
|
|
17739
17807
|
]
|
|
17740
17808
|
});
|
|
@@ -17779,7 +17847,7 @@ async function selectExitVtxos(opts) {
|
|
|
17779
17847
|
`no contract registered for vtxo script ${vtxo.script} \u2014 register the contract before exiting`
|
|
17780
17848
|
);
|
|
17781
17849
|
}
|
|
17782
|
-
const handler =
|
|
17850
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(contract.type);
|
|
17783
17851
|
if (!handler) {
|
|
17784
17852
|
throw new Error(`no contract handler registered for type '${contract.type}'`);
|
|
17785
17853
|
}
|
|
@@ -17809,7 +17877,7 @@ async function computeExitLayout(opts, feeRate) {
|
|
|
17809
17877
|
if (pendingNodes.length > 0) {
|
|
17810
17878
|
const txs = await resolver.getVirtualTxs(pendingNodes.map((n) => n.txid));
|
|
17811
17879
|
for (const psbt of txs) {
|
|
17812
|
-
psbts.set(
|
|
17880
|
+
psbts.set(chunk7IYIFMF4_cjs.Transaction.fromPSBT(base.base64.decode(psbt)).id, psbt);
|
|
17813
17881
|
}
|
|
17814
17882
|
}
|
|
17815
17883
|
const childVsize = Number(
|
|
@@ -17845,7 +17913,7 @@ async function computeExitLayout(opts, feeRate) {
|
|
|
17845
17913
|
try {
|
|
17846
17914
|
const resolved = await resolveUnilateralPath({
|
|
17847
17915
|
vtxo,
|
|
17848
|
-
scriptHex: base.hex.encode(
|
|
17916
|
+
scriptHex: base.hex.encode(chunkMQB5H4X5_cjs.VtxoScript.decode(vtxo.tapTree).pkScript),
|
|
17849
17917
|
contractRepository: wallet.contractRepository,
|
|
17850
17918
|
walletPubKeyHex,
|
|
17851
17919
|
currentTime: Date.now()
|
|
@@ -17864,7 +17932,7 @@ async function computeExitLayout(opts, feeRate) {
|
|
|
17864
17932
|
});
|
|
17865
17933
|
continue;
|
|
17866
17934
|
}
|
|
17867
|
-
const t =
|
|
17935
|
+
const t = chunkMQB5H4X5_cjs.sequenceToTimelock(resolved.selection.sequence);
|
|
17868
17936
|
const delay = { type: t.type, value: Number(t.value) };
|
|
17869
17937
|
infos.push({ outpoint, value: vtxo.value, sweepFee, path: resolved.label, delay });
|
|
17870
17938
|
sweeps.push({ vtxo, resolved, sweepFee, delay });
|
|
@@ -17957,6 +18025,8 @@ var Executor = class {
|
|
|
17957
18025
|
this.pollIntervalMs = opts?.pollIntervalMs ?? 5e3;
|
|
17958
18026
|
this.feeWallet = opts?.feeWallet;
|
|
17959
18027
|
}
|
|
18028
|
+
pkg;
|
|
18029
|
+
provider;
|
|
17960
18030
|
pollIntervalMs;
|
|
17961
18031
|
feeWallet;
|
|
17962
18032
|
sleep() {
|
|
@@ -18169,7 +18239,7 @@ async function prepare(opts) {
|
|
|
18169
18239
|
txid: sweep.vtxo.txid,
|
|
18170
18240
|
vout: sweep.vtxo.vout,
|
|
18171
18241
|
value: sweep.vtxo.value,
|
|
18172
|
-
pkScript:
|
|
18242
|
+
pkScript: chunkMQB5H4X5_cjs.VtxoScript.decode(sweep.vtxo.tapTree).pkScript
|
|
18173
18243
|
},
|
|
18174
18244
|
path: sweep.resolved.selection,
|
|
18175
18245
|
outputAddress: opts.sweepAddress,
|
|
@@ -18254,7 +18324,7 @@ async function prepare(opts) {
|
|
|
18254
18324
|
if (newFee <= splitterFee) break;
|
|
18255
18325
|
splitterFee = newFee;
|
|
18256
18326
|
}
|
|
18257
|
-
const splitter = new
|
|
18327
|
+
const splitter = new chunk7IYIFMF4_cjs.Transaction({ version: 2 });
|
|
18258
18328
|
for (const coin of selected.inputs) {
|
|
18259
18329
|
splitter.addInput({
|
|
18260
18330
|
txid: coin.txid,
|
|
@@ -18418,7 +18488,7 @@ function decodeArkContract(encoded) {
|
|
|
18418
18488
|
}
|
|
18419
18489
|
function contractFromArkContract(encoded, options = {}) {
|
|
18420
18490
|
const parsed = decodeArkContract(encoded);
|
|
18421
|
-
const handler =
|
|
18491
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.get(parsed.type);
|
|
18422
18492
|
if (!handler) {
|
|
18423
18493
|
throw new Error(`No handler registered for contract type '${parsed.type}'`);
|
|
18424
18494
|
}
|
|
@@ -18432,9 +18502,9 @@ function contractFromArkContract(encoded, options = {}) {
|
|
|
18432
18502
|
metadata: options.metadata
|
|
18433
18503
|
};
|
|
18434
18504
|
}
|
|
18435
|
-
function contractFromArkContractWithAddress(encoded, serverPubKey, addressPrefix =
|
|
18505
|
+
function contractFromArkContractWithAddress(encoded, serverPubKey, addressPrefix = chunkMQB5H4X5_cjs.DEFAULT_NETWORK.hrp, options = {}) {
|
|
18436
18506
|
const parsed = decodeArkContract(encoded);
|
|
18437
|
-
const handler =
|
|
18507
|
+
const handler = chunk4KXOCVXP_cjs.contractHandlers.getOrThrow(parsed.type);
|
|
18438
18508
|
const params = parsed.data;
|
|
18439
18509
|
const vtxoScript = handler.createScript(params);
|
|
18440
18510
|
return {
|
|
@@ -18572,5 +18642,5 @@ exports.validateVtxoTxGraph = validateVtxoTxGraph;
|
|
|
18572
18642
|
exports.verifyTapscriptSignatures = verifyTapscriptSignatures;
|
|
18573
18643
|
exports.waitForIncomingFunds = waitForIncomingFunds;
|
|
18574
18644
|
exports.warnAndFilterVtxosForScript = warnAndFilterVtxosForScript;
|
|
18575
|
-
//# sourceMappingURL=chunk-
|
|
18576
|
-
//# sourceMappingURL=chunk-
|
|
18645
|
+
//# sourceMappingURL=chunk-D46YDM36.cjs.map
|
|
18646
|
+
//# sourceMappingURL=chunk-D46YDM36.cjs.map
|