diff --git a/lib/constants/internalPubkey.js b/lib/constants/internalPubkey.js index cde44ef..eaf97d3 100644 --- a/lib/constants/internalPubkey.js +++ b/lib/constants/internalPubkey.js @@ -2,5 +2,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.internalPubkey = void 0; // internalPubkey denotes an unspendable internal public key to be used for the taproot output -const key = "0264173d3a9fb10d58cb5553332f0fa2b971809d1a8626ca7cb6eebb66eb4cb9ec"; +// NUMS point: https://github.com/bitcoin/bips/blob/master/bip-0341.mediawiki#constructing-and-spending-taproot-outputs +const key = "0250929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0"; exports.internalPubkey = Buffer.from(key, "hex").subarray(1, 33); // Do a subarray(1, 33) to get the public coordinate diff --git a/lib/covenantV1/bridge.js b/lib/covenantV1/bridge.js index efd9e1c..dfbad3a 100644 --- a/lib/covenantV1/bridge.js +++ b/lib/covenantV1/bridge.js @@ -7,12 +7,16 @@ Object.defineProperty(exports, "initBTCCurve", { enumerable: true, get: function const bridge_script_1 = require("./bridge.script"); Object.defineProperty(exports, "buildDepositScript", { enumerable: true, get: function () { return bridge_script_1.buildDepositScript; } }); const fee_1 = require("../utils/fee"); +const scriptUtils_1 = require("../utils/scriptUtils"); // https://bips.xyz/370 const BTC_DUST_SAT = 546; function depositTransaction(scripts, amount, changeAddress, inputUTXOs, network, feeRate) { if (amount <= 0 || feeRate <= 0) { throw new Error("Amount and fee rate must be bigger than 0"); } + if (feeRate < scriptUtils_1.minBtc) { + throw new Error(`fee rate cannot be less than or equal to ${scriptUtils_1.minBtc}`); + } const psbt = new bitcoinjs_lib_1.Psbt({ network }); const p2wsh = bitcoinjs_lib_1.payments.p2wsh({ redeem: { output: scripts.depositScript, network }, @@ -51,11 +55,17 @@ function sendTransaction(scripts, depositTransaction, sendAddress, minimumFee, n if (minimumFee <= 0) { throw new Error("Minimum fee must be bigger than 0"); } + if (minimumFee < scriptUtils_1.minBtc) { + throw new Error(`Minimum fee cannot be less than or equal to ${scriptUtils_1.minBtc}`); + } // Ensure that the minimum fee does not exceed the output value const outputValue = depositTransaction.outs[outputIndex].value; if (minimumFee >= outputValue) { throw new Error("Minimum fee must be less than the output value"); } + if ((0, scriptUtils_1.hasOpReturnOutput)(depositTransaction.outs[outputIndex])) { + throw new Error("OP RETURN cannot exist in the output"); + } const psbt = new bitcoinjs_lib_1.Psbt({ network }); psbt.addInput({ hash: depositTransaction.getHash(), @@ -66,9 +76,13 @@ function sendTransaction(scripts, depositTransaction, sendAddress, minimumFee, n }, witnessScript: scripts.depositScript // This is typically the same as the script used for depositing if P2WSH was used }); + const value = outputValue - minimumFee; + if (value < scriptUtils_1.minBtc) { + throw new Error(`The output value cannot be less than ${scriptUtils_1.minBtc}`); + } psbt.addOutput({ address: sendAddress, - value: outputValue - minimumFee // Subtract the minimum fee from the output value + value // Subtract the minimum fee from the output value }); return { psbt }; } diff --git a/lib/slashable/locking/script.d.ts b/lib/slashable/locking/script.d.ts index 1eff683..dd30c83 100644 --- a/lib/slashable/locking/script.d.ts +++ b/lib/slashable/locking/script.d.ts @@ -3,7 +3,7 @@ import { LockingScripts } from "../../types/LockingScripts"; export declare const PK_LENGTH = 32; export declare class LockingScriptData { #private; - constructor(lockrKey: Buffer, covenantKeys: Buffer[], covenantThreshold: number, lockingTimelock: number, unbondingTimelock: number, magicBytes: Buffer); + constructor(lockerKey: Buffer, operatorKeys: Buffer[], covenantKeys: Buffer[], covenantThreshold: number, lockingTimelock: number, unbondingTimelock: number, magicBytes: Buffer); /** * Validates the locking script. * @return {boolean} Returns true if the locking script is valid, otherwise false. @@ -19,7 +19,7 @@ export declare class LockingScriptData { * Builds the locking timelock script. * Only holder of private key for given pubKey can spend after relative lock time * Creates the timelock script in the form: - * + * * OP_CHECKSIGVERIFY * * OP_CHECKSEQUENCEVERIFY @@ -29,7 +29,7 @@ export declare class LockingScriptData { /** * Builds the unbonding timelock script. * Creates the unbonding timelock script in the form: - * + * * OP_CHECKSIGVERIFY * * OP_CHECKSEQUENCEVERIFY @@ -38,7 +38,7 @@ export declare class LockingScriptData { buildUnbondingTimelockScript(): Buffer; /** * Builds the unbonding script in the form: - * buildSingleKeyScript(lockrPk, true) || + * buildSingleKeyScript(lockerPk, true) || * buildMultiKeyScript(covenantPks, covenantThreshold, false) * || means combining the scripts * @return {Buffer} The unbonding script. @@ -46,11 +46,11 @@ export declare class LockingScriptData { buildUnbondingScript(): Buffer; /** * Builds the slashing script for locking in the form: - * buildSingleKeyScript(lockrPk, true) || + * buildSingleKeyScript(lockerPk, true) || * buildMultiKeyScript(covenantPks, covenantThreshold, false) * || means combining the scripts * The slashing script is a combination of single-key and multi-key scripts. - * The single-key script is used for lockr key verification. + * The single-key script is used for locker key verification. * The multi-key script is used for covenant key verification. * @return {Buffer} The slashing script as a Buffer. */ @@ -59,7 +59,7 @@ export declare class LockingScriptData { * Builds a data script for locking in the form: * OP_RETURN || * where serializedLockingData is the concatenation of: - * MagicBytes || Version || LockrPublicKey || LockingTimeLock + * MagicBytes || Version || lockerPublicKey || LockingTimeLock * @return {Buffer} The compiled provably note script. */ buildProvablyNoteScript(): Buffer; diff --git a/lib/slashable/locking/script.js b/lib/slashable/locking/script.js index a70010e..a602dcf 100644 --- a/lib/slashable/locking/script.js +++ b/lib/slashable/locking/script.js @@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function ( if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; -var _LockingScriptData_instances, _LockingScriptData_lockrKey, _LockingScriptData_covenantKeys, _LockingScriptData_covenantThreshold, _LockingScriptData_lockingTimeLock, _LockingScriptData_unbondingTimeLock, _LockingScriptData_magicBytes, _LockingScriptData_buildSingleKeyScript, _LockingScriptData_buildMultiKeyScript; +var _LockingScriptData_instances, _LockingScriptData_lockerKey, _LockingScriptData_operatorKeys, _LockingScriptData_covenantKeys, _LockingScriptData_covenantThreshold, _LockingScriptData_lockingTimeLock, _LockingScriptData_unbondingTimeLock, _LockingScriptData_magicBytes, _LockingScriptData_buildSingleKeyScript, _LockingScriptData_buildMultiKeyScript; Object.defineProperty(exports, "__esModule", { value: true }); exports.LockingScriptData = exports.PK_LENGTH = void 0; const bitcoinjs_lib_1 = require("bitcoinjs-lib"); @@ -20,10 +20,11 @@ exports.PK_LENGTH = 32; // and exposes methods for converting it into useful formats class LockingScriptData { constructor( - // The `lockrKey` is the public key of the lockr without the coordinate bytes. - lockrKey, - // A list of the public keys without the coordinate bytes corresponding to - // the covenant emulators. + // The `lockerKey` is the public key of the locker without the coordinate bytes. + lockerKey, + // A list of the public keys indicating the sequencer nodes + operatorKeys, + // A list of the public keys indicating the committee members. // This is a parameter of the goat system and should be retrieved from there. covenantKeys, // The number of covenant emulator signatures required for a transaction @@ -40,14 +41,16 @@ class LockingScriptData { // through the data return script magicBytes) { _LockingScriptData_instances.add(this); - _LockingScriptData_lockrKey.set(this, void 0); + _LockingScriptData_lockerKey.set(this, void 0); + _LockingScriptData_operatorKeys.set(this, void 0); _LockingScriptData_covenantKeys.set(this, void 0); _LockingScriptData_covenantThreshold.set(this, void 0); _LockingScriptData_lockingTimeLock.set(this, void 0); _LockingScriptData_unbondingTimeLock.set(this, void 0); _LockingScriptData_magicBytes.set(this, void 0); // Check that required input values are not missing when creating an instance of the LockingScriptData class - if (!lockrKey || + if (!lockerKey || + !operatorKeys || !covenantKeys || !covenantThreshold || !lockingTimelock || @@ -55,7 +58,8 @@ class LockingScriptData { !magicBytes) { throw new Error("Missing required input values"); } - __classPrivateFieldSet(this, _LockingScriptData_lockrKey, lockrKey, "f"); + __classPrivateFieldSet(this, _LockingScriptData_lockerKey, lockerKey, "f"); + __classPrivateFieldSet(this, _LockingScriptData_operatorKeys, operatorKeys, "f"); __classPrivateFieldSet(this, _LockingScriptData_covenantKeys, covenantKeys, "f"); __classPrivateFieldSet(this, _LockingScriptData_covenantThreshold, covenantThreshold, "f"); __classPrivateFieldSet(this, _LockingScriptData_lockingTimeLock, lockingTimelock, "f"); @@ -71,16 +75,40 @@ class LockingScriptData { * @return {boolean} Returns true if the locking script is valid, otherwise false. */ validate() { - // check that lockr key is the correct length - if (__classPrivateFieldGet(this, _LockingScriptData_lockrKey, "f").length != exports.PK_LENGTH) { + // check that locker key is the correct length + if (__classPrivateFieldGet(this, _LockingScriptData_lockerKey, "f").length != exports.PK_LENGTH) { + return false; + } + // check that operator keys are the correct length + if (__classPrivateFieldGet(this, _LockingScriptData_operatorKeys, "f").some((operatorKey) => operatorKey.length != exports.PK_LENGTH)) { return false; } // check that covenant keys are the correct length if (__classPrivateFieldGet(this, _LockingScriptData_covenantKeys, "f").some((covenantKey) => covenantKey.length != exports.PK_LENGTH)) { return false; } - // check that maximum value for locking time is not greater than uint16 - if (__classPrivateFieldGet(this, _LockingScriptData_lockingTimeLock, "f") > 65535) { + // Check whether we have any duplicate keys + const allPks = [ + __classPrivateFieldGet(this, _LockingScriptData_lockerKey, "f"), + ...__classPrivateFieldGet(this, _LockingScriptData_operatorKeys, "f"), + ...__classPrivateFieldGet(this, _LockingScriptData_covenantKeys, "f") + ]; + const allPksSet = new Set(allPks); + if (allPks.length !== allPksSet.size) { + return false; + } + // check that the threshold is above 0 and less than or equal to + // the size of the covenant emulators set + if (__classPrivateFieldGet(this, _LockingScriptData_covenantThreshold, "f") == 0 || + __classPrivateFieldGet(this, _LockingScriptData_covenantThreshold, "f") > __classPrivateFieldGet(this, _LockingScriptData_covenantKeys, "f").length) { + return false; + } + // check that maximum value for staking time is not greater than uint16 and above 0 + if (__classPrivateFieldGet(this, _LockingScriptData_lockingTimeLock, "f") == 0 || __classPrivateFieldGet(this, _LockingScriptData_lockingTimeLock, "f") > 65535) { + return false; + } + // check that maximum value for unbonding time is not greater than uint16 and above 0 + if (__classPrivateFieldGet(this, _LockingScriptData_unbondingTimeLock, "f") == 0 || __classPrivateFieldGet(this, _LockingScriptData_unbondingTimeLock, "f") > 65535) { return false; } return true; @@ -92,7 +120,7 @@ class LockingScriptData { */ buildTimelockScript(timelock) { return bitcoinjs_lib_1.script.compile([ - __classPrivateFieldGet(this, _LockingScriptData_lockrKey, "f"), + __classPrivateFieldGet(this, _LockingScriptData_lockerKey, "f"), bitcoinjs_lib_1.opcodes.OP_CHECKSIGVERIFY, bitcoinjs_lib_1.script.number.encode(timelock), bitcoinjs_lib_1.opcodes.OP_CHECKSEQUENCEVERIFY @@ -102,7 +130,7 @@ class LockingScriptData { * Builds the locking timelock script. * Only holder of private key for given pubKey can spend after relative lock time * Creates the timelock script in the form: - * + * * OP_CHECKSIGVERIFY * * OP_CHECKSEQUENCEVERIFY @@ -114,7 +142,7 @@ class LockingScriptData { /** * Builds the unbonding timelock script. * Creates the unbonding timelock script in the form: - * + * * OP_CHECKSIGVERIFY * * OP_CHECKSEQUENCEVERIFY @@ -125,30 +153,31 @@ class LockingScriptData { } /** * Builds the unbonding script in the form: - * buildSingleKeyScript(lockrPk, true) || + * buildSingleKeyScript(lockerPk, true) || * buildMultiKeyScript(covenantPks, covenantThreshold, false) * || means combining the scripts * @return {Buffer} The unbonding script. */ buildUnbondingScript() { return Buffer.concat([ - __classPrivateFieldGet(this, _LockingScriptData_instances, "m", _LockingScriptData_buildSingleKeyScript).call(this, __classPrivateFieldGet(this, _LockingScriptData_lockrKey, "f"), true), + __classPrivateFieldGet(this, _LockingScriptData_instances, "m", _LockingScriptData_buildSingleKeyScript).call(this, __classPrivateFieldGet(this, _LockingScriptData_lockerKey, "f"), true), __classPrivateFieldGet(this, _LockingScriptData_instances, "m", _LockingScriptData_buildMultiKeyScript).call(this, __classPrivateFieldGet(this, _LockingScriptData_covenantKeys, "f"), __classPrivateFieldGet(this, _LockingScriptData_covenantThreshold, "f"), false) ]); } /** * Builds the slashing script for locking in the form: - * buildSingleKeyScript(lockrPk, true) || + * buildSingleKeyScript(lockerPk, true) || * buildMultiKeyScript(covenantPks, covenantThreshold, false) * || means combining the scripts * The slashing script is a combination of single-key and multi-key scripts. - * The single-key script is used for lockr key verification. + * The single-key script is used for locker key verification. * The multi-key script is used for covenant key verification. * @return {Buffer} The slashing script as a Buffer. */ buildSlashingScript() { return Buffer.concat([ - __classPrivateFieldGet(this, _LockingScriptData_instances, "m", _LockingScriptData_buildSingleKeyScript).call(this, __classPrivateFieldGet(this, _LockingScriptData_lockrKey, "f"), true), + __classPrivateFieldGet(this, _LockingScriptData_instances, "m", _LockingScriptData_buildSingleKeyScript).call(this, __classPrivateFieldGet(this, _LockingScriptData_lockerKey, "f"), true), + __classPrivateFieldGet(this, _LockingScriptData_instances, "m", _LockingScriptData_buildMultiKeyScript).call(this, __classPrivateFieldGet(this, _LockingScriptData_operatorKeys, "f"), 1, true), __classPrivateFieldGet(this, _LockingScriptData_instances, "m", _LockingScriptData_buildMultiKeyScript).call(this, __classPrivateFieldGet(this, _LockingScriptData_covenantKeys, "f"), __classPrivateFieldGet(this, _LockingScriptData_covenantThreshold, "f"), // No need to add verify since covenants are at the end of the script false) @@ -158,7 +187,7 @@ class LockingScriptData { * Builds a data script for locking in the form: * OP_RETURN || * where serializedLockingData is the concatenation of: - * MagicBytes || Version || LockrPublicKey || LockingTimeLock + * MagicBytes || Version || lockerPublicKey || LockingTimeLock * @return {Buffer} The compiled provably note script. */ buildProvablyNoteScript() { @@ -172,7 +201,8 @@ class LockingScriptData { const serializedLockingData = Buffer.concat([ __classPrivateFieldGet(this, _LockingScriptData_magicBytes, "f"), version, - __classPrivateFieldGet(this, _LockingScriptData_lockrKey, "f"), + __classPrivateFieldGet(this, _LockingScriptData_lockerKey, "f"), + __classPrivateFieldGet(this, _LockingScriptData_operatorKeys, "f")[0], lockingTimeLock ]); return bitcoinjs_lib_1.script.compile([bitcoinjs_lib_1.opcodes.OP_RETURN, serializedLockingData]); @@ -192,7 +222,7 @@ class LockingScriptData { } } exports.LockingScriptData = LockingScriptData; -_LockingScriptData_lockrKey = new WeakMap(), _LockingScriptData_covenantKeys = new WeakMap(), _LockingScriptData_covenantThreshold = new WeakMap(), _LockingScriptData_lockingTimeLock = new WeakMap(), _LockingScriptData_unbondingTimeLock = new WeakMap(), _LockingScriptData_magicBytes = new WeakMap(), _LockingScriptData_instances = new WeakSet(), _LockingScriptData_buildSingleKeyScript = function _LockingScriptData_buildSingleKeyScript(pk, withVerify) { +_LockingScriptData_lockerKey = new WeakMap(), _LockingScriptData_operatorKeys = new WeakMap(), _LockingScriptData_covenantKeys = new WeakMap(), _LockingScriptData_covenantThreshold = new WeakMap(), _LockingScriptData_lockingTimeLock = new WeakMap(), _LockingScriptData_unbondingTimeLock = new WeakMap(), _LockingScriptData_magicBytes = new WeakMap(), _LockingScriptData_instances = new WeakSet(), _LockingScriptData_buildSingleKeyScript = function _LockingScriptData_buildSingleKeyScript(pk, withVerify) { // Check public key length if (pk.length != exports.PK_LENGTH) { throw new Error("Invalid key length"); diff --git a/lib/tsconfig.tsbuildinfo b/lib/tsconfig.tsbuildinfo index c5216b1..ecc4d94 100644 --- a/lib/tsconfig.tsbuildinfo +++ b/lib/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/typescript/lib/lib.es2020.full.d.ts","../src/constants/index.ts","../src/constants/internalpubkey.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/bitcoinjs-lib/src/networks.d.ts","../node_modules/bitcoinjs-lib/src/address.d.ts","../node_modules/bitcoinjs-lib/src/crypto.d.ts","../node_modules/bitcoinjs-lib/src/types.d.ts","../node_modules/bitcoinjs-lib/src/payments/embed.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2ms.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2pk.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2pkh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2sh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2wpkh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2wsh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2tr.d.ts","../node_modules/bitcoinjs-lib/src/payments/index.d.ts","../node_modules/bitcoinjs-lib/src/ops.d.ts","../node_modules/bitcoinjs-lib/src/script_number.d.ts","../node_modules/bitcoinjs-lib/src/script_signature.d.ts","../node_modules/bitcoinjs-lib/src/script.d.ts","../node_modules/bitcoinjs-lib/src/transaction.d.ts","../node_modules/bitcoinjs-lib/src/block.d.ts","../node_modules/bip174/src/lib/interfaces.d.ts","../node_modules/bip174/src/lib/psbt.d.ts","../node_modules/bitcoinjs-lib/src/psbt.d.ts","../node_modules/bitcoinjs-lib/src/ecc_lib.d.ts","../node_modules/bitcoinjs-lib/src/index.d.ts","../src/covenantv1/bridge.script.ts","../node_modules/@bitcoin-js/tiny-secp256k1-asmjs/lib/index.d.ts","../src/utils/curve.ts","../src/types/utxo.ts","../src/utils/fee.ts","../src/covenantv1/bridge.ts","../src/covenantv1/locking.script.ts","../src/types/transaction.ts","../src/covenantv1/locking.ts","../src/types/bridgescripts.ts","../src/slashable/bridge/script.ts","../src/slashable/bridge/index.ts","../src/types/lockingscripts.ts","../src/slashable/locking/script.ts","../src/slashable/locking/index.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/proxyquire/index.d.ts","../node_modules/@types/randombytes/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"76f838d5d49b65de83bc345c04aa54c62a3cfdb72a477dc0c0fce89a30596c30","affectsGlobalScope":true},{"version":"73e370058f82add1fdbc78ef3d1aab110108f2d5d9c857cb55d3361982347ace","affectsGlobalScope":true},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"1305d1e76ca44e30fb8b2b8075fa522b83f60c0bcf5d4326a9d2cf79b53724f8",{"version":"03868894909bb5446b4b8dc72a852b17d9a98ca5a6f4aa97715040d2a29a905f","signature":"3c702a81b290b63c22b0ccd1c49bcc060b2766d74c135e2590f2be8c6f619dff"},{"version":"434be5472d3b0ea8b51641e4c99d755f4bf7659a0992c3d766eb31e1ce615b89","signature":"4f3826bce947ee1e841e28e28ddc6e0336a2773f191ac456f9ed0866cb3cb593"},"2db0dd3aaa2ed285950273ce96ae8a450b45423aa9da2d10e194570f1233fa6b","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"e7be367719c613d580d4b27fdf8fe64c9736f48217f4b322c0d63b2971460918","affectsGlobalScope":true},"3d77c73be94570813f8cadd1f05ebc3dc5e2e4fdefe4d340ca20cd018724ee36",{"version":"dd78bfe9dfcadb2c4cd3a3a36df38fb3ef8ed2c601b57f6ad9a29e38a17ff39c","affectsGlobalScope":true},"62f1c00d3d246e0e3cf0224f91e122d560428ec1ccc36bb51d4574a84f1dbad0","53f0960fdcc53d097918adfd8861ffbe0db989c56ffc16c052197bf115da5ed6",{"version":"662163e5327f260b23ca0a1a1ad8a74078aabb587c904fcb5ef518986987eaff","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"f85c06e750743acf31f0cfd3be284a364d469761649e29547d0dd6be48875150","affectsGlobalScope":true},"b0c0d1d13be149f790a75b381b413490f98558649428bb916fd2d71a3f47a134","3c884d9d9ec454bdf0d5a0b8465bf8297d2caa4d853851d92cc417ac6f30b969","0364f8bb461d6e84252412d4e5590feda4eb582f77d47f7a024a7a9ff105dfdc","5433f7f77cd1fd53f45bd82445a4e437b2f6a72a32070e907530a4fea56c30c8","d0ca5d7df114035258a9d01165be309371fcccf0cccd9d57b1453204686d1ed0",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"9a30b7fefd7f8abbca4828d481c61c18e40fe5ff107e113b1c1fcd2c8dcf2743","affectsGlobalScope":true},"173b6275a81ebdb283b180654890f46516c21199734fed01a773b1c168b8c45c","304f66274aa8119e8d65a49b1cff84cbf803def6afe1b2cc987386e9a9890e22","1b9adafe8a7fefaeaf9099a0e06f602903f6268438147b843a33a5233ac71745","98273274f2dbb79b0b2009b20f74eca4a7146a3447c912d580cd5d2d94a7ae30","c933f7ba4b201c98b14275fd11a14abb950178afd2074703250fe3654fc10cd2","2eaa31492906bc8525aff3c3ec2236e22d90b0dfeee77089f196cd0adf0b3e3b",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"8f5814f29dbaf8bacd1764aebdf1c8a6eb86381f6a188ddbac0fcbaab855ce52","a63d03de72adfb91777784015bd3b4125abd2f5ef867fc5a13920b5649e8f52b","d20e003f3d518a7c1f749dbe27c6ab5e3be7b3c905a48361b04a9557de4a6900",{"version":"1d4d78c8b23c9ddaaaa49485e6adc2ec01086dfe5d8d4d36ca4cdc98d2f7e74a","affectsGlobalScope":true},{"version":"44fc16356b81c0463cc7d7b2b35dcf324d8144136f5bc5ce73ced86f2b3475b5","affectsGlobalScope":true},"575fb200043b11b464db8e42cc64379c5fd322b6d787638e005b5ee98a64486d","6de2f225d942562733e231a695534b30039bdf1875b377bb7255881f0df8ede8","56249fd3ef1f6b90888e606f4ea648c43978ef43a7263aafad64f8d83cd3b8aa","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","7b166975fdbd3b37afb64707b98bca88e46577bbc6c59871f9383a7df2daacd1","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","81505c54d7cad0009352eaa21bd923ab7cdee7ec3405357a54d9a5da033a2084","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","3c1f19c7abcda6b3a4cf9438a15c7307a080bd3b51dfd56b198d9f86baf19447","2ee1645e0df9d84467cfe1d67b0ad3003c2f387de55874d565094464ee6f2927",{"version":"257ff9424de2bf36ba29f928e268cf6075fb7a0c2acd339c9ad7ac64653081d2","affectsGlobalScope":true},{"version":"9cf780e96b687e4bdfd1907ed26a688c18b89797490a00598fa8b8ab683335dd","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","9ae88ce9f73446c24b2d2452e993b676da1b31fca5ceb7276e7f36279f693ed1","e49d7625faff2a7842e4e7b9b197f972633fca685afcf6b4403400c97d087c36","b82c38abc53922b1b3670c3af6f333c21b735722a8f156e7d357a2da7c53a0a0",{"version":"b423f53647708043299ded4daa68d95c967a2ac30aa1437adc4442129d7d0a6c","affectsGlobalScope":true},{"version":"7245af181218216bacb01fbdf51095617a51661f20d77178c69a377e16fb69ed","affectsGlobalScope":true},"4f0fc7b7f54422bd97cfaf558ddb4bca86893839367b746a8f86b60ac7619673","4cdd8b6b51599180a387cc7c1c50f49eca5ce06595d781638fd0216520d98246","d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c",{"version":"8704423bf338bff381ebc951ed819935d0252d90cd6de7dffe5b0a5debb65d07","affectsGlobalScope":true},"7c6929fd7cbf38499b6a600b91c3b603d1d78395046dc3499b2b92d01418b94b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","692cce8a36696e9df80910c05ae3b34340c278bbba03701a9ae92ae038663824","035fd4564409153531cc683821b48048fd01982a8522c120b5a17f9a6320a229","8e30c31e1f95057c95fad8af9d7cfa916d09a9ae5f805ccd1ebd76c0158c5021","b86e99a2002acb78c3c5edfc219053cad18c2e0086d848d50086be8198e81c3b","a29a7b9ade7876d0f527b716a5bc5c7bc84554d155577020441f2d3c735589be","9cd42ff83837551961fa8788f14bd3498306fb2c1d35358f2b6bf3af05bf0890","5e51773d5624b8c871d8d140c88f944466338673fbc60ac4bf409eb60e6665cf","39b10cd95b70bbdc1cf8c832002618c3f81cd980438fe5e3694d99286ef90911","95244212208717085038a74378ea2a03e49c06a3a195b2826c01c978f14684c2","7362eeca79ce50eb72b2a0149e323f6d64daf4fbc8067592310859622c3dbcfe","8c0a305a7b10513d9d07bf739456bf9845bd4336027c85442b674a417facb57a","c91084ba90468037b6d266f3cae698aaa76c0864cf076aa099d981d847b74c2d","08c89f85121be91dd79dc42e1fdb0eef4336dd4f7c23710d05268accf1a65220","0f3fa7383d3f2ebed173ff59c102b4a68d10acdff5db4a009b73429ddaa15768","973d36af083ce019e3c38b99ca43cb6815b47082cf1e07215387df336192f447","617012176a8cb5be290ae89040aac88ec74321c2a8b984f01a7ba6eb9a2eddc2","111dae916025fd483a9be521111a10c3e7e9ed35eeb325ba34108433cc07aa19","fc2aced12725e81bbdb9e55a0efe1060cd4b6bbb6d1a5a23a09236a18c2d2323","7340d9ad1f3f55e7be3a85a151ef25d7a8c0205904519940c9dcea0f61cb3292","b6c3995be1adb84b6f81cbf9dfdecaa0da5cc71c5a61b5fc0e4a5a31765d8257","3da723823982206178406b7c2b8570152c6347a047fa7e59fa46011d10ac26b6","faba33b564a39dcb577490c3db303e692b745453fc50adb57860e8014e3247a2","72b83ee0bee9e2bec77a2a1666c6933da383075af254348e4c72e7e0b69e16dd","ad50fd05c6869671a429ce6581c052720d067f79d59a8eada7bc3a17e323728a",{"version":"d8e49a63709ef948b85b2fc4ef85036eb1d5cf1d9ef0cbb439e61361cd61bde2","signature":"3d6daf1616394fcb1c7f3bed4c926102e3241ff32a5725611f960f288a35fe6d"},"21a651efde14f50b4d04c5a746b113b981f4a45c7113d7ab9fbdaecc4972d086",{"version":"d013c139a57532b59f951139b366efcad0ecc2b4a453796fa98cf375b338f753","signature":"0e5aecb6ef4d46ebed19b1b922e5b23a0b692c3f2359680e7f7518175f767f93"},{"version":"f34abd5553d8c365d93aed0651cc981ddc0e0e1611ff05c1d89a867d7236c307","signature":"52a66eb1d5e73e47e3d9b1acfa0fcce6c4282778f663a5b8b7c9f41e54387209"},{"version":"02b4bbce3e7a0a2f1ea1ff9437affbfd8836a9bb0a33983fdd4f8313ceee4aa2","signature":"b2f7feec3cc6cc320902d83120b88bc752bd1ccc92f76f79a2682901ed3fd7db"},{"version":"13fe869348111d1eb282c8d915b86dbbd70497711b1202f8ed9238718a4fe4ce","signature":"a0884e56156f17657548118f82973e3b76e8924ba602b111bcc6a9789b73f8c9"},{"version":"1c4dfdd5e2310b94a879eca506eb3468d889af3c3aaae019887c12344ee0f5b7","signature":"6c49776a71d97482f261fcb360512c790df4e6b0d8ad0482f651749370ad0c7a"},{"version":"f9544ee84d3ac193e80b75855889c54d657a781fa9ebc801e386f3623eef10ba","signature":"248123c911541fa29511934adaf30f9454709fa05e58a9ccfe210e29016a6a89"},{"version":"fb3ad803290649e50fc5f6093b067d29f28892fb0f2bd27afed36f2ca82d6e30","signature":"1c642414df79d205bd338e6f67a97cd00173b286690706de8bfba2ac11c9d87e"},{"version":"689ddd17483acc4c9be2f747b1f9752b36e0131b7f1a78d3973d7b7fca89d349","signature":"804219ecfcecefc7e55b65668d1db90469d602c12d2f6a93bf12af09e9d99186"},{"version":"6cff0be2aca0da7d6151d7b66455b9f8ba20fffaa25263045f58651d8e5f0f40","signature":"1cf078786d3fe9892f7294a317c772629a4b82e047c8be07da300649331f8015"},{"version":"e27bd7d65df0ae085fea6dcac6e891e262b31db4aaaa1550cadd1a12e84dfc97","signature":"c326804e27ef08801b745b519463f27a3fa29fc8e5f356958dce8d7d1655b734"},{"version":"d1804fef95c5293d961ffa01f1b258200fb6005fb2d94a1d22de2332a671ba9c","signature":"0e7cf93d1698f623faa32dc9e141749e5c6c7e732f2211568a66a4969c05a397"},{"version":"27f1f53415f37bf7312cad017da805610ebb9311b84cfc645bbfbbe50377dffc","signature":"3cc294e615183f41530c42a238455afebf1fdfb7f29cec6d9bab344b90a152a3"},{"version":"581b8b3600ac072887bb5ba9d14e78998d684761d2807052744fa47d7b748a14","signature":"fd22d68f6e25991013258dcb97254d99137718906623d03ed8f8a895efe81cea"},"9bc7900e5ecd93822053b8b42ac890c871eee76c7b6cbd2c2561dc1db95f7d0a","2c8e55457aaf4902941dfdba4061935922e8ee6e120539c9801cd7b400fae050","5f02abbb1b17e3d1e68c5eea14adf4705696e6255e2982b010c0dc2a5417b606","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","9e0cf651e8e2c5b9bebbabdff2f7c6f8cedd91b1d9afcc0a854cdff053a88f1b","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec",{"version":"5ab630d466ac55baa6d32820378098404fc18ba9da6f7bc5df30c5dbb1cffae8","affectsGlobalScope":true},"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1",{"version":"c4c03cf65951d980ba618ae9601d10438730803fc9c8a1f7b34af8739981e205","affectsGlobalScope":true},"77a4c95042137c0b62a10cb76938bda409cd13f94c55a76af80949b353ebc8ab","cc6bdeb756593c9c914204f158057b328ed53c898f176a0706a8dafcc108b49e","cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","5d30d04a14ed8527ac5d654dc345a4db11b593334c11a65efb6e4facc5484a0e"],"root":[52,53,165,[167,179]],"options":{"allowJs":true,"declaration":true,"esModuleInterop":true,"jsx":1,"module":1,"outDir":"./","skipLibCheck":true,"strict":true,"target":7},"fileIdsList":[[180],[192],[180,181,182,183,184],[180,182],[103,140],[187],[188],[194,197],[54],[89],[90,95,124],[91,96,102,103,110,121,132],[91,92,102,110],[93,133],[94,95,103,111],[95,121,129],[96,98,102,110],[89,97],[98,99],[102],[100,102],[89,102],[102,103,104,121,132],[102,103,104,117,121,124],[87,90,137],[98,102,105,110,121,132],[102,103,105,106,110,121,129,132],[105,107,121,129,132],[54,55,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[102,108],[109,132,137],[98,102,110,121],[111],[112],[89,113],[110,111,114,131,137],[115],[116],[102,117,118],[117,119,133,135],[90,102,121,122,123,124],[90,121,123],[121,122],[124],[125],[121],[102,127,128],[127,128],[95,110,121,129],[130],[110,131],[90,105,116,132],[95,133],[121,134],[109,135],[136],[90,95,102,104,113,121,132,135,137],[121,138],[95,140],[203,242],[203,227,242],[242],[203],[203,228,242],[203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241],[228,242],[244],[140],[140,160],[140,141],[140,158],[144],[141,142,143,153,154,157,158,159,162,163],[153],[140,141,144,145,146,147,148,149,150,151,152],[140,141,158,160,161],[140,153,154,155,156],[190,196],[194],[191,195],[193],[64,68,132],[64,121,132],[59],[61,64,129,132],[110,129],[59,140],[61,64,110,132],[56,57,60,63,90,102,121,132],[56,62],[60,64,90,124,132,140],[90,140],[80,90,140],[58,59,140],[64],[58,59,60,61,62,63,64,65,66,68,69,70,71,72,73,74,75,76,77,78,79,81,82,83,84,85,86],[64,71,72],[62,64,72,73],[63],[56,59,64],[64,68,72,73],[68],[62,64,67,132],[56,61,62,64,68,71],[90,121],[59,64,80,90,137,140],[52,164],[164,165,167,168,169],[164,167,168,169,171,172],[53,144,164,167,168,169,172,175],[164,174],[53,144,164,167,168,169,172,177,178],[164,177],[164],[164,166],[168],[164,165,167,168],[164,167,168,171,172],[164,167,168,172,175],[174],[164,167,168,172,177,178],[177]],"referencedMap":[[182,1],[193,2],[185,3],[181,1],[183,4],[184,1],[186,5],[188,6],[189,7],[198,8],[54,9],[55,9],[89,10],[90,11],[91,12],[92,13],[93,14],[94,15],[95,16],[96,17],[97,18],[98,19],[99,19],[101,20],[100,21],[102,22],[103,23],[104,24],[88,25],[105,26],[106,27],[107,28],[140,29],[108,30],[109,31],[110,32],[111,33],[112,34],[113,35],[114,36],[115,37],[116,38],[117,39],[118,39],[119,40],[121,41],[123,42],[122,43],[124,44],[125,45],[126,46],[127,47],[128,48],[129,49],[130,50],[131,51],[132,52],[133,53],[134,54],[135,55],[136,56],[137,57],[138,58],[202,59],[227,60],[228,61],[203,62],[206,62],[225,60],[226,60],[216,60],[215,63],[213,60],[208,60],[221,60],[219,60],[223,60],[207,60],[220,60],[224,60],[209,60],[210,60],[222,60],[204,60],[211,60],[212,60],[214,60],[218,60],[229,64],[217,60],[205,60],[242,65],[236,64],[238,66],[237,64],[230,64],[231,64],[233,64],[235,64],[239,66],[240,66],[232,66],[234,66],[245,67],[160,68],[161,69],[142,70],[159,71],[143,68],[163,72],[164,73],[145,74],[153,75],[146,74],[147,74],[148,74],[149,74],[152,74],[150,74],[151,74],[162,76],[157,77],[155,68],[156,68],[158,68],[144,68],[197,78],[195,79],[196,80],[194,81],[71,82],[78,83],[70,82],[85,84],[62,85],[61,86],[84,68],[79,87],[82,88],[64,89],[63,90],[59,91],[58,92],[81,93],[60,94],[65,95],[69,95],[87,96],[86,95],[73,97],[74,98],[76,99],[72,100],[75,101],[80,68],[67,102],[68,103],[77,104],[57,105],[83,106],[165,107],[170,108],[171,107],[173,109],[176,110],[175,111],[179,112],[178,113],[172,114],[167,115],[169,116]],"exportedModulesMap":[[182,1],[193,2],[185,3],[181,1],[183,4],[184,1],[186,5],[188,6],[189,7],[198,8],[54,9],[55,9],[89,10],[90,11],[91,12],[92,13],[93,14],[94,15],[95,16],[96,17],[97,18],[98,19],[99,19],[101,20],[100,21],[102,22],[103,23],[104,24],[88,25],[105,26],[106,27],[107,28],[140,29],[108,30],[109,31],[110,32],[111,33],[112,34],[113,35],[114,36],[115,37],[116,38],[117,39],[118,39],[119,40],[121,41],[123,42],[122,43],[124,44],[125,45],[126,46],[127,47],[128,48],[129,49],[130,50],[131,51],[132,52],[133,53],[134,54],[135,55],[136,56],[137,57],[138,58],[202,59],[227,60],[228,61],[203,62],[206,62],[225,60],[226,60],[216,60],[215,63],[213,60],[208,60],[221,60],[219,60],[223,60],[207,60],[220,60],[224,60],[209,60],[210,60],[222,60],[204,60],[211,60],[212,60],[214,60],[218,60],[229,64],[217,60],[205,60],[242,65],[236,64],[238,66],[237,64],[230,64],[231,64],[233,64],[235,64],[239,66],[240,66],[232,66],[234,66],[245,67],[160,68],[161,69],[142,70],[159,71],[143,68],[163,72],[164,73],[145,74],[153,75],[146,74],[147,74],[148,74],[149,74],[152,74],[150,74],[151,74],[162,76],[157,77],[155,68],[156,68],[158,68],[144,68],[197,78],[195,79],[196,80],[194,81],[71,82],[78,83],[70,82],[85,84],[62,85],[61,86],[84,68],[79,87],[82,88],[64,89],[63,90],[59,91],[58,92],[81,93],[60,94],[65,95],[69,95],[87,96],[86,95],[73,97],[74,98],[76,99],[72,100],[75,101],[80,68],[67,102],[68,103],[77,104],[57,105],[83,106],[170,117],[173,118],[176,119],[175,120],[179,121],[178,122],[172,114],[169,116]],"semanticDiagnosticsPerFile":[182,180,166,190,193,192,185,181,183,184,186,187,188,189,198,199,200,54,55,89,90,91,92,93,94,95,96,97,98,99,101,100,102,103,104,88,139,105,106,107,140,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,201,202,227,228,203,206,225,226,216,215,213,208,221,219,223,207,220,224,209,210,222,204,211,212,214,218,229,217,205,242,241,236,238,237,230,231,233,235,239,240,232,234,243,244,245,160,161,142,159,143,163,164,141,154,145,153,146,147,148,149,152,150,151,162,157,155,156,158,144,191,197,195,196,194,49,50,10,8,9,14,13,2,15,16,17,18,19,20,21,22,3,23,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,51,46,47,42,43,44,45,1,48,12,11,71,78,70,85,62,61,84,79,82,64,63,59,58,81,60,65,66,69,56,87,86,73,74,76,72,75,80,67,68,77,57,83,52,53,165,170,171,173,176,175,179,178,174,177,172,168,167,169]},"version":"5.4.5"} \ No newline at end of file +{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/typescript/lib/lib.es2020.full.d.ts","../src/constants/index.ts","../src/constants/internalpubkey.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/bitcoinjs-lib/src/networks.d.ts","../node_modules/bitcoinjs-lib/src/address.d.ts","../node_modules/bitcoinjs-lib/src/crypto.d.ts","../node_modules/bitcoinjs-lib/src/types.d.ts","../node_modules/bitcoinjs-lib/src/payments/embed.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2ms.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2pk.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2pkh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2sh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2wpkh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2wsh.d.ts","../node_modules/bitcoinjs-lib/src/payments/p2tr.d.ts","../node_modules/bitcoinjs-lib/src/payments/index.d.ts","../node_modules/bitcoinjs-lib/src/ops.d.ts","../node_modules/bitcoinjs-lib/src/script_number.d.ts","../node_modules/bitcoinjs-lib/src/script_signature.d.ts","../node_modules/bitcoinjs-lib/src/script.d.ts","../node_modules/bitcoinjs-lib/src/transaction.d.ts","../node_modules/bitcoinjs-lib/src/block.d.ts","../node_modules/bip174/src/lib/interfaces.d.ts","../node_modules/bip174/src/lib/psbt.d.ts","../node_modules/bitcoinjs-lib/src/psbt.d.ts","../node_modules/bitcoinjs-lib/src/ecc_lib.d.ts","../node_modules/bitcoinjs-lib/src/index.d.ts","../src/covenantv1/bridge.script.ts","../node_modules/@bitcoin-js/tiny-secp256k1-asmjs/lib/index.d.ts","../src/utils/curve.ts","../src/types/utxo.ts","../src/utils/fee.ts","../src/utils/scriptutils.ts","../src/covenantv1/bridge.ts","../src/covenantv1/locking.script.ts","../src/types/transaction.ts","../src/covenantv1/locking.ts","../src/types/bridgescripts.ts","../src/slashable/bridge/script.ts","../src/slashable/bridge/index.ts","../src/types/lockingscripts.ts","../src/slashable/locking/script.ts","../src/slashable/locking/index.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/typebox.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/mocha/index.d.ts","../node_modules/@types/proxyquire/index.d.ts","../node_modules/@types/randombytes/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"76f838d5d49b65de83bc345c04aa54c62a3cfdb72a477dc0c0fce89a30596c30","affectsGlobalScope":true},{"version":"73e370058f82add1fdbc78ef3d1aab110108f2d5d9c857cb55d3361982347ace","affectsGlobalScope":true},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"1305d1e76ca44e30fb8b2b8075fa522b83f60c0bcf5d4326a9d2cf79b53724f8",{"version":"03868894909bb5446b4b8dc72a852b17d9a98ca5a6f4aa97715040d2a29a905f","signature":"3c702a81b290b63c22b0ccd1c49bcc060b2766d74c135e2590f2be8c6f619dff"},{"version":"3dab9f49d7541c5c6c3122bc8c6e5874f939a27b832bfb1611f6eeed41a06167","signature":"4f3826bce947ee1e841e28e28ddc6e0336a2773f191ac456f9ed0866cb3cb593"},"2db0dd3aaa2ed285950273ce96ae8a450b45423aa9da2d10e194570f1233fa6b","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"e7be367719c613d580d4b27fdf8fe64c9736f48217f4b322c0d63b2971460918","affectsGlobalScope":true},"3d77c73be94570813f8cadd1f05ebc3dc5e2e4fdefe4d340ca20cd018724ee36",{"version":"392eadc2af403dd10b4debfbc655c089a7fa6a9750caeb770cfb30051e55e848","affectsGlobalScope":true},"62f1c00d3d246e0e3cf0224f91e122d560428ec1ccc36bb51d4574a84f1dbad0","53f0960fdcc53d097918adfd8861ffbe0db989c56ffc16c052197bf115da5ed6",{"version":"662163e5327f260b23ca0a1a1ad8a74078aabb587c904fcb5ef518986987eaff","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"f85c06e750743acf31f0cfd3be284a364d469761649e29547d0dd6be48875150","affectsGlobalScope":true},"b0c0d1d13be149f790a75b381b413490f98558649428bb916fd2d71a3f47a134","3c884d9d9ec454bdf0d5a0b8465bf8297d2caa4d853851d92cc417ac6f30b969","0364f8bb461d6e84252412d4e5590feda4eb582f77d47f7a024a7a9ff105dfdc","5433f7f77cd1fd53f45bd82445a4e437b2f6a72a32070e907530a4fea56c30c8","d0ca5d7df114035258a9d01165be309371fcccf0cccd9d57b1453204686d1ed0",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"9a30b7fefd7f8abbca4828d481c61c18e40fe5ff107e113b1c1fcd2c8dcf2743","affectsGlobalScope":true},"173b6275a81ebdb283b180654890f46516c21199734fed01a773b1c168b8c45c","304f66274aa8119e8d65a49b1cff84cbf803def6afe1b2cc987386e9a9890e22","1b9adafe8a7fefaeaf9099a0e06f602903f6268438147b843a33a5233ac71745","98273274f2dbb79b0b2009b20f74eca4a7146a3447c912d580cd5d2d94a7ae30","c933f7ba4b201c98b14275fd11a14abb950178afd2074703250fe3654fc10cd2","2eaa31492906bc8525aff3c3ec2236e22d90b0dfeee77089f196cd0adf0b3e3b",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"8f5814f29dbaf8bacd1764aebdf1c8a6eb86381f6a188ddbac0fcbaab855ce52","a63d03de72adfb91777784015bd3b4125abd2f5ef867fc5a13920b5649e8f52b","d20e003f3d518a7c1f749dbe27c6ab5e3be7b3c905a48361b04a9557de4a6900",{"version":"1d4d78c8b23c9ddaaaa49485e6adc2ec01086dfe5d8d4d36ca4cdc98d2f7e74a","affectsGlobalScope":true},{"version":"44fc16356b81c0463cc7d7b2b35dcf324d8144136f5bc5ce73ced86f2b3475b5","affectsGlobalScope":true},"575fb200043b11b464db8e42cc64379c5fd322b6d787638e005b5ee98a64486d","6de2f225d942562733e231a695534b30039bdf1875b377bb7255881f0df8ede8","56249fd3ef1f6b90888e606f4ea648c43978ef43a7263aafad64f8d83cd3b8aa","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","7b166975fdbd3b37afb64707b98bca88e46577bbc6c59871f9383a7df2daacd1","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","81505c54d7cad0009352eaa21bd923ab7cdee7ec3405357a54d9a5da033a2084","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","3c1f19c7abcda6b3a4cf9438a15c7307a080bd3b51dfd56b198d9f86baf19447","2ee1645e0df9d84467cfe1d67b0ad3003c2f387de55874d565094464ee6f2927",{"version":"7da97d603bf3dd0000f56467c56cb6efaf5f94692980474925fae6c33412b12a","affectsGlobalScope":true},{"version":"9cf780e96b687e4bdfd1907ed26a688c18b89797490a00598fa8b8ab683335dd","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","9ae88ce9f73446c24b2d2452e993b676da1b31fca5ceb7276e7f36279f693ed1","e49d7625faff2a7842e4e7b9b197f972633fca685afcf6b4403400c97d087c36","b82c38abc53922b1b3670c3af6f333c21b735722a8f156e7d357a2da7c53a0a0",{"version":"b423f53647708043299ded4daa68d95c967a2ac30aa1437adc4442129d7d0a6c","affectsGlobalScope":true},{"version":"7245af181218216bacb01fbdf51095617a51661f20d77178c69a377e16fb69ed","affectsGlobalScope":true},"4f0fc7b7f54422bd97cfaf558ddb4bca86893839367b746a8f86b60ac7619673","4cdd8b6b51599180a387cc7c1c50f49eca5ce06595d781638fd0216520d98246","d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c",{"version":"8704423bf338bff381ebc951ed819935d0252d90cd6de7dffe5b0a5debb65d07","affectsGlobalScope":true},"7c6929fd7cbf38499b6a600b91c3b603d1d78395046dc3499b2b92d01418b94b",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","692cce8a36696e9df80910c05ae3b34340c278bbba03701a9ae92ae038663824","035fd4564409153531cc683821b48048fd01982a8522c120b5a17f9a6320a229","8e30c31e1f95057c95fad8af9d7cfa916d09a9ae5f805ccd1ebd76c0158c5021","b86e99a2002acb78c3c5edfc219053cad18c2e0086d848d50086be8198e81c3b","a29a7b9ade7876d0f527b716a5bc5c7bc84554d155577020441f2d3c735589be","9cd42ff83837551961fa8788f14bd3498306fb2c1d35358f2b6bf3af05bf0890","5e51773d5624b8c871d8d140c88f944466338673fbc60ac4bf409eb60e6665cf","39b10cd95b70bbdc1cf8c832002618c3f81cd980438fe5e3694d99286ef90911","95244212208717085038a74378ea2a03e49c06a3a195b2826c01c978f14684c2","7362eeca79ce50eb72b2a0149e323f6d64daf4fbc8067592310859622c3dbcfe","8c0a305a7b10513d9d07bf739456bf9845bd4336027c85442b674a417facb57a","c91084ba90468037b6d266f3cae698aaa76c0864cf076aa099d981d847b74c2d","08c89f85121be91dd79dc42e1fdb0eef4336dd4f7c23710d05268accf1a65220","0f3fa7383d3f2ebed173ff59c102b4a68d10acdff5db4a009b73429ddaa15768","973d36af083ce019e3c38b99ca43cb6815b47082cf1e07215387df336192f447","617012176a8cb5be290ae89040aac88ec74321c2a8b984f01a7ba6eb9a2eddc2","111dae916025fd483a9be521111a10c3e7e9ed35eeb325ba34108433cc07aa19","fc2aced12725e81bbdb9e55a0efe1060cd4b6bbb6d1a5a23a09236a18c2d2323","7340d9ad1f3f55e7be3a85a151ef25d7a8c0205904519940c9dcea0f61cb3292","b6c3995be1adb84b6f81cbf9dfdecaa0da5cc71c5a61b5fc0e4a5a31765d8257","3da723823982206178406b7c2b8570152c6347a047fa7e59fa46011d10ac26b6","faba33b564a39dcb577490c3db303e692b745453fc50adb57860e8014e3247a2","72b83ee0bee9e2bec77a2a1666c6933da383075af254348e4c72e7e0b69e16dd","ad50fd05c6869671a429ce6581c052720d067f79d59a8eada7bc3a17e323728a",{"version":"d8e49a63709ef948b85b2fc4ef85036eb1d5cf1d9ef0cbb439e61361cd61bde2","signature":"3d6daf1616394fcb1c7f3bed4c926102e3241ff32a5725611f960f288a35fe6d"},"21a651efde14f50b4d04c5a746b113b981f4a45c7113d7ab9fbdaecc4972d086",{"version":"d013c139a57532b59f951139b366efcad0ecc2b4a453796fa98cf375b338f753","signature":"0e5aecb6ef4d46ebed19b1b922e5b23a0b692c3f2359680e7f7518175f767f93"},{"version":"f34abd5553d8c365d93aed0651cc981ddc0e0e1611ff05c1d89a867d7236c307","signature":"52a66eb1d5e73e47e3d9b1acfa0fcce6c4282778f663a5b8b7c9f41e54387209"},{"version":"02b4bbce3e7a0a2f1ea1ff9437affbfd8836a9bb0a33983fdd4f8313ceee4aa2","signature":"b2f7feec3cc6cc320902d83120b88bc752bd1ccc92f76f79a2682901ed3fd7db"},{"version":"51da423b2eae029eebc753efebdc46e79807aa7a4bee0ff422a61f25ffebaf8a","signature":"01e629727590d5c61899915a9301ee6673e86b3f767b414fd9ee813f87c0411b"},{"version":"06e1dd440b045b9da312bb02b1dfd17057a5f19ed5d45dbc0f2a082a72257a32","signature":"a0884e56156f17657548118f82973e3b76e8924ba602b111bcc6a9789b73f8c9"},{"version":"1c4dfdd5e2310b94a879eca506eb3468d889af3c3aaae019887c12344ee0f5b7","signature":"6c49776a71d97482f261fcb360512c790df4e6b0d8ad0482f651749370ad0c7a"},{"version":"f9544ee84d3ac193e80b75855889c54d657a781fa9ebc801e386f3623eef10ba","signature":"248123c911541fa29511934adaf30f9454709fa05e58a9ccfe210e29016a6a89"},{"version":"fb3ad803290649e50fc5f6093b067d29f28892fb0f2bd27afed36f2ca82d6e30","signature":"1c642414df79d205bd338e6f67a97cd00173b286690706de8bfba2ac11c9d87e"},{"version":"689ddd17483acc4c9be2f747b1f9752b36e0131b7f1a78d3973d7b7fca89d349","signature":"804219ecfcecefc7e55b65668d1db90469d602c12d2f6a93bf12af09e9d99186"},{"version":"6cff0be2aca0da7d6151d7b66455b9f8ba20fffaa25263045f58651d8e5f0f40","signature":"1cf078786d3fe9892f7294a317c772629a4b82e047c8be07da300649331f8015"},{"version":"e27bd7d65df0ae085fea6dcac6e891e262b31db4aaaa1550cadd1a12e84dfc97","signature":"c326804e27ef08801b745b519463f27a3fa29fc8e5f356958dce8d7d1655b734"},{"version":"d1804fef95c5293d961ffa01f1b258200fb6005fb2d94a1d22de2332a671ba9c","signature":"0e7cf93d1698f623faa32dc9e141749e5c6c7e732f2211568a66a4969c05a397"},{"version":"d7a0a573da53ae9d80d30413ce050e49b387e2e7ba853c38633a378025d730a2","signature":"b2993e12c6912ea926c2f2666c2215e67d7966a31dad9c227d2050fdd1654f41"},{"version":"581b8b3600ac072887bb5ba9d14e78998d684761d2807052744fa47d7b748a14","signature":"fd22d68f6e25991013258dcb97254d99137718906623d03ed8f8a895efe81cea"},"1894294e2f0e275a6ca2c3d0af1fb45f629531bbf446f2946dc8c881583a5935","2c8e55457aaf4902941dfdba4061935922e8ee6e120539c9801cd7b400fae050","5f02abbb1b17e3d1e68c5eea14adf4705696e6255e2982b010c0dc2a5417b606","670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","9e0cf651e8e2c5b9bebbabdff2f7c6f8cedd91b1d9afcc0a854cdff053a88f1b","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec",{"version":"5ab630d466ac55baa6d32820378098404fc18ba9da6f7bc5df30c5dbb1cffae8","affectsGlobalScope":true},"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1",{"version":"c4c03cf65951d980ba618ae9601d10438730803fc9c8a1f7b34af8739981e205","affectsGlobalScope":true},"77a4c95042137c0b62a10cb76938bda409cd13f94c55a76af80949b353ebc8ab","cc6bdeb756593c9c914204f158057b328ed53c898f176a0706a8dafcc108b49e","cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","5d30d04a14ed8527ac5d654dc345a4db11b593334c11a65efb6e4facc5484a0e"],"root":[52,53,165,[167,180]],"options":{"allowJs":true,"declaration":true,"esModuleInterop":true,"jsx":1,"module":1,"outDir":"./","skipLibCheck":true,"strict":true,"target":7},"fileIdsList":[[181],[193],[181,182,183,184,185],[181,183],[103,140],[188],[189],[195,198],[54],[89],[90,95,124],[91,96,102,103,110,121,132],[91,92,102,110],[93,133],[94,95,103,111],[95,121,129],[96,98,102,110],[89,97],[98,99],[102],[100,102],[89,102],[102,103,104,121,132],[102,103,104,117,121,124],[87,90,137],[98,102,105,110,121,132],[102,103,105,106,110,121,129,132],[105,107,121,129,132],[54,55,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[102,108],[109,132,137],[98,102,110,121],[111],[112],[89,113],[110,111,114,131,137],[115],[116],[102,117,118],[117,119,133,135],[90,102,121,122,123,124],[90,121,123],[121,122],[124],[125],[89,121],[102,127,128],[127,128],[95,110,121,129],[130],[110,131],[90,105,116,132],[95,133],[121,134],[109,135],[136],[90,95,102,104,113,121,132,135,137],[121,138],[95,140],[204,243],[204,228,243],[243],[204],[204,229,243],[204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[229,243],[245],[140],[140,160],[140,141],[140,158],[144],[141,142,143,153,154,157,158,159,162,163],[153],[140,141,144,145,146,147,148,149,150,151,152],[140,141,158,160,161],[140,153,154,155,156],[191,197],[195],[192,196],[194],[64,68,132],[64,121,132],[59],[61,64,129,132],[110,129],[59,140],[61,64,110,132],[56,57,60,63,90,102,121,132],[56,62],[60,64,90,124,132,140],[90,140],[80,90,140],[58,59,140],[64],[58,59,60,61,62,63,64,65,66,68,69,70,71,72,73,74,75,76,77,78,79,81,82,83,84,85,86],[64,71,72],[62,64,72,73],[63],[56,59,64],[64,68,72,73],[68],[62,64,67,132],[56,61,62,64,68,71],[90,121],[59,64,80,90,137,140],[52,164],[164,165,167,168,169,170],[164,167,168,169,172,173],[53,144,164,167,168,169,173,176],[164,175],[53,144,164,167,168,169,173,178,179],[164,178],[164],[164,166],[168],[158,164],[164,165,167,168],[164,167,168,172,173],[164,167,168,173,176],[175],[164,167,168,173,178,179],[178],[158]],"referencedMap":[[183,1],[194,2],[186,3],[182,1],[184,4],[185,1],[187,5],[189,6],[190,7],[199,8],[54,9],[55,9],[89,10],[90,11],[91,12],[92,13],[93,14],[94,15],[95,16],[96,17],[97,18],[98,19],[99,19],[101,20],[100,21],[102,22],[103,23],[104,24],[88,25],[105,26],[106,27],[107,28],[140,29],[108,30],[109,31],[110,32],[111,33],[112,34],[113,35],[114,36],[115,37],[116,38],[117,39],[118,39],[119,40],[121,41],[123,42],[122,43],[124,44],[125,45],[126,46],[127,47],[128,48],[129,49],[130,50],[131,51],[132,52],[133,53],[134,54],[135,55],[136,56],[137,57],[138,58],[203,59],[228,60],[229,61],[204,62],[207,62],[226,60],[227,60],[217,60],[216,63],[214,60],[209,60],[222,60],[220,60],[224,60],[208,60],[221,60],[225,60],[210,60],[211,60],[223,60],[205,60],[212,60],[213,60],[215,60],[219,60],[230,64],[218,60],[206,60],[243,65],[237,64],[239,66],[238,64],[231,64],[232,64],[234,64],[236,64],[240,66],[241,66],[233,66],[235,66],[246,67],[160,68],[161,69],[142,70],[159,71],[143,68],[163,72],[164,73],[145,74],[153,75],[146,74],[147,74],[148,74],[149,74],[152,74],[150,74],[151,74],[162,76],[157,77],[155,68],[156,68],[158,68],[144,68],[198,78],[196,79],[197,80],[195,81],[71,82],[78,83],[70,82],[85,84],[62,85],[61,86],[84,68],[79,87],[82,88],[64,89],[63,90],[59,91],[58,92],[81,93],[60,94],[65,95],[69,95],[87,96],[86,95],[73,97],[74,98],[76,99],[72,100],[75,101],[80,68],[67,102],[68,103],[77,104],[57,105],[83,106],[165,107],[171,108],[172,107],[174,109],[177,110],[176,111],[180,112],[179,113],[173,114],[167,115],[169,116],[170,117]],"exportedModulesMap":[[183,1],[194,2],[186,3],[182,1],[184,4],[185,1],[187,5],[189,6],[190,7],[199,8],[54,9],[55,9],[89,10],[90,11],[91,12],[92,13],[93,14],[94,15],[95,16],[96,17],[97,18],[98,19],[99,19],[101,20],[100,21],[102,22],[103,23],[104,24],[88,25],[105,26],[106,27],[107,28],[140,29],[108,30],[109,31],[110,32],[111,33],[112,34],[113,35],[114,36],[115,37],[116,38],[117,39],[118,39],[119,40],[121,41],[123,42],[122,43],[124,44],[125,45],[126,46],[127,47],[128,48],[129,49],[130,50],[131,51],[132,52],[133,53],[134,54],[135,55],[136,56],[137,57],[138,58],[203,59],[228,60],[229,61],[204,62],[207,62],[226,60],[227,60],[217,60],[216,63],[214,60],[209,60],[222,60],[220,60],[224,60],[208,60],[221,60],[225,60],[210,60],[211,60],[223,60],[205,60],[212,60],[213,60],[215,60],[219,60],[230,64],[218,60],[206,60],[243,65],[237,64],[239,66],[238,64],[231,64],[232,64],[234,64],[236,64],[240,66],[241,66],[233,66],[235,66],[246,67],[160,68],[161,69],[142,70],[159,71],[143,68],[163,72],[164,73],[145,74],[153,75],[146,74],[147,74],[148,74],[149,74],[152,74],[150,74],[151,74],[162,76],[157,77],[155,68],[156,68],[158,68],[144,68],[198,78],[196,79],[197,80],[195,81],[71,82],[78,83],[70,82],[85,84],[62,85],[61,86],[84,68],[79,87],[82,88],[64,89],[63,90],[59,91],[58,92],[81,93],[60,94],[65,95],[69,95],[87,96],[86,95],[73,97],[74,98],[76,99],[72,100],[75,101],[80,68],[67,102],[68,103],[77,104],[57,105],[83,106],[171,118],[174,119],[177,120],[176,121],[180,122],[179,123],[173,114],[169,116],[170,124]],"semanticDiagnosticsPerFile":[183,181,166,191,194,193,186,182,184,185,187,188,189,190,199,200,201,54,55,89,90,91,92,93,94,95,96,97,98,99,101,100,102,103,104,88,139,105,106,107,140,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,202,203,228,229,204,207,226,227,217,216,214,209,222,220,224,208,221,225,210,211,223,205,212,213,215,219,230,218,206,243,242,237,239,238,231,232,234,236,240,241,233,235,244,245,246,160,161,142,159,143,163,164,141,154,145,153,146,147,148,149,152,150,151,162,157,155,156,158,144,192,198,196,197,195,49,50,10,8,9,14,13,2,15,16,17,18,19,20,21,22,3,23,4,24,28,25,26,27,29,30,31,5,32,33,34,35,6,39,36,37,38,40,7,41,51,46,47,42,43,44,45,1,48,12,11,71,78,70,85,62,61,84,79,82,64,63,59,58,81,60,65,66,69,56,87,86,73,74,76,72,75,80,67,68,77,57,83,52,53,165,171,172,174,177,176,180,179,175,178,173,168,167,169,170]},"version":"5.4.5"} \ No newline at end of file diff --git a/src/covenantV1/bridge.ts b/src/covenantV1/bridge.ts index 20a7d88..24863ab 100644 --- a/src/covenantV1/bridge.ts +++ b/src/covenantV1/bridge.ts @@ -9,6 +9,7 @@ import { initBTCCurve } from "../utils/curve"; import { buildDepositScript } from "./bridge.script"; import { UTXO } from "../types/UTXO"; import { inputValueSum, getTxInputUTXOsAndFees } from "../utils/fee"; +import { hasOpReturnOutput, minBtc } from "../utils/scriptUtils"; export { initBTCCurve, buildDepositScript }; @@ -16,19 +17,24 @@ export { initBTCCurve, buildDepositScript }; const BTC_DUST_SAT = 546; export function depositTransaction( - scripts: { - depositScript: Buffer, - }, - amount: number, - changeAddress: string, - inputUTXOs: UTXO[], - network: networks.Network, - feeRate: number - ) { + scripts: { + depositScript: Buffer, + }, + amount: number, + changeAddress: string, + inputUTXOs: UTXO[], + network: networks.Network, + feeRate: number +) { if (amount <= 0 || feeRate <= 0) { throw new Error("Amount and fee rate must be bigger than 0"); } + if (feeRate < minBtc) { + throw new Error(`fee rate cannot be less than or equal to ${minBtc}`); + } + + const psbt = new Psbt({ network }); const p2wsh = payments.p2wsh({ @@ -71,25 +77,33 @@ export function depositTransaction( } export function sendTransaction( - scripts: { - depositScript: Buffer, - }, - depositTransaction: Transaction, - sendAddress: string, - minimumFee: number, - network: networks.Network, - outputIndex = 0 + scripts: { + depositScript: Buffer, + }, + depositTransaction: Transaction, + sendAddress: string, + minimumFee: number, + network: networks.Network, + outputIndex = 0 ) { if (minimumFee <= 0) { throw new Error("Minimum fee must be bigger than 0"); } + if (minimumFee < minBtc) { + throw new Error(`Minimum fee cannot be less than or equal to ${minBtc}`); + } + // Ensure that the minimum fee does not exceed the output value const outputValue = depositTransaction.outs[outputIndex].value; if (minimumFee >= outputValue) { throw new Error("Minimum fee must be less than the output value"); } + if (hasOpReturnOutput(depositTransaction.outs[outputIndex])) { + throw new Error("OP RETURN cannot exist in the output"); + } + const psbt = new Psbt({ network }); psbt.addInput({ hash: depositTransaction.getHash(), @@ -101,9 +115,15 @@ export function sendTransaction( witnessScript: scripts.depositScript // This is typically the same as the script used for depositing if P2WSH was used }); + const value = outputValue - minimumFee; + + if (value < minBtc) { + throw new Error(`The output value cannot be less than ${minBtc}`); + } + psbt.addOutput({ address: sendAddress, - value: outputValue - minimumFee // Subtract the minimum fee from the output value + value // Subtract the minimum fee from the output value }); return { psbt }; diff --git a/src/utils/scriptUtils.ts b/src/utils/scriptUtils.ts new file mode 100644 index 0000000..de8d777 --- /dev/null +++ b/src/utils/scriptUtils.ts @@ -0,0 +1,15 @@ +import { + script +} from "bitcoinjs-lib"; +import {Output} from "bitcoinjs-lib/src/transaction"; + +export function hasOpReturnOutput(output: Output) { + if (!output) { + return false; + } + const scriptASM = script.toASM(output.script); + return scriptASM.startsWith('OP_RETURN'); +} + + +export const minBtc = 0.00000001;