@bsv/wallet-toolbox-client
Version:
Client only Wallet Storage
42 lines • 2.13 kB
JavaScript
;
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