UNPKG

@bsv/wallet-toolbox

Version:

BRC100 conforming wallet, wallet storage and wallet signer components

71 lines 3.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBasketToSpecOp = void 0; const index_client_1 = require("../../index.client"); const getBasketToSpecOp = () => { return { [index_client_1.sdk.specOpWalletBalance]: { name: 'totalOutputsIsWalletBalance', useBasket: 'default', ignoreLimit: true, resultFromOutputs: async (s, auth, vargs, specOpTags, outputs) => { let totalOutputs = 0; for (const o of outputs) totalOutputs += o.satoshis; return { totalOutputs, outputs: [] }; } }, [index_client_1.sdk.specOpInvalidChange]: { name: 'invalidChangeOutputs', useBasket: 'default', ignoreLimit: true, includeOutputScripts: true, includeSpent: false, tagsToIntercept: ['release', 'all'], filterOutputs: async (s, auth, vargs, specOpTags, outputs) => { const filteredOutputs = []; const services = s.getServices(); for (const o of outputs) { await s.validateOutputScript(o); let ok = false; if (o.lockingScript && o.lockingScript.length > 0) { ok = await services.isUtxo(o); } else { ok = undefined; } if (ok === false) { filteredOutputs.push(o); } } if (specOpTags.indexOf('release') >= 0) { for (const o of filteredOutputs) { await s.updateOutput(o.outputId, { spendable: false }); o.spendable = false; } } return filteredOutputs; } }, [index_client_1.sdk.specOpSetWalletChangeParams]: { name: 'setWalletChangeParams', tagsParamsCount: 2, resultFromTags: async (s, auth, vargs, specOpTags) => { if (specOpTags.length !== 2) throw new index_client_1.sdk.WERR_INVALID_PARAMETER('numberOfDesiredUTXOs and minimumDesiredUTXOValue', 'valid'); const numberOfDesiredUTXOs = (0, index_client_1.verifyInteger)(Number(specOpTags[0])); const minimumDesiredUTXOValue = (0, index_client_1.verifyInteger)(Number(specOpTags[1])); const basket = (0, index_client_1.verifyOne)(await s.findOutputBaskets({ partial: { userId: (0, index_client_1.verifyId)(auth.userId), name: 'default' } })); await s.updateOutputBasket(basket.basketId, { numberOfDesiredUTXOs, minimumDesiredUTXOValue }); return { totalOutputs: 0, outputs: [] }; } } }; }; exports.getBasketToSpecOp = getBasketToSpecOp; //# sourceMappingURL=ListOutputsSpecOp.js.map