@arkade-os/sdk 0.4.73 → 0.4.74
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/{asyncStorageTaskQueue-DA2OdpJ0.d.cts → asyncStorageTaskQueue-D1AwLuqn.d.cts} +1 -1
- package/dist/{asyncStorageTaskQueue-C5IwA_Hs.d.ts → asyncStorageTaskQueue-aCaOBGTS.d.ts} +1 -1
- package/dist/{chunk-D5DLGVN4.cjs → chunk-AS3W34MG.cjs} +17 -17
- package/dist/{chunk-D5DLGVN4.cjs.map → chunk-AS3W34MG.cjs.map} +1 -1
- package/dist/{chunk-2D7F5IU3.cjs → chunk-DXLVCFVK.cjs} +49 -49
- package/dist/{chunk-2D7F5IU3.cjs.map → chunk-DXLVCFVK.cjs.map} +1 -1
- package/dist/{chunk-QX2M67YI.js → chunk-J3XVGWMP.js} +21 -22
- package/dist/chunk-J3XVGWMP.js.map +1 -0
- package/dist/{chunk-ZLDO4QDR.cjs → chunk-J4ZR4VEM.cjs} +31 -32
- package/dist/chunk-J4ZR4VEM.cjs.map +1 -0
- package/dist/{chunk-KJ5E646Y.cjs → chunk-KMPNH7NS.cjs} +8 -4
- package/dist/chunk-KMPNH7NS.cjs.map +1 -0
- package/dist/{chunk-5YCAC6XE.js → chunk-KPLQN4M4.js} +4 -4
- package/dist/{chunk-5YCAC6XE.js.map → chunk-KPLQN4M4.js.map} +1 -1
- package/dist/{chunk-G5RPUZJE.js → chunk-LGB65ZCO.js} +3 -3
- package/dist/{chunk-G5RPUZJE.js.map → chunk-LGB65ZCO.js.map} +1 -1
- package/dist/{chunk-L7IEXVXI.cjs → chunk-QS6AZE4F.cjs} +10 -10
- package/dist/{chunk-L7IEXVXI.cjs.map → chunk-QS6AZE4F.cjs.map} +1 -1
- package/dist/{chunk-C4RKZY7D.cjs → chunk-WIHSU3YS.cjs} +560 -476
- package/dist/chunk-WIHSU3YS.cjs.map +1 -0
- package/dist/{chunk-OV4GLPZI.js → chunk-WJVOFYTQ.js} +8 -4
- package/dist/chunk-WJVOFYTQ.js.map +1 -0
- package/dist/{chunk-M6HIWM5N.js → chunk-X5BPARRD.js} +3 -3
- package/dist/{chunk-M6HIWM5N.js.map → chunk-X5BPARRD.js.map} +1 -1
- package/dist/{chunk-YHJJSLE5.js → chunk-ZTGTQP2W.js} +115 -33
- package/dist/chunk-ZTGTQP2W.js.map +1 -0
- package/dist/contracts/handlers/index.cjs +9 -9
- 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-BJp8f6LT.d.cts → delegate-6N0DKdnG.d.cts} +1 -1
- package/dist/{delegate-Ckz_TWzM.d.ts → delegate-z6veQfLI.d.ts} +1 -1
- package/dist/{hdWalletCapable-DABgAD-T.d.ts → hdWalletCapable-Bncp-eF0.d.ts} +2 -2
- package/dist/{hdWalletCapable-DA9bJ5eB.d.cts → hdWalletCapable-DJT8E8sN.d.cts} +2 -2
- package/dist/{index-DSbDm0Io.d.cts → index-BVqlZJwW.d.cts} +2 -2
- package/dist/{index-Dg0-TvBQ.d.cts → index-Bxz3cKPA.d.cts} +13 -7
- package/dist/{index-Dg0-TvBQ.d.ts → index-Bxz3cKPA.d.ts} +13 -7
- package/dist/{index-B8xrELXY.d.ts → index-CKQQ1oOg.d.ts} +2 -2
- package/dist/index.cjs +308 -300
- package/dist/index.d.cts +47 -24
- package/dist/index.d.ts +47 -24
- package/dist/index.js +4 -4
- package/dist/repositories/realm/index.cjs +19 -19
- package/dist/repositories/realm/index.d.cts +2 -2
- package/dist/repositories/realm/index.d.ts +2 -2
- package/dist/repositories/realm/index.js +5 -5
- package/dist/repositories/sqlite/index.cjs +18 -18
- package/dist/repositories/sqlite/index.d.cts +2 -2
- package/dist/repositories/sqlite/index.d.ts +2 -2
- package/dist/repositories/sqlite/index.js +5 -5
- package/dist/{taskRunner-C_uAJDsn.d.cts → taskRunner-C26IIg1F.d.cts} +1 -1
- package/dist/{taskRunner-DARTFnZN.d.ts → taskRunner-KxtIKYLv.d.ts} +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 +14 -14
- package/dist/wallet/expo/index.d.cts +4 -4
- package/dist/wallet/expo/index.d.ts +4 -4
- package/dist/wallet/expo/index.js +5 -5
- package/dist/worker/expo/index.cjs +9 -9
- package/dist/worker/expo/index.d.cts +4 -4
- package/dist/worker/expo/index.d.ts +4 -4
- package/dist/worker/expo/index.js +5 -5
- package/package.json +1 -1
- package/dist/chunk-C4RKZY7D.cjs.map +0 -1
- package/dist/chunk-KJ5E646Y.cjs.map +0 -1
- package/dist/chunk-OV4GLPZI.js.map +0 -1
- package/dist/chunk-QX2M67YI.js.map +0 -1
- package/dist/chunk-YHJJSLE5.js.map +0 -1
- package/dist/chunk-ZLDO4QDR.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, BufferReader, BufferWriter, AssetRef, RestIndexerProvider } from './chunk-
|
|
2
|
-
import { witnessRefToBytes, validateProgram, toASM, stringifyArtifact, serializeArkadeContractParams, resolveAsm, parseArtifact, getOpcodeValue, getOpcodeName, fromASM, deserializeArkadeContractParams, computeArkadeScriptPublicKey, bytesToASM, asmToBytes, arkadeWitnessHash, arkadeScriptHash, SUPPORTED_PROGRAM_VERSION, OPCODE_VALUES, OPCODE_NAMES, bignum_exports, ArkadeScript, ArkadeProgramScript, ARKADE_OPS, ARKADE_OPCODE_VALUES, ARKADE_OPCODE_NAMES, ARKADE_OPCODES, ARKADE_OP, toXOnly, inputName, contractHandlers, isMainnetDescriptor, descriptorIsOurs, deriveDescriptorLeafPubKey, deriveDescriptorLeafCompressedPubKey, parseHDDescriptor, identityDescriptor, DefaultVtxo, speculativeReceiveMetadata, DelegateVtxo, WALLET_RECEIVE_SOURCE, BoardingContractHandler } from './chunk-
|
|
3
|
-
import { VtxoScript, Transaction, isRecoverable, CSVMultisigTapscript, DEFAULT_NETWORK, resolveEmulatorPubkey, hasTerminalSpend, getNormalizedVtxos, setArkPsbtField, PrevArkTxField, ConditionWitness, craftToSpendTx, ArkAddress, isVirtualCoin, getArkPsbtFields, CosignerPublicKey, ServerResponseMismatchError, OP_RETURN_EMPTY_PKSCRIPT, canSweepOnchain, sequenceToTimelock, decodeTapscript, scriptFromTapLeafScript, CLTVMultisigTapscript, VtxoTaprootTree, timelockToSequence, assertAllowedSighashTypes, baseFetch, Intent, rateGate, DEFAULT_NETWORK_NAME, formatSighash, normalizeVtxo, getSequence, toBatchExpiry, maybeArkError, isArkError, ArkErrorName, toOffchainInputFeeParams, canRecoverOnchain, getNetwork, MultisigTapscript, isEventSourceError, isEventSourceUnavailableError, getAllNormalizedVtxos, isPastExpiry, isRetryableProviderError, DEFAULT_PAGE_SIZE, RestArkProvider, toVirtualStatus, ArkError, TapTreeCoder, resolveTimeHeight, canSpendOffchain, parseLegacyExpiry, isExpired, PrevoutTxField, fetchVtxoCreatedAtByTxid, DEFAULT_ARKADE_SERVER_URL, ProviderUnavailableError, networks as networks$1 } from './chunk-
|
|
1
|
+
import { AssetId, AssetGroup, AssetInput, AssetOutput, Metadata, Packet, BufferReader, BufferWriter, AssetRef, RestIndexerProvider } from './chunk-X5BPARRD.js';
|
|
2
|
+
import { witnessRefToBytes, validateProgram, toASM, stringifyArtifact, serializeArkadeContractParams, resolveAsm, parseArtifact, getOpcodeValue, getOpcodeName, fromASM, deserializeArkadeContractParams, computeArkadeScriptPublicKey, bytesToASM, asmToBytes, arkadeWitnessHash, arkadeScriptHash, SUPPORTED_PROGRAM_VERSION, OPCODE_VALUES, OPCODE_NAMES, bignum_exports, ArkadeScript, ArkadeProgramScript, ARKADE_OPS, ARKADE_OPCODE_VALUES, ARKADE_OPCODE_NAMES, ARKADE_OPCODES, ARKADE_OP, toXOnly, inputName, contractHandlers, isMainnetDescriptor, descriptorIsOurs, deriveDescriptorLeafPubKey, deriveDescriptorLeafCompressedPubKey, parseHDDescriptor, identityDescriptor, DefaultVtxo, speculativeReceiveMetadata, DelegateVtxo, WALLET_RECEIVE_SOURCE, BoardingContractHandler } from './chunk-LGB65ZCO.js';
|
|
3
|
+
import { VtxoScript, Transaction, isRecoverable, CSVMultisigTapscript, DEFAULT_NETWORK, resolveEmulatorPubkey, hasTerminalSpend, getNormalizedVtxos, setArkPsbtField, PrevArkTxField, ConditionWitness, craftToSpendTx, ArkAddress, isVirtualCoin, getArkPsbtFields, CosignerPublicKey, ServerResponseMismatchError, OP_RETURN_EMPTY_PKSCRIPT, canSweepOnchain, sequenceToTimelock, decodeTapscript, scriptFromTapLeafScript, CLTVMultisigTapscript, VtxoTaprootTree, timelockToSequence, assertAllowedSighashTypes, baseFetch, Intent, rateGate, DEFAULT_NETWORK_NAME, formatSighash, normalizeVtxo, getSequence, toBatchExpiry, maybeArkError, isArkError, ArkErrorName, toOffchainInputFeeParams, canRecoverOnchain, getNetwork, MultisigTapscript, isEventSourceError, isEventSourceUnavailableError, getAllNormalizedVtxos, isPastExpiry, isRetryableProviderError, DEFAULT_PAGE_SIZE, RestArkProvider, toVirtualStatus, ArkError, TapTreeCoder, resolveTimeHeight, canSpendOffchain, parseLegacyExpiry, isExpired, PrevoutTxField, fetchVtxoCreatedAtByTxid, DEFAULT_ARKADE_SERVER_URL, ProviderUnavailableError, networks as networks$1 } from './chunk-WJVOFYTQ.js';
|
|
4
4
|
import { __export } from './chunk-NSBPE2FW.js';
|
|
5
5
|
import { sha256 as sha256$1, equalBytes, hash160, sha256x2, concatBytes, randomPrivateKeyBytes, pubECDSA, pubSchnorr } from '@scure/btc-signer/utils.js';
|
|
6
6
|
import { SigHash, Script, OP, OutScript, Address, RawWitness, p2tr, p2wpkh, TaprootControlBlock, DEFAULT_SEQUENCE, Transaction as Transaction$2 } from '@scure/btc-signer';
|
|
@@ -9010,23 +9010,32 @@ var ContractWatcher = class {
|
|
|
9010
9010
|
}
|
|
9011
9011
|
/** @see IContractManager.watchScript for the delivery and filter contract. */
|
|
9012
9012
|
async addWatchedScript(script, options) {
|
|
9013
|
-
const
|
|
9014
|
-
|
|
9015
|
-
|
|
9016
|
-
|
|
9013
|
+
const added = [];
|
|
9014
|
+
for (const one of Array.isArray(script) ? script : [script]) {
|
|
9015
|
+
const existing = this.watchedScripts.get(one);
|
|
9016
|
+
if (existing) {
|
|
9017
|
+
if (options?.label !== void 0) existing.label = options.label;
|
|
9018
|
+
continue;
|
|
9019
|
+
}
|
|
9020
|
+
this.watchedScripts.set(one, {
|
|
9021
|
+
label: options?.label,
|
|
9022
|
+
lastKnownVtxos: /* @__PURE__ */ new Map()
|
|
9023
|
+
});
|
|
9024
|
+
added.push(one);
|
|
9017
9025
|
}
|
|
9018
|
-
this.
|
|
9019
|
-
|
|
9020
|
-
|
|
9021
|
-
});
|
|
9022
|
-
if (this.isWatching) {
|
|
9023
|
-
await this.pollWatchedScripts([script]);
|
|
9026
|
+
if (added.length === 0 || !this.isWatching) return;
|
|
9027
|
+
await this.withCoalescedSubscription(async () => {
|
|
9028
|
+
await this.pollWatchedScripts(added);
|
|
9024
9029
|
await this.tryUpdateSubscription();
|
|
9025
|
-
}
|
|
9030
|
+
});
|
|
9026
9031
|
}
|
|
9027
9032
|
/** Stop watching a script added by {@link addWatchedScript}. */
|
|
9028
9033
|
async removeWatchedScript(script) {
|
|
9029
|
-
|
|
9034
|
+
let removed = false;
|
|
9035
|
+
for (const one of Array.isArray(script) ? script : [script]) {
|
|
9036
|
+
if (this.watchedScripts.delete(one)) removed = true;
|
|
9037
|
+
}
|
|
9038
|
+
if (!removed) return;
|
|
9030
9039
|
if (this.isWatching) {
|
|
9031
9040
|
await this.tryUpdateSubscription();
|
|
9032
9041
|
}
|
|
@@ -17606,6 +17615,23 @@ function offboardDestinationScript(destinationAddress) {
|
|
|
17606
17615
|
}
|
|
17607
17616
|
throw new Error(`Failed to decode destination address: ${destinationAddress}`);
|
|
17608
17617
|
}
|
|
17618
|
+
var CHANGE_FEE_MAX_ROUNDS = 8;
|
|
17619
|
+
function settleChangeAgainstFee(change, feeOn) {
|
|
17620
|
+
let net = change;
|
|
17621
|
+
for (let i = 0; i < CHANGE_FEE_MAX_ROUNDS; i++) {
|
|
17622
|
+
const next = change - feeOn(net > 0n ? net : 0n);
|
|
17623
|
+
if (next === net) return net > 0n ? net : 0n;
|
|
17624
|
+
net = next;
|
|
17625
|
+
}
|
|
17626
|
+
throw new Error(
|
|
17627
|
+
`change fee does not settle after ${CHANGE_FEE_MAX_ROUNDS} rounds (${change} sats of change); settle the full balance instead`
|
|
17628
|
+
);
|
|
17629
|
+
}
|
|
17630
|
+
function reportUngatedInputs(wallet, inputs) {
|
|
17631
|
+
if (!("logUngatedInputs" in wallet)) return;
|
|
17632
|
+
const logger = wallet;
|
|
17633
|
+
void logger.logUngatedInputs("Ramps.offboard({ vtxos })", inputs);
|
|
17634
|
+
}
|
|
17609
17635
|
var Ramps = class {
|
|
17610
17636
|
/**
|
|
17611
17637
|
* Create convenience wrappers for onboarding and offboarding flows.
|
|
@@ -17659,6 +17685,19 @@ var Ramps = class {
|
|
|
17659
17685
|
}
|
|
17660
17686
|
change = totalAmount - amount;
|
|
17661
17687
|
}
|
|
17688
|
+
let boardingAddress;
|
|
17689
|
+
if (change > 0n) {
|
|
17690
|
+
boardingAddress = await this.wallet.getBoardingAddress();
|
|
17691
|
+
const changeScript = hex.encode(offboardDestinationScript(boardingAddress));
|
|
17692
|
+
change = settleChangeAgainstFee(
|
|
17693
|
+
change,
|
|
17694
|
+
(amt) => BigInt(estimator.evalOnchainOutput({ amount: amt, script: changeScript }).satoshis)
|
|
17695
|
+
);
|
|
17696
|
+
const dustAmount = getDustAmount(this.wallet);
|
|
17697
|
+
if (change > 0n && change < dustAmount) {
|
|
17698
|
+
throw new DustChangeError(change, dustAmount);
|
|
17699
|
+
}
|
|
17700
|
+
}
|
|
17662
17701
|
amount = amount ?? totalAmount;
|
|
17663
17702
|
const offchainAddress = await this.wallet.getAddress();
|
|
17664
17703
|
const offchainAddr = ArkAddress.decode(offchainAddress);
|
|
@@ -17680,7 +17719,6 @@ var Ramps = class {
|
|
|
17680
17719
|
}
|
|
17681
17720
|
];
|
|
17682
17721
|
if (change > 0n) {
|
|
17683
|
-
const boardingAddress = await this.wallet.getBoardingAddress();
|
|
17684
17722
|
outputs.push({
|
|
17685
17723
|
address: boardingAddress,
|
|
17686
17724
|
amount: change
|
|
@@ -17701,6 +17739,10 @@ var Ramps = class {
|
|
|
17701
17739
|
* @param feeInfo - The fee info to deduct from the offboard amount.
|
|
17702
17740
|
* @param amount - The amount to offboard. If not provided, the total amount of virtual outputs will be offboarded.
|
|
17703
17741
|
* @param eventCallback - Optional callback that receives settlement events
|
|
17742
|
+
* @param vtxos - Specific virtual outputs to spend, mirroring {@link onboard}'s
|
|
17743
|
+
* `boardingUtxos`. Omitted, every spendable one is spent — merging the whole
|
|
17744
|
+
* off-chain balance into a single change output. Taken as given like
|
|
17745
|
+
* `settle({ inputs })`: an `amount` these cannot cover is an error, not a top-up.
|
|
17704
17746
|
* @returns The Arkade transaction id created by settlement
|
|
17705
17747
|
* @throws Error if no virtual outputs remain after fee deduction or the destination address cannot be decoded
|
|
17706
17748
|
* @see IWallet.getSpendableVtxos
|
|
@@ -17712,8 +17754,10 @@ var Ramps = class {
|
|
|
17712
17754
|
* await ramps.offboard('bc1q...', feeInfo);
|
|
17713
17755
|
* ```
|
|
17714
17756
|
*/
|
|
17715
|
-
async offboard(destinationAddress, feeInfo, amount, eventCallback) {
|
|
17716
|
-
const
|
|
17757
|
+
async offboard(destinationAddress, feeInfo, amount, eventCallback, vtxos) {
|
|
17758
|
+
const named = vtxos !== void 0;
|
|
17759
|
+
if (vtxos) reportUngatedInputs(this.wallet, vtxos);
|
|
17760
|
+
vtxos ??= await this.wallet.getSpendableVtxos({
|
|
17717
17761
|
withRecoverable: true,
|
|
17718
17762
|
withUnrolled: false
|
|
17719
17763
|
});
|
|
@@ -17723,6 +17767,11 @@ var Ramps = class {
|
|
|
17723
17767
|
for (const vtxo of vtxos) {
|
|
17724
17768
|
const inputFee = estimator.evalOffchainInput(toOffchainInputFeeParams(vtxo));
|
|
17725
17769
|
if (inputFee.satoshis >= vtxo.value) {
|
|
17770
|
+
if (named) {
|
|
17771
|
+
throw new Error(
|
|
17772
|
+
`selected vtxo ${vtxo.txid}:${vtxo.vout} costs ${inputFee.satoshis} sats to spend and is worth ${vtxo.value} \u2014 drop it from the selection`
|
|
17773
|
+
);
|
|
17774
|
+
}
|
|
17726
17775
|
continue;
|
|
17727
17776
|
}
|
|
17728
17777
|
filteredVtxos.push(vtxo);
|
|
@@ -17738,6 +17787,15 @@ var Ramps = class {
|
|
|
17738
17787
|
}
|
|
17739
17788
|
change = totalAmount - amount;
|
|
17740
17789
|
}
|
|
17790
|
+
let changeAddress;
|
|
17791
|
+
if (change > 0n) {
|
|
17792
|
+
changeAddress = await this.wallet.getAddress();
|
|
17793
|
+
const changeScript = hex.encode(ArkAddress.decode(changeAddress).pkScript);
|
|
17794
|
+
change = settleChangeAgainstFee(
|
|
17795
|
+
change,
|
|
17796
|
+
(amount2) => BigInt(estimator.evalOffchainOutput({ amount: amount2, script: changeScript }).satoshis)
|
|
17797
|
+
);
|
|
17798
|
+
}
|
|
17741
17799
|
const dustAmount = getDustAmount(this.wallet);
|
|
17742
17800
|
if (change > 0n && change < dustAmount) {
|
|
17743
17801
|
throw new DustChangeError(change, dustAmount);
|
|
@@ -17761,7 +17819,7 @@ var Ramps = class {
|
|
|
17761
17819
|
}
|
|
17762
17820
|
];
|
|
17763
17821
|
if (change > 0n) {
|
|
17764
|
-
const offchainAddress =
|
|
17822
|
+
const offchainAddress = changeAddress;
|
|
17765
17823
|
outputs.push({
|
|
17766
17824
|
address: offchainAddress,
|
|
17767
17825
|
amount: change
|
|
@@ -24159,6 +24217,16 @@ function assertNoAssets(railId, req) {
|
|
|
24159
24217
|
);
|
|
24160
24218
|
}
|
|
24161
24219
|
}
|
|
24220
|
+
function selectionOf(req) {
|
|
24221
|
+
return req.selectedVtxos;
|
|
24222
|
+
}
|
|
24223
|
+
function assertNoSelection(railId, req) {
|
|
24224
|
+
if (selectionOf(req) !== void 0) {
|
|
24225
|
+
throw new Error(
|
|
24226
|
+
`${railId}: cannot spend a caller-chosen input set (selectedVtxos) \u2014 this rail does not choose the coins it spends`
|
|
24227
|
+
);
|
|
24228
|
+
}
|
|
24229
|
+
}
|
|
24162
24230
|
function resolveAssetAmount(railId, req) {
|
|
24163
24231
|
const assets = assetsOf(req);
|
|
24164
24232
|
if (assets.length !== 1) {
|
|
@@ -24302,13 +24370,17 @@ function arkRail() {
|
|
|
24302
24370
|
const address = arkTarget(req.raw);
|
|
24303
24371
|
assertNoAssets("ark", req);
|
|
24304
24372
|
const amt = resolveSendAmount("ark", req.raw, req.amount);
|
|
24373
|
+
const selectedVtxos = selectionOf(req);
|
|
24305
24374
|
return {
|
|
24306
24375
|
railId: "ark",
|
|
24307
24376
|
amount: amt,
|
|
24308
24377
|
fee: 0,
|
|
24309
24378
|
total: amt,
|
|
24310
24379
|
send: async () => makeHandle("ark", async (emit) => {
|
|
24311
|
-
const txid = await ctx.wallet.send({
|
|
24380
|
+
const txid = selectedVtxos ? await ctx.wallet.send({
|
|
24381
|
+
recipients: [{ address, amount: amt }],
|
|
24382
|
+
selectedVtxos
|
|
24383
|
+
}) : await ctx.wallet.send({ address, amount: amt });
|
|
24312
24384
|
const result = { railId: "ark", txid };
|
|
24313
24385
|
emit({ status: "settled", result });
|
|
24314
24386
|
return result;
|
|
@@ -24331,6 +24403,7 @@ function arkAssetRail() {
|
|
|
24331
24403
|
const asset = resolveAssetAmount("ark-asset", req);
|
|
24332
24404
|
if (req.amount !== void 0) assertSendableAmount("ark-asset", req.amount);
|
|
24333
24405
|
const carrier = tryResolveSendAmount(req.raw, req.amount) ?? ASSET_CARRIER_SATS;
|
|
24406
|
+
const selectedVtxos = selectionOf(req);
|
|
24334
24407
|
return {
|
|
24335
24408
|
railId: "ark-asset",
|
|
24336
24409
|
amount: carrier,
|
|
@@ -24338,11 +24411,8 @@ function arkAssetRail() {
|
|
|
24338
24411
|
total: carrier,
|
|
24339
24412
|
assets: { delivered: asset, spent: asset },
|
|
24340
24413
|
send: async () => makeHandle("ark-asset", async (emit) => {
|
|
24341
|
-
const
|
|
24342
|
-
|
|
24343
|
-
amount: carrier,
|
|
24344
|
-
assets: [asset]
|
|
24345
|
-
});
|
|
24414
|
+
const recipient = { address, amount: carrier, assets: [asset] };
|
|
24415
|
+
const txid = selectedVtxos ? await ctx.wallet.send({ recipients: [recipient], selectedVtxos }) : await ctx.wallet.send(recipient);
|
|
24346
24416
|
const result = { railId: "ark-asset", txid };
|
|
24347
24417
|
emit({ status: "settled", result });
|
|
24348
24418
|
return result;
|
|
@@ -24364,6 +24434,13 @@ function grossUpOffboard(net, feeInfo, script) {
|
|
|
24364
24434
|
}
|
|
24365
24435
|
return { gross, fee: gross - net };
|
|
24366
24436
|
}
|
|
24437
|
+
function offchainInputFees(vtxos, fees) {
|
|
24438
|
+
const estimator = new Estimator(fees?.intentFee ?? {});
|
|
24439
|
+
return vtxos.reduce(
|
|
24440
|
+
(total, vtxo) => total + estimator.evalOffchainInput(toOffchainInputFeeParams(vtxo)).satoshis,
|
|
24441
|
+
0
|
|
24442
|
+
);
|
|
24443
|
+
}
|
|
24367
24444
|
function onchainRail(deps) {
|
|
24368
24445
|
if (typeof deps?.feeInfo !== "function") {
|
|
24369
24446
|
throw new Error("onchain rail: a feeInfo source is required");
|
|
@@ -24380,17 +24457,22 @@ function onchainRail(deps) {
|
|
|
24380
24457
|
const fees = await deps.feeInfo();
|
|
24381
24458
|
const script = hex.encode(offboardDestinationScript(address));
|
|
24382
24459
|
const { gross, fee } = grossUpOffboard(amt, fees, script);
|
|
24460
|
+
const selectedVtxos = selectionOf(req);
|
|
24461
|
+
const inputFee = selectedVtxos ? offchainInputFees(selectedVtxos, fees) : 0;
|
|
24383
24462
|
return {
|
|
24384
24463
|
railId: "onchain",
|
|
24385
24464
|
amount: amt,
|
|
24386
|
-
fee,
|
|
24387
|
-
total: gross,
|
|
24465
|
+
fee: fee + inputFee,
|
|
24466
|
+
total: gross + inputFee,
|
|
24388
24467
|
send: async () => makeHandle("onchain", async (emit) => {
|
|
24389
|
-
const
|
|
24468
|
+
const ramps = new Ramps(ctx.wallet);
|
|
24469
|
+
const txid = selectedVtxos ? await ramps.offboard(
|
|
24390
24470
|
address,
|
|
24391
24471
|
fees,
|
|
24392
|
-
BigInt(gross)
|
|
24393
|
-
|
|
24472
|
+
BigInt(gross),
|
|
24473
|
+
void 0,
|
|
24474
|
+
selectedVtxos
|
|
24475
|
+
) : await ramps.offboard(address, fees, BigInt(gross));
|
|
24394
24476
|
const result = { railId: "onchain", txid };
|
|
24395
24477
|
emit({ status: "settled", result });
|
|
24396
24478
|
return result;
|
|
@@ -24413,6 +24495,6 @@ function createDefaultPaymentRouter(wallet) {
|
|
|
24413
24495
|
(*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
|
24414
24496
|
*/
|
|
24415
24497
|
|
|
24416
|
-
export { ARKADE_MAGIC, ARKADE_SALTED_PREIMAGE_TAG, ARKADE_SWAP_PREIMAGE_TAG, ASSET_CARRIER_SATS, AbortError, ActivityRegistry, AmbiguousRouteError, ArkNote, ArkadeCash, ArkadeCashCreateError, AssetManager, BIP21, BIP21Error, BIP322, BLOCKED_UPGRADE_TIMEOUT_MS, Batch, CachingArkProvider, ChainedTxType, ConnectionDisposedError, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DEFAULT_MIN_BATCH_EXPIRY_SECONDS, DEFAULT_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, DatabaseUpgradeBlockedError, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorIdentity, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EmulatorPacket, EsploraProvider, Estimator, Extension, ExtensionNotFoundError, ForeignDescriptorError, HDDescriptorProvider, INTENT_TERMINAL_STATES, InMemoryContractRepository, InMemoryIntentRepository, InMemoryVirtualTxRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBIntentRepository, IndexedDBVirtualTxRepository, IndexedDBWalletRepository, MAX_USED_SIGNING_DESCRIPTORS_LOOK_AHEAD, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MUTINYNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, PaymentRouter, PrevTxUnavailableError, REGTEST_MIN_BATCH_EXPIRY_SECONDS, REGTEST_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, RestEmulatorProvider, SIGNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, UnannotatableInputError, UnilateralExit, UnknownPacket, Unroll, VtxoManager, Wallet2 as Wallet, WalletCannotAllocateAddressError, WalletCannotSignError, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, adoptContractDescriptor, arkAssetRail, arkRail, arkTarget, arkade_exports, assertFinalCommitmentMatchesValidated, assertIntentIdUnique, assertNoAssets, assertSendableAmount, assertSubmittedArkTxid, assertValidBatchExpiry, assertValidServerUnrollScript, assetMintResolver, assetsOf, attachPrevArkTxs, attachPrevoutTxs, awaitTransaction, boardingResolver, btcTarget, buildForfeitTx, buildOffchainTx, buildPreimageMessage, buildSaltedPreimageMessage, claimWithPreimageIdentity, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, collabExitResolver, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, contractPreimage, contractSigner, createAssetPacket, createDefaultActivityRegistry, createDefaultPaymentRouter, createExitChainResolver, createManagedConnection, decodeArkContract, defaultBatchExpiryPolicy, defaultCheckpointExitDelayPolicy, deleteByIndex, deserializeAssets, deserializeExitPackage, deserializeUtxo, deserializeVtxo, encodeArkContract, exitObserverFor, extendVirtualCoinForContract, extractArkProviderUrl, gateExclusion, gatedContracts, getAllByIndexValues, getMigrationStatus, getRandomId, hasBoardingTxExpired, hasCandidates, intentMatchesFilter, intentPageBounds, invoiceTarget, isAddressAllocationCapable, isArkContract, isBatchSignable, isBtcAddress, isContractGenericallySpendable, isContractVtxoEvent, isCooperativelyMigratable, isDeterministicSigner, isDiscoverable, isHDAllocationCapable, isHDDeterministicSignCapable, isHDWalletCapable, isLightningInvoice, isLnurl, isMessageBusInitializingError, isMessageBusNotInitializedError, isPerArtifactDescriptor, isSigningIdentity, isSubdust, isTerminalIntentState, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, isWatchedContract, logExcludedVtxos, makeHandle, matchServerCheckpoints, mergeChainedTxType, migrateWalletRepository, notifyExitObserved, onchainRail, openDatabase, outpointExclusion, outpointReasons, promisifyRequest, provisionClaimSecret, provisionRefundKey, registerWalletRestoreHook, requiresMigration, resolveAssetAmount, resolveBatchExpiryPolicy, resolveCheckpointExitDelayPolicy, resolveDescriptorSigner, resolvePrevTxs, resolveSendAmount, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, selectCoinsWithAsset, selectVirtualCoins, serializeAssets, serializeExitPackage, serializeUtxo, serializeVtxo, setupServiceWorker, signAndSubmitOffchainTx, signerSetFromInfo, signingDescriptorIndex, strictSigningDescriptorIndex, toXOnlySignerHex, tryResolveSendAmount, validateBatchRecipients, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, walletFeeSource, warnAndFilterVtxosForScript, withPrevTxs };
|
|
24417
|
-
//# sourceMappingURL=chunk-
|
|
24418
|
-
//# sourceMappingURL=chunk-
|
|
24498
|
+
export { ARKADE_MAGIC, ARKADE_SALTED_PREIMAGE_TAG, ARKADE_SWAP_PREIMAGE_TAG, ASSET_CARRIER_SATS, AbortError, ActivityRegistry, AmbiguousRouteError, ArkNote, ArkadeCash, ArkadeCashCreateError, AssetManager, BIP21, BIP21Error, BIP322, BLOCKED_UPGRADE_TIMEOUT_MS, Batch, CachingArkProvider, ChainedTxType, ConnectionDisposedError, ContractManager, ContractRepositoryImpl, ContractWatcher, DB_VERSION, DEFAULT_MESSAGE_TIMEOUTS, DEFAULT_MIN_BATCH_EXPIRY_SECONDS, DEFAULT_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, DatabaseUpgradeBlockedError, DelegateManagerImpl, DelegateNotConfiguredError, DelegatorManagerImpl, DelegatorNotConfiguredError, DescriptorIdentity, DescriptorSigningProviderMissingError, DustChangeError, ELECTRUM_TCP_HOST, ELECTRUM_WS_URL, ESPLORA_URL, ElectrumOnchainProvider, EmulatorPacket, EsploraProvider, Estimator, Extension, ExtensionNotFoundError, ForeignDescriptorError, HDDescriptorProvider, INTENT_TERMINAL_STATES, InMemoryContractRepository, InMemoryIntentRepository, InMemoryVirtualTxRepository, InMemoryWalletRepository, IndexedDBContractRepository, IndexedDBIntentRepository, IndexedDBVirtualTxRepository, IndexedDBWalletRepository, MAX_USED_SIGNING_DESCRIPTORS_LOOK_AHEAD, MESSAGE_BUS_INITIALIZING, MESSAGE_BUS_NOT_INITIALIZED, MIGRATION_KEY, MUTINYNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, MessageBus, MessageBusInitializingError, MessageBusNotInitializedError, MissingSigningDescriptorError, MnemonicIdentity, OnchainWallet, P2A, PaymentRouter, PrevTxUnavailableError, REGTEST_MIN_BATCH_EXPIRY_SECONDS, REGTEST_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, Ramps, ReadonlyAssetManager, ReadonlyDescriptorIdentity, ReadonlySingleKey, ReadonlyWallet, ReadonlyWalletError, RestDelegateProvider, RestDelegatorProvider, RestEmulatorProvider, SIGNET_MIN_CHECKPOINT_EXIT_DELAY_SECONDS, SeedIdentity, ServiceWorkerReadonlyWallet, ServiceWorkerTimeoutError, ServiceWorkerWallet, SingleKey, TxTree, TxType, TxWeightEstimator, UnannotatableInputError, UnilateralExit, UnknownPacket, Unroll, VtxoManager, Wallet2 as Wallet, WalletCannotAllocateAddressError, WalletCannotSignError, WalletMessageHandler, WalletNotInitializedError, WalletRepositoryImpl, WsElectrumChainSource, adoptContractDescriptor, arkAssetRail, arkRail, arkTarget, arkade_exports, assertFinalCommitmentMatchesValidated, assertIntentIdUnique, assertNoAssets, assertNoSelection, assertSendableAmount, assertSubmittedArkTxid, assertValidBatchExpiry, assertValidServerUnrollScript, assetMintResolver, assetsOf, attachPrevArkTxs, attachPrevoutTxs, awaitTransaction, boardingResolver, btcTarget, buildForfeitTx, buildOffchainTx, buildPreimageMessage, buildSaltedPreimageMessage, claimWithPreimageIdentity, classifyAgainstSignerSet, classifyContractSigner, closeDatabase, collabExitResolver, combineTapscriptSigs, contractFromArkContract, contractFromArkContractWithAddress, contractPreimage, contractSigner, createAssetPacket, createDefaultActivityRegistry, createDefaultPaymentRouter, createExitChainResolver, createManagedConnection, decodeArkContract, defaultBatchExpiryPolicy, defaultCheckpointExitDelayPolicy, deleteByIndex, deserializeAssets, deserializeExitPackage, deserializeUtxo, deserializeVtxo, encodeArkContract, exitObserverFor, extendVirtualCoinForContract, extractArkProviderUrl, gateExclusion, gatedContracts, getAllByIndexValues, getMigrationStatus, getRandomId, hasBoardingTxExpired, hasCandidates, intentMatchesFilter, intentPageBounds, invoiceTarget, isAddressAllocationCapable, isArkContract, isBatchSignable, isBtcAddress, isContractGenericallySpendable, isContractVtxoEvent, isCooperativelyMigratable, isDeterministicSigner, isDiscoverable, isHDAllocationCapable, isHDDeterministicSignCapable, isHDWalletCapable, isLightningInvoice, isLnurl, isMessageBusInitializingError, isMessageBusNotInitializedError, isPerArtifactDescriptor, isSigningIdentity, isSubdust, isTerminalIntentState, isValidArkAddress, isVtxoExpiringSoon, isVtxoForScript, isWatchedContract, logExcludedVtxos, makeHandle, matchServerCheckpoints, mergeChainedTxType, migrateWalletRepository, notifyExitObserved, onchainRail, openDatabase, outpointExclusion, outpointReasons, promisifyRequest, provisionClaimSecret, provisionRefundKey, registerWalletRestoreHook, requiresMigration, resolveAssetAmount, resolveBatchExpiryPolicy, resolveCheckpointExitDelayPolicy, resolveDescriptorSigner, resolvePrevTxs, resolveSendAmount, rollbackMigration, saveVtxosForContract, scriptFromArkAddress, selectCoinsWithAsset, selectVirtualCoins, selectionOf, serializeAssets, serializeExitPackage, serializeUtxo, serializeVtxo, setupServiceWorker, signAndSubmitOffchainTx, signerSetFromInfo, signingDescriptorIndex, strictSigningDescriptorIndex, toXOnlySignerHex, tryResolveSendAmount, validateBatchRecipients, validateConnectorsTxGraph, validateVtxoTxGraph, verifyTapscriptSignatures, waitForIncomingFunds, walletFeeSource, warnAndFilterVtxosForScript, withPrevTxs };
|
|
24499
|
+
//# sourceMappingURL=chunk-ZTGTQP2W.js.map
|
|
24500
|
+
//# sourceMappingURL=chunk-ZTGTQP2W.js.map
|