diff --git a/lib/alkanes/alkanes.d.ts b/lib/alkanes/alkanes.d.ts index b599c819..a227bfe9 100644 --- a/lib/alkanes/alkanes.d.ts +++ b/lib/alkanes/alkanes.d.ts @@ -71,6 +71,17 @@ export declare const actualUnwrapBtcFee: ({ utxos, account, provider, feeRate, u fee: number; vsize: number; }>; +export declare const unwrapBtcNoSigning: ({ utxos, account, provider, feeRate, unwrapAmount, alkaneUtxos, }: { + utxos: FormattedUtxo[]; + account: Account; + provider: Provider; + feeRate?: number; + unwrapAmount: bigint; + alkaneUtxos: FormattedUtxo[]; +}) => Promise<{ + psbt: string; + psbtHex: string; +}>; export declare const unwrapBtc: ({ utxos, account, provider, feeRate, signer, unwrapAmount, alkaneUtxos, }: { utxos: FormattedUtxo[]; account: Account; @@ -204,7 +215,7 @@ export declare const executePsbt: ({ alkanesUtxos, utxos, account, protostone, p psbt: string; fee: number; }>; -export declare const executeFallbackToWitnessProxy: ({ alkanesUtxos, utxos, account, calldata, provider, feeRate, signer, frontendFee, feeAddress, witnessProxy, frbtcWrapAmount, addDieselMint, }: { +export declare const executeFallbackToWitnessProxy: ({ alkanesUtxos, utxos, account, calldata, provider, feeRate, signer, frontendFee, feeAddress, witnessProxy, frbtcWrapAmount, frbtcUnwrapAmount, addDieselMint, }: { alkanesUtxos?: FormattedUtxo[]; utxos: FormattedUtxo[]; account: Account; @@ -216,16 +227,10 @@ export declare const executeFallbackToWitnessProxy: ({ alkanesUtxos, utxos, acco feeAddress?: string; witnessProxy?: AlkaneId; frbtcWrapAmount?: number; + frbtcUnwrapAmount?: number; addDieselMint?: boolean; -}) => Promise<{ - txId: string; - rawTx: string; - size: any; - weight: any; - fee: number; - satsPerVByte: string; -}>; -export declare const execute: ({ alkanesUtxos, utxos, account, protostone, provider, feeRate, signer, frontendFee, feeAddress, frbtcWrapPsbt, }: { +}) => Promise; +export declare const execute: ({ alkanesUtxos, utxos, account, protostone, provider, feeRate, signer, frontendFee, feeAddress, frbtcWrapPsbt, frbtcUnwrapAmount, }: { alkanesUtxos?: FormattedUtxo[]; utxos: FormattedUtxo[]; account: Account; @@ -236,14 +241,8 @@ export declare const execute: ({ alkanesUtxos, utxos, account, protostone, provi frontendFee?: bigint; feeAddress?: string; frbtcWrapPsbt?: bitcoin.Psbt; -}) => Promise<{ - txId: string; - rawTx: string; - size: any; - weight: any; - fee: number; - satsPerVByte: string; -}>; + frbtcUnwrapAmount?: number; +}) => Promise; export declare const actualWrapBtcFee: ({ alkanesUtxos, utxos, account, protostone, provider, feeRate, wrapAmount, }: { alkanesUtxos?: FormattedUtxo[]; utxos: FormattedUtxo[]; diff --git a/lib/alkanes/alkanes.js b/lib/alkanes/alkanes.js index 31937a39..f5119113 100644 --- a/lib/alkanes/alkanes.js +++ b/lib/alkanes/alkanes.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.inscribePayloadBulk = exports.p2tr_ord_reveal = exports.toAlkaneId = exports.toTxId = exports.createTransactReveal = exports.wrapBtc = exports.wrapBtcNoSigning = exports.actualWrapBtcFee = exports.execute = exports.executeFallbackToWitnessProxy = exports.executePsbt = exports.actualExecuteFee = exports.actualTransactRevealFee = exports.deployReveal = exports.deployCommit = exports.createDeployCommitPsbt = exports.actualDeployCommitFee = exports.addInputForUtxo = exports.unwrapBtc = exports.actualUnwrapBtcFee = exports.createUnwrapBtcPsbt = exports.createWrapBtcPsbt = exports.createExecutePsbt = exports.addFrBtcWrapOutToPsbt = exports.encodeProtostone = void 0; +exports.inscribePayloadBulk = exports.p2tr_ord_reveal = exports.toAlkaneId = exports.toTxId = exports.createTransactReveal = exports.wrapBtc = exports.wrapBtcNoSigning = exports.actualWrapBtcFee = exports.execute = exports.executeFallbackToWitnessProxy = exports.executePsbt = exports.actualExecuteFee = exports.actualTransactRevealFee = exports.deployReveal = exports.deployCommit = exports.createDeployCommitPsbt = exports.actualDeployCommitFee = exports.addInputForUtxo = exports.unwrapBtc = exports.unwrapBtcNoSigning = exports.actualUnwrapBtcFee = exports.createUnwrapBtcPsbt = exports.createWrapBtcPsbt = exports.createExecutePsbt = exports.addFrBtcWrapOutToPsbt = exports.encodeProtostone = void 0; const tslib_1 = require("tslib"); const btc_1 = require("../btc"); const bitcoin = tslib_1.__importStar(require("bitcoinjs-lib")); @@ -254,19 +254,9 @@ const createUnwrapBtcPsbt = async ({ utxos, account, provider, feeRate, fee = 0, throw new Error('No taproot or nativeSegwit address found'); } const subfrostAddress = await (0, subfrost_1.getWrapAddress)(provider); - const totalAlkaneAmount = alkaneUtxos.reduce((acc, utxo) => { - const alkane = utxo.alkanes['32:0']; - if (alkane) { - return acc + BigInt(alkane.value); - } - return acc; - }, 0n); const psbt = new bitcoin.Psbt({ network: provider.network }); psbt.addOutput({ address: alkanesAddress, value: 546 }); psbt.addOutput({ address: subfrostAddress, value: 546 }); - if (totalAlkaneAmount < unwrapAmount) { - throw new errors_1.OylTransactionError(Error('Insufficient frbtc balance')); - } const dustOutputIndex = psbt.txOutputs.length - 1; const calldata = [32n, 0n, 78n, BigInt(dustOutputIndex), unwrapAmount]; const protostones = []; @@ -368,8 +358,8 @@ const actualUnwrapBtcFee = async ({ utxos, account, provider, feeRate, unwrapAmo return { fee: finalFee, vsize }; }; exports.actualUnwrapBtcFee = actualUnwrapBtcFee; -const unwrapBtc = async ({ utxos, account, provider, feeRate, signer, unwrapAmount, alkaneUtxos, }) => { - const { fee, vsize } = await (0, exports.actualUnwrapBtcFee)({ +const unwrapBtcNoSigning = async ({ utxos, account, provider, feeRate, unwrapAmount, alkaneUtxos, }) => { + const { fee } = await (0, exports.actualUnwrapBtcFee)({ utxos, account, provider, @@ -377,7 +367,7 @@ const unwrapBtc = async ({ utxos, account, provider, feeRate, signer, unwrapAmou unwrapAmount, alkaneUtxos, }); - const { psbt: finalPsbt } = await (0, exports.createUnwrapBtcPsbt)({ + return await (0, exports.createUnwrapBtcPsbt)({ utxos, account, provider, @@ -386,6 +376,27 @@ const unwrapBtc = async ({ utxos, account, provider, feeRate, signer, unwrapAmou unwrapAmount, alkaneUtxos, }); +}; +exports.unwrapBtcNoSigning = unwrapBtcNoSigning; +const unwrapBtc = async ({ utxos, account, provider, feeRate, signer, unwrapAmount, alkaneUtxos, }) => { + const totalAlkaneAmount = alkaneUtxos.reduce((acc, utxo) => { + const alkane = utxo.alkanes['32:0']; + if (alkane) { + return acc + BigInt(alkane.value); + } + return acc; + }, 0n); + if (totalAlkaneAmount < unwrapAmount) { + throw new errors_1.OylTransactionError(Error('Insufficient frbtc balance')); + } + const { psbt: finalPsbt } = await (0, exports.unwrapBtcNoSigning)({ + utxos, + account, + provider, + feeRate, + unwrapAmount, + alkaneUtxos, + }); const { signedPsbt } = await signer.signAllInputs({ rawPsbt: finalPsbt, finalize: true, @@ -793,10 +804,55 @@ const executePsbt = async ({ alkanesUtxos, utxos, account, protostone, provider, return { psbt: finalPsbt, fee }; }; exports.executePsbt = executePsbt; -const executeFallbackToWitnessProxy = async ({ alkanesUtxos, utxos, account, calldata, provider, feeRate, signer, frontendFee, feeAddress, witnessProxy, frbtcWrapAmount, addDieselMint, }) => { - let frbtcWrapPsbt; - let remainingUtxos = utxos; +// NOTE: ASSUMES RUNES, ALKANES, ETC ARE ON OUTPUTS OF VALUE 546 +// WILL POTENTIALLY BURN RUNES, ALKANES, ETC IF THEY ARE NOT ON VALUE 546 +const getRemainingUtxosAfterPsbt = ({ psbt, alkanesUtxos, utxos, account, network }) => { + if (!psbt) { + return { remainingUtxos: utxos, remainingAlkanesUtxos: alkanesUtxos }; + } + const spentUtxos = psbt.txInputs.map((input) => ({ + txId: (0, exports.toTxId)(input.hash.toString('hex')), + outputIndex: input.index, + })); + let remainingUtxos = utxos.filter((utxo) => !spentUtxos.some((spent) => spent.txId === utxo.txId && + spent.outputIndex === Number(utxo.outputIndex))); let remainingAlkanesUtxos = alkanesUtxos; + if (alkanesUtxos) { + remainingAlkanesUtxos = alkanesUtxos.filter(utxo => !spentUtxos.some(spent => spent.txId === utxo.txId && spent.outputIndex === Number(utxo.outputIndex))); + } + const txId = (0, utils_1.getUnfinalizedPsbtTxId)(psbt); + const spendableAddresses = [ + account.nativeSegwit?.address, + account.taproot?.address, + account.nestedSegwit?.address, + account.legacy?.address, + ].filter(Boolean); + psbt.txOutputs.forEach((output, index) => { + try { + const address = bitcoin.address.fromOutputScript(output.script, network); + if (spendableAddresses.includes(address) && output.value != 546) { + remainingUtxos.push({ + txId, + outputIndex: index, + satoshis: output.value, + scriptPk: output.script.toString('hex'), + address, + inscriptions: [], + runes: {}, + alkanes: {}, + confirmations: 0, + indexed: true, // technically not indexed but it can be used in future txs + }); + } + } + catch (e) { + // Ignore outputs that don't have a valid address + } + }); + return { remainingUtxos, remainingAlkanesUtxos }; +}; +const executeFallbackToWitnessProxy = async ({ alkanesUtxos, utxos, account, calldata, provider, feeRate, signer, frontendFee, feeAddress, witnessProxy, frbtcWrapAmount, frbtcUnwrapAmount, addDieselMint, }) => { + let frbtcWrapPsbt; if (frbtcWrapAmount) { const { psbt } = await (0, exports.wrapBtcNoSigning)({ utxos, @@ -809,27 +865,14 @@ const executeFallbackToWitnessProxy = async ({ alkanesUtxos, utxos, account, cal frbtcWrapPsbt = bitcoin.Psbt.fromBase64(psbt, { network: provider.network, }); - const spentUtxos = frbtcWrapPsbt.txInputs.map(input => ({ - txId: (0, exports.toTxId)(input.hash.toString('hex')), - outputIndex: input.index, - })); - remainingUtxos = utxos.filter(utxo => !spentUtxos.some(spent => spent.txId === utxo.txId && spent.outputIndex === Number(utxo.outputIndex))); - remainingUtxos.push({ - txId: (0, utils_1.getUnfinalizedPsbtTxId)(frbtcWrapPsbt), - outputIndex: frbtcWrapPsbt.txOutputs.length - 1, - satoshis: frbtcWrapPsbt.txOutputs[frbtcWrapPsbt.txOutputs.length - 1].value, - scriptPk: frbtcWrapPsbt.txOutputs[frbtcWrapPsbt.txOutputs.length - 1].script.toString('hex'), - address: account.nativeSegwit.address, - inscriptions: [], - runes: {}, - alkanes: {}, - confirmations: 0, - indexed: true, // technically not indexed but it can be used in future txs - }); - if (alkanesUtxos) { - remainingAlkanesUtxos = alkanesUtxos.filter(utxo => !spentUtxos.some(spent => spent.txId === utxo.txId && spent.outputIndex === Number(utxo.outputIndex))); - } } + const { remainingUtxos, remainingAlkanesUtxos } = getRemainingUtxosAfterPsbt({ + psbt: frbtcWrapPsbt, + utxos, + alkanesUtxos, + account, + network: provider.network + }); let protostone = (0, index_1.encodeRunestoneProtostone)({ protostones: [ index_1.ProtoStone.message({ @@ -895,11 +938,12 @@ const executeFallbackToWitnessProxy = async ({ alkanesUtxos, utxos, account, cal frontendFee, feeAddress, frbtcWrapPsbt, + frbtcUnwrapAmount, }); } }; exports.executeFallbackToWitnessProxy = executeFallbackToWitnessProxy; -const execute = async ({ alkanesUtxos, utxos, account, protostone, provider, feeRate, signer, frontendFee, feeAddress, frbtcWrapPsbt, }) => { +const execute = async ({ alkanesUtxos, utxos, account, protostone, provider, feeRate, signer, frontendFee, feeAddress, frbtcWrapPsbt, frbtcUnwrapAmount, }) => { const { fee } = await (0, exports.actualExecuteFee)({ alkanesUtxos, frontendFee, @@ -923,12 +967,55 @@ const execute = async ({ alkanesUtxos, utxos, account, protostone, provider, fee fee, frbtcWrapPsbt, }); - if (frbtcWrapPsbt) { - const signedPsbts = await signer.signAllInputsMultiplePsbts({ - rawPsbts: [frbtcWrapPsbt.toBase64(), finalPsbt], - finalize: true, + let frbtcUnwrapPsbt; + if (frbtcUnwrapAmount) { + const executePsbt = bitcoin.Psbt.fromBase64(finalPsbt, { + network: provider.network, + }); + const { remainingUtxos } = getRemainingUtxosAfterPsbt({ + psbt: executePsbt, + utxos, + account, + network: provider.network + }); + const frbtcUtxo = [{ + txId: (0, utils_1.getUnfinalizedPsbtTxId)(executePsbt), + outputIndex: 0, + satoshis: 546, + scriptPk: executePsbt.txOutputs[0].script.toString('hex'), + address: bitcoin.address.fromOutputScript(executePsbt.txOutputs[0].script, provider.network), + inscriptions: [], + runes: {}, + alkanes: {}, + confirmations: 0, + indexed: true, // technically not indexed but it can be used in future txs + }]; + const { psbt } = await (0, exports.unwrapBtcNoSigning)({ + alkaneUtxos: frbtcUtxo, + utxos: remainingUtxos, + account, + provider, + feeRate, + unwrapAmount: BigInt(frbtcUnwrapAmount), + }); + frbtcUnwrapPsbt = bitcoin.Psbt.fromBase64(psbt, { + network: provider.network, }); - console.log("signedPsbts", signedPsbts); + } + let rawPsbtsToSign = [finalPsbt]; + if (frbtcWrapPsbt) { + rawPsbtsToSign.unshift(frbtcWrapPsbt.toBase64()); + } + if (frbtcUnwrapPsbt) { + rawPsbtsToSign.push(frbtcUnwrapPsbt.toBase64()); + } + const signedPsbts = await signer.signAllInputsMultiplePsbts({ + rawPsbts: rawPsbtsToSign, + finalize: true, + }); + console.log("signedPsbts", signedPsbts); + let returnResult; // TODO: should return all the results, not just one + if (frbtcWrapPsbt) { const frbtcResult = await provider.pushPsbt({ psbtBase64: signedPsbts[0].signedPsbt, }); @@ -936,19 +1023,23 @@ const execute = async ({ alkanesUtxos, utxos, account, protostone, provider, fee const swapWrapResult = await provider.pushPsbt({ psbtBase64: signedPsbts[1].signedPsbt, }); - console.log("swapWrapResult", swapWrapResult); - return swapWrapResult; + console.log("executeResult", swapWrapResult); + returnResult = swapWrapResult; } else { - const { signedPsbt } = await signer.signAllInputs({ - rawPsbt: finalPsbt, - finalize: true, + const pushResult = await provider.pushPsbt({ + psbtBase64: signedPsbts[0].signedPsbt, }); + console.log("executeResult", pushResult); + returnResult = pushResult; + } + if (frbtcUnwrapPsbt) { const pushResult = await provider.pushPsbt({ - psbtBase64: signedPsbt, + psbtBase64: signedPsbts.at(-1).signedPsbt, }); - return pushResult; + console.log("unwrap result ", pushResult); } + return returnResult; }; exports.execute = execute; const actualWrapBtcFee = async ({ alkanesUtxos, utxos, account, protostone, provider, feeRate, wrapAmount, }) => { diff --git a/lib/alkanes/alkanes.js.map b/lib/alkanes/alkanes.js.map index 51d1d5d1..8a6cd3bd 100644 --- a/lib/alkanes/alkanes.js.map +++ b/lib/alkanes/alkanes.js.map @@ -1 +1 @@ -{"version":3,"file":"alkanes.js","sourceRoot":"","sources":["../../src/alkanes/alkanes.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"alkanes.js","sourceRoot":"","sources":["../../src/alkanes/alkanes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/alkanes/alkanes.ts b/src/alkanes/alkanes.ts index 07696daf..3f857b16 100644 --- a/src/alkanes/alkanes.ts +++ b/src/alkanes/alkanes.ts @@ -378,21 +378,10 @@ export const createUnwrapBtcPsbt = async ({ const subfrostAddress = await getWrapAddress(provider); - const totalAlkaneAmount = alkaneUtxos.reduce((acc, utxo) => { - const alkane = utxo.alkanes['32:0'] - if (alkane) { - return acc + BigInt(alkane.value) - } - return acc - }, 0n) - const psbt = new bitcoin.Psbt({ network: provider.network }) psbt.addOutput({ address: alkanesAddress, value: 546 }) psbt.addOutput({ address: subfrostAddress, value: 546 }) - if (totalAlkaneAmount < unwrapAmount) { - throw new OylTransactionError(Error('Insufficient frbtc balance')) - } const dustOutputIndex = psbt.txOutputs.length - 1 @@ -528,12 +517,13 @@ export const actualUnwrapBtcFee = async ({ return { fee: finalFee, vsize } } -export const unwrapBtc = async ({ + + +export const unwrapBtcNoSigning = async ({ utxos, account, provider, feeRate, - signer, unwrapAmount, alkaneUtxos, }: { @@ -541,11 +531,10 @@ export const unwrapBtc = async ({ account: Account provider: Provider feeRate?: number - signer: Signer unwrapAmount: bigint alkaneUtxos: FormattedUtxo[] }) => { - const { fee, vsize } = await actualUnwrapBtcFee({ + const { fee } = await actualUnwrapBtcFee({ utxos, account, provider, @@ -554,7 +543,7 @@ export const unwrapBtc = async ({ alkaneUtxos, }) - const { psbt: finalPsbt } = await createUnwrapBtcPsbt({ + return await createUnwrapBtcPsbt({ utxos, account, provider, @@ -563,6 +552,43 @@ export const unwrapBtc = async ({ unwrapAmount, alkaneUtxos, }) +} + +export const unwrapBtc = async ({ + utxos, + account, + provider, + feeRate, + signer, + unwrapAmount, + alkaneUtxos, +}: { + utxos: FormattedUtxo[] + account: Account + provider: Provider + feeRate?: number + signer: Signer + unwrapAmount: bigint + alkaneUtxos: FormattedUtxo[] +}) => { + const totalAlkaneAmount = alkaneUtxos.reduce((acc, utxo) => { + const alkane = utxo.alkanes['32:0'] + if (alkane) { + return acc + BigInt(alkane.value) + } + return acc + }, 0n) + if (totalAlkaneAmount < unwrapAmount) { + throw new OylTransactionError(Error('Insufficient frbtc balance')) + } + const { psbt: finalPsbt } = await unwrapBtcNoSigning({ + utxos, + account, + provider, + feeRate, + unwrapAmount, + alkaneUtxos, + }) const { signedPsbt } = await signer.signAllInputs({ rawPsbt: finalPsbt, @@ -1193,6 +1219,77 @@ export const executePsbt = async ({ return { psbt: finalPsbt, fee } } +// NOTE: ASSUMES RUNES, ALKANES, ETC ARE ON OUTPUTS OF VALUE 546 +// WILL POTENTIALLY BURN RUNES, ALKANES, ETC IF THEY ARE NOT ON VALUE 546 +const getRemainingUtxosAfterPsbt = ({ + psbt, + alkanesUtxos, + utxos, + account, + network +}: { + psbt?: bitcoin.Psbt, + utxos: FormattedUtxo[], + alkanesUtxos?: FormattedUtxo[], + account: Account, + network: bitcoin.networks.Network +}) => { + if (!psbt) { + return { remainingUtxos: utxos, remainingAlkanesUtxos: alkanesUtxos }; + } + const spentUtxos = psbt.txInputs.map((input) => ({ + txId: toTxId(input.hash.toString('hex')), + outputIndex: input.index, + })) + let remainingUtxos = utxos.filter( + (utxo) => + !spentUtxos.some( + (spent) => + spent.txId === utxo.txId && + spent.outputIndex === Number(utxo.outputIndex) + ) + ) + let remainingAlkanesUtxos = alkanesUtxos; + + if (alkanesUtxos) { + remainingAlkanesUtxos = alkanesUtxos.filter( + utxo => !spentUtxos.some(spent => spent.txId === utxo.txId && spent.outputIndex === Number(utxo.outputIndex)) + ); + } + + const txId = getUnfinalizedPsbtTxId(psbt) + const spendableAddresses = [ + account.nativeSegwit?.address, + account.taproot?.address, + account.nestedSegwit?.address, + account.legacy?.address, + ].filter(Boolean) + + psbt.txOutputs.forEach((output, index) => { + try { + const address = bitcoin.address.fromOutputScript(output.script, network) + if (spendableAddresses.includes(address) && output.value != 546) { + remainingUtxos.push({ + txId, + outputIndex: index, + satoshis: output.value, + scriptPk: output.script.toString('hex'), + address, + inscriptions: [], + runes: {}, + alkanes: {}, + confirmations: 0, + indexed: true, // technically not indexed but it can be used in future txs + }) + } + } catch (e) { + // Ignore outputs that don't have a valid address + } + }) + + return { remainingUtxos, remainingAlkanesUtxos }; +} + export const executeFallbackToWitnessProxy = async ({ alkanesUtxos, utxos, @@ -1205,6 +1302,7 @@ export const executeFallbackToWitnessProxy = async ({ feeAddress, witnessProxy, frbtcWrapAmount, + frbtcUnwrapAmount, addDieselMint, }: { alkanesUtxos?: FormattedUtxo[] @@ -1218,11 +1316,10 @@ export const executeFallbackToWitnessProxy = async ({ feeAddress?: string witnessProxy?: AlkaneId frbtcWrapAmount?: number + frbtcUnwrapAmount?: number addDieselMint?: boolean }) => { let frbtcWrapPsbt; - let remainingUtxos = utxos; - let remainingAlkanesUtxos = alkanesUtxos; if (frbtcWrapAmount) { const { psbt } = await wrapBtcNoSigning({ @@ -1236,32 +1333,14 @@ export const executeFallbackToWitnessProxy = async ({ frbtcWrapPsbt = bitcoin.Psbt.fromBase64(psbt, { network: provider.network, }); - - const spentUtxos = frbtcWrapPsbt.txInputs.map(input => ({ - txId: toTxId(input.hash.toString('hex')), - outputIndex: input.index, - })); - remainingUtxos = utxos.filter( - utxo => !spentUtxos.some(spent => spent.txId === utxo.txId && spent.outputIndex === Number(utxo.outputIndex)) - ); - remainingUtxos.push({ - txId: getUnfinalizedPsbtTxId(frbtcWrapPsbt), - outputIndex: frbtcWrapPsbt.txOutputs.length - 1, - satoshis: (frbtcWrapPsbt.txOutputs[frbtcWrapPsbt.txOutputs.length - 1] as bitcoin.PsbtTxOutput).value, - scriptPk: (frbtcWrapPsbt.txOutputs[frbtcWrapPsbt.txOutputs.length - 1] as bitcoin.PsbtTxOutput).script.toString('hex'), - address: account.nativeSegwit.address, - inscriptions: [], - runes: {}, - alkanes: {}, - confirmations: 0, - indexed: true, // technically not indexed but it can be used in future txs - }); - if (alkanesUtxos) { - remainingAlkanesUtxos = alkanesUtxos.filter( - utxo => !spentUtxos.some(spent => spent.txId === utxo.txId && spent.outputIndex === Number(utxo.outputIndex)) - ); - } } + const { remainingUtxos, remainingAlkanesUtxos } = getRemainingUtxosAfterPsbt({ + psbt: frbtcWrapPsbt, + utxos, + alkanesUtxos, + account, + network: provider.network + }) let protostone = encodeRunestoneProtostone({ protostones: [ @@ -1327,6 +1406,7 @@ export const executeFallbackToWitnessProxy = async ({ frontendFee, feeAddress, frbtcWrapPsbt, + frbtcUnwrapAmount, }); } } @@ -1342,6 +1422,7 @@ export const execute = async ({ frontendFee, feeAddress, frbtcWrapPsbt, + frbtcUnwrapAmount, }: { alkanesUtxos?: FormattedUtxo[] utxos: FormattedUtxo[] @@ -1353,6 +1434,7 @@ export const execute = async ({ frontendFee?: bigint feeAddress?: string frbtcWrapPsbt?: bitcoin.Psbt + frbtcUnwrapAmount?: number }) => { const { fee } = await actualExecuteFee({ alkanesUtxos, @@ -1379,12 +1461,62 @@ export const execute = async ({ frbtcWrapPsbt, }) - if (frbtcWrapPsbt) { - const signedPsbts = await signer.signAllInputsMultiplePsbts({ - rawPsbts: [frbtcWrapPsbt.toBase64(), finalPsbt], - finalize: true, + let frbtcUnwrapPsbt; + + if (frbtcUnwrapAmount) { + const executePsbt = bitcoin.Psbt.fromBase64(finalPsbt, { + network: provider.network, + }); + const { remainingUtxos } = getRemainingUtxosAfterPsbt({ + psbt: executePsbt, + utxos, + account, + network: provider.network + }) + + const frbtcUtxo: FormattedUtxo[] = [{ + txId: getUnfinalizedPsbtTxId(executePsbt), + outputIndex: 0, + satoshis: 546, + scriptPk: executePsbt.txOutputs[0].script.toString('hex'), + address: bitcoin.address.fromOutputScript(executePsbt.txOutputs[0].script, provider.network), + inscriptions: [], + runes: {}, + alkanes: {}, // there is the frbtc alkane but this doesn't need to be specified since this is just added directly as an input + confirmations: 0, + indexed: true, // technically not indexed but it can be used in future txs + }] + + const { psbt } = await unwrapBtcNoSigning({ + alkaneUtxos: frbtcUtxo, + utxos: remainingUtxos, + account, + provider, + feeRate, + unwrapAmount: BigInt(frbtcUnwrapAmount), }) - console.log("signedPsbts", signedPsbts) + frbtcUnwrapPsbt = bitcoin.Psbt.fromBase64(psbt, { + network: provider.network, + }); + } + + let rawPsbtsToSign = [finalPsbt]; + if (frbtcWrapPsbt) { + rawPsbtsToSign.unshift(frbtcWrapPsbt.toBase64()); + } + if (frbtcUnwrapPsbt) { + rawPsbtsToSign.push(frbtcUnwrapPsbt.toBase64()); + } + + const signedPsbts = await signer.signAllInputsMultiplePsbts({ + rawPsbts: rawPsbtsToSign, + finalize: true, + }) + console.log("signedPsbts", signedPsbts) + + let returnResult; // TODO: should return all the results, not just one + + if (frbtcWrapPsbt) { const frbtcResult = await provider.pushPsbt({ psbtBase64: signedPsbts[0].signedPsbt, }) @@ -1392,18 +1524,24 @@ export const execute = async ({ const swapWrapResult = await provider.pushPsbt({ psbtBase64: signedPsbts[1].signedPsbt, }) - console.log("swapWrapResult", swapWrapResult); - return swapWrapResult; + console.log("executeResult", swapWrapResult); + returnResult = swapWrapResult; } else { - const { signedPsbt } = await signer.signAllInputs({ - rawPsbt: finalPsbt, - finalize: true, + const pushResult = await provider.pushPsbt({ + psbtBase64: signedPsbts[0].signedPsbt, }) + console.log("executeResult", pushResult); + returnResult = pushResult; + } + + if (frbtcUnwrapPsbt) { const pushResult = await provider.pushPsbt({ - psbtBase64: signedPsbt, + psbtBase64: signedPsbts.at(-1).signedPsbt, }) - return pushResult + console.log("unwrap result ", pushResult); } + + return returnResult; } export const actualWrapBtcFee = async ({