@xlink-network/xlink-sdk
Version:
73 lines (72 loc) • 2.13 kB
JavaScript
import {
reselectSpendableUTXOsFactory
} from "../chunk-4P3N75GA.mjs";
import {
prepareTransaction
} from "../chunk-STX72JIW.mjs";
import {
createTransaction
} from "../chunk-ATRBHFDV.mjs";
import "../chunk-QDMW3AJX.mjs";
import "../chunk-UZKY7HXV.mjs";
import "../chunk-KTUPNUM5.mjs";
import {
isNotNull
} from "../chunk-E5Y3FGR6.mjs";
import {
isSameUTXO
} from "../chunk-VA3HOX5B.mjs";
import "../chunk-YV2TZGS6.mjs";
import "../chunk-KHTJNOQE.mjs";
import "../chunk-PRLWYSC3.mjs";
import "../chunk-ZLTA3V7U.mjs";
// src/bitcoinUtils/createSendInscriptionTransaction.ts
async function createSendInscriptionTransaction(options) {
const opReturnData = options.opReturnData ?? [];
const recipients = options.inscriptionRecipients.map((r) => ({
addressScriptPubKey: r.addressScriptPubKey,
satsAmount: r.inscriptionUtxo.amount
}));
const selectedUTXOs = await Promise.all(
options.inscriptionRecipients.map(
(r) => options.getUTXOSpendable(r.inscriptionUtxo)
)
).then((utxos) => utxos.filter(isNotNull));
const {
inputs,
recipients: newRecipients,
changeAmount
} = await prepareTransaction({
recipients,
changeAddressScriptPubKey: options.changeAddressScriptPubKey,
opReturnData,
feeRate: options.feeRate,
selectedUTXOs,
reselectSpendableUTXOs: reselectSpendableUTXOsFactory(
options.availableFeeUtxos.filter(
(u) => !selectedUTXOs.find((_u) => isSameUTXO(u, _u))
),
options.getUTXOSpendable
)
});
const tx = createTransaction(
inputs,
newRecipients.concat(
changeAmount === 0n ? [] : {
addressScriptPubKey: options.changeAddressScriptPubKey,
satsAmount: changeAmount
}
),
opReturnData
);
const inscriptionCount = options.inscriptionRecipients.length;
return {
tx,
inscriptionUtxoInputIndices: inputs.slice(0, inscriptionCount).map((_, i) => i),
bitcoinUtxoInputIndices: inputs.slice(inscriptionCount).map((_, i) => i + inscriptionCount)
};
}
export {
createSendInscriptionTransaction
};
//# sourceMappingURL=createSendInscriptionTransaction.mjs.map