@xlink-network/xlink-sdk
Version:
1 lines • 2.25 kB
Source Map (JSON)
{"version":3,"sources":["../src/bitcoinUtils/createTransaction.ts"],"sourcesContent":["import * as btc from \"@scure/btc-signer\"\nimport { hasAny } from \"../utils/arrayHelpers\"\nimport { UTXOSpendable } from \"./bitcoinHelpers\"\n\nexport interface Recipient {\n addressScriptPubKey: Uint8Array\n satsAmount: bigint\n}\n\nexport function createTransaction(\n inputUTXOs: Array<UTXOSpendable>,\n recipients: Array<Recipient>,\n opReturnData: Uint8Array[],\n): btc.Transaction {\n const tx = new btc.Transaction({\n allowUnknownOutputs: true,\n allowLegacyWitnessUtxo: true,\n })\n\n inputUTXOs.forEach(utxo => {\n tx.addInput({\n txid: utxo.txId,\n index: utxo.index,\n witnessUtxo:\n utxo.scriptPubKey == null\n ? undefined\n : {\n script: utxo.scriptPubKey,\n amount: utxo.amount,\n },\n tapInternalKey:\n \"tapInternalKey\" in utxo ? utxo.tapInternalKey : undefined,\n redeemScript: \"redeemScript\" in utxo ? utxo.redeemScript : undefined,\n // Enable RBF\n sequence: btc.DEFAULT_SEQUENCE - 2,\n })\n })\n\n recipients.forEach(recipient => {\n tx.addOutput({\n script: recipient.addressScriptPubKey,\n amount: recipient.satsAmount,\n })\n })\n\n if (hasAny(opReturnData)) {\n opReturnData.forEach(data => {\n tx.addOutput({\n script: btc.Script.encode([\"RETURN\", data]),\n amount: 0n,\n })\n })\n }\n\n return tx\n}\n"],"mappings":";;;;;AAAA,YAAY,SAAS;AASd,SAAS,kBACd,YACA,YACA,cACiB;AACjB,QAAM,KAAK,IAAQ,gBAAY;AAAA,IAC7B,qBAAqB;AAAA,IACrB,wBAAwB;AAAA,EAC1B,CAAC;AAED,aAAW,QAAQ,UAAQ;AACzB,OAAG,SAAS;AAAA,MACV,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,aACE,KAAK,gBAAgB,OACjB,SACA;AAAA,QACE,QAAQ,KAAK;AAAA,QACb,QAAQ,KAAK;AAAA,MACf;AAAA,MACN,gBACE,oBAAoB,OAAO,KAAK,iBAAiB;AAAA,MACnD,cAAc,kBAAkB,OAAO,KAAK,eAAe;AAAA;AAAA,MAE3D,UAAc,uBAAmB;AAAA,IACnC,CAAC;AAAA,EACH,CAAC;AAED,aAAW,QAAQ,eAAa;AAC9B,OAAG,UAAU;AAAA,MACX,QAAQ,UAAU;AAAA,MAClB,QAAQ,UAAU;AAAA,IACpB,CAAC;AAAA,EACH,CAAC;AAED,MAAI,OAAO,YAAY,GAAG;AACxB,iBAAa,QAAQ,UAAQ;AAC3B,SAAG,UAAU;AAAA,QACX,QAAY,WAAO,OAAO,CAAC,UAAU,IAAI,CAAC;AAAA,QAC1C,QAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}