UNPKG

@bsv/wallet-toolbox-client

Version:
42 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.signAction = signAction; const sdk_1 = require("@bsv/sdk"); const createAction_1 = require("./createAction"); const completeSignedTransaction_1 = require("./completeSignedTransaction"); const WERR_errors_1 = require("../../sdk/WERR_errors"); const validationHelpers_1 = require("../../sdk/validationHelpers"); async function signAction(wallet, auth, args) { const prior = wallet.pendingSignActions[args.reference]; if (!prior) throw new WERR_errors_1.WERR_NOT_IMPLEMENTED('recovery of out-of-session signAction reference data is not yet implemented.'); if (!prior.dcr.inputBeef) throw new WERR_errors_1.WERR_INTERNAL('prior.dcr.inputBeef must be valid'); const vargs = mergePriorOptions(prior.args, args); prior.tx = await (0, completeSignedTransaction_1.completeSignedTransaction)(prior, vargs.spends, wallet); const { sendWithResults, notDelayedResults } = await (0, createAction_1.processAction)(prior, wallet, auth, vargs); const txid = prior.tx.id('hex'); const beef = sdk_1.Beef.fromBinary(prior.dcr.inputBeef); beef.mergeTransaction(prior.tx); (0, completeSignedTransaction_1.verifyUnlockScripts)(txid, beef); const r = { txid: prior.tx.id('hex'), tx: vargs.options.returnTXIDOnly ? undefined : beef.toBinaryAtomic(txid), sendWithResults, notDelayedResults }; return r; } function mergePriorOptions(caVargs, saArgs) { const saOptions = (saArgs.options || (saArgs.options = {})); if (saOptions.acceptDelayedBroadcast === undefined) saOptions.acceptDelayedBroadcast = caVargs.options.acceptDelayedBroadcast; if (saOptions.returnTXIDOnly === undefined) saOptions.returnTXIDOnly = caVargs.options.returnTXIDOnly; if (saOptions.noSend === undefined) saOptions.noSend = caVargs.options.noSend; if (saOptions.sendWith === undefined) saOptions.sendWith = caVargs.options.sendWith; return (0, validationHelpers_1.validateSignActionArgs)(saArgs); } //# sourceMappingURL=signAction.js.map