{"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":[]}