@atomicfinance/bitcoin-dlc-provider 4.2.8 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +5 -0
- package/.turbo/turbo-test.log +0 -0
- package/.yalc/@node-dlc/bitcoin/.nyc_output/982e80bf-a70c-452f-b63d-d749ae385531.json +1 -0
- package/.yalc/@node-dlc/bitcoin/.nyc_output/processinfo/982e80bf-a70c-452f-b63d-d749ae385531.json +1 -0
- package/.yalc/@node-dlc/bitcoin/.nyc_output/processinfo/index.json +1 -0
- package/.yalc/@node-dlc/bitcoin/README.md +11 -0
- package/.yalc/@node-dlc/bitcoin/__tests__/bitcoin/amount.spec.ts +330 -0
- package/.yalc/@node-dlc/bitcoin/__tests__/bitcoin/value.spec.ts +320 -0
- package/.yalc/@node-dlc/bitcoin/__tests__/tsconfig.json +8 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Amount.ts.html +290 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Base58.ts.html +269 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Base58Check.ts.html +182 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/BitcoinError.ts.html +173 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/BitcoinErrorCode.ts.html +110 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/HashByteOrder.ts.html +143 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/HashValue.ts.html +350 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/LexicographicalSorters.ts.html +191 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/LockTime.ts.html +386 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/OpCodes.ts.html +437 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/OutPoint.ts.html +383 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Script.ts.html +1607 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Sequence.ts.html +713 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/SigHashType.ts.html +137 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Stack.ts.html +323 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TimeLockMode.ts.html +128 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Tx.ts.html +1520 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TxBuilder.ts.html +971 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TxIn.ts.html +425 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TxOut.ts.html +341 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Value.ts.html +683 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Wif.ts.html +311 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Witness.ts.html +275 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/base.css +224 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/block-navigation.js +79 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/index.html +126 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/index.ts.html +164 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/prettify.css +1 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/prettify.js +2 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/sorter.js +170 -0
- package/.yalc/@node-dlc/bitcoin/coverage/lcov.info +123 -0
- package/.yalc/@node-dlc/bitcoin/dist/Amount.d.ts +48 -0
- package/.yalc/@node-dlc/bitcoin/dist/Amount.js +68 -0
- package/.yalc/@node-dlc/bitcoin/dist/Amount.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Base58.d.ts +22 -0
- package/.yalc/@node-dlc/bitcoin/dist/Base58.js +62 -0
- package/.yalc/@node-dlc/bitcoin/dist/Base58.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Base58Check.d.ts +14 -0
- package/.yalc/@node-dlc/bitcoin/dist/Base58Check.js +36 -0
- package/.yalc/@node-dlc/bitcoin/dist/Base58Check.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/BitcoinError.d.ts +6 -0
- package/.yalc/@node-dlc/bitcoin/dist/BitcoinError.js +36 -0
- package/.yalc/@node-dlc/bitcoin/dist/BitcoinError.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/BitcoinErrorCode.d.ts +10 -0
- package/.yalc/@node-dlc/bitcoin/dist/BitcoinErrorCode.js +15 -0
- package/.yalc/@node-dlc/bitcoin/dist/BitcoinErrorCode.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Block.d.ts +19 -0
- package/.yalc/@node-dlc/bitcoin/dist/Block.js +3 -0
- package/.yalc/@node-dlc/bitcoin/dist/Block.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/HashByteOrder.d.ts +20 -0
- package/.yalc/@node-dlc/bitcoin/dist/HashByteOrder.js +25 -0
- package/.yalc/@node-dlc/bitcoin/dist/HashByteOrder.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/HashValue.d.ts +55 -0
- package/.yalc/@node-dlc/bitcoin/dist/HashValue.js +82 -0
- package/.yalc/@node-dlc/bitcoin/dist/HashValue.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/ICloneable.d.ts +3 -0
- package/.yalc/@node-dlc/bitcoin/dist/ICloneable.js +3 -0
- package/.yalc/@node-dlc/bitcoin/dist/ICloneable.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/LexicographicalSorters.d.ts +18 -0
- package/.yalc/@node-dlc/bitcoin/dist/LexicographicalSorters.js +41 -0
- package/.yalc/@node-dlc/bitcoin/dist/LexicographicalSorters.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/LockTime.d.ts +61 -0
- package/.yalc/@node-dlc/bitcoin/dist/LockTime.js +94 -0
- package/.yalc/@node-dlc/bitcoin/dist/LockTime.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/OpCodes.d.ts +102 -0
- package/.yalc/@node-dlc/bitcoin/dist/OpCodes.js +116 -0
- package/.yalc/@node-dlc/bitcoin/dist/OpCodes.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/OutPoint.d.ts +57 -0
- package/.yalc/@node-dlc/bitcoin/dist/OutPoint.js +88 -0
- package/.yalc/@node-dlc/bitcoin/dist/OutPoint.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Script.d.ts +185 -0
- package/.yalc/@node-dlc/bitcoin/dist/Script.js +404 -0
- package/.yalc/@node-dlc/bitcoin/dist/Script.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/ScriptCmd.d.ts +3 -0
- package/.yalc/@node-dlc/bitcoin/dist/ScriptCmd.js +3 -0
- package/.yalc/@node-dlc/bitcoin/dist/ScriptCmd.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Sequence.d.ts +116 -0
- package/.yalc/@node-dlc/bitcoin/dist/Sequence.js +187 -0
- package/.yalc/@node-dlc/bitcoin/dist/Sequence.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/SigHashType.d.ts +7 -0
- package/.yalc/@node-dlc/bitcoin/dist/SigHashType.js +27 -0
- package/.yalc/@node-dlc/bitcoin/dist/SigHashType.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/SizeResult.d.ts +5 -0
- package/.yalc/@node-dlc/bitcoin/dist/SizeResult.js +3 -0
- package/.yalc/@node-dlc/bitcoin/dist/SizeResult.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Sorter.d.ts +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Sorter.js +3 -0
- package/.yalc/@node-dlc/bitcoin/dist/Sorter.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Stack.d.ts +15 -0
- package/.yalc/@node-dlc/bitcoin/dist/Stack.js +77 -0
- package/.yalc/@node-dlc/bitcoin/dist/Stack.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/TimeLockMode.d.ts +15 -0
- package/.yalc/@node-dlc/bitcoin/dist/TimeLockMode.js +20 -0
- package/.yalc/@node-dlc/bitcoin/dist/TimeLockMode.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Tx.d.ts +150 -0
- package/.yalc/@node-dlc/bitcoin/dist/Tx.js +408 -0
- package/.yalc/@node-dlc/bitcoin/dist/Tx.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxBuilder.d.ts +110 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxBuilder.js +238 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxBuilder.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxIn.d.ts +71 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxIn.js +79 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxIn.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxOut.d.ts +57 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxOut.js +68 -0
- package/.yalc/@node-dlc/bitcoin/dist/TxOut.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Value.d.ts +122 -0
- package/.yalc/@node-dlc/bitcoin/dist/Value.js +180 -0
- package/.yalc/@node-dlc/bitcoin/dist/Value.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Wif.d.ts +41 -0
- package/.yalc/@node-dlc/bitcoin/dist/Wif.js +62 -0
- package/.yalc/@node-dlc/bitcoin/dist/Wif.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/Witness.d.ts +41 -0
- package/.yalc/@node-dlc/bitcoin/dist/Witness.js +63 -0
- package/.yalc/@node-dlc/bitcoin/dist/Witness.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/dist/index.d.ts +28 -0
- package/.yalc/@node-dlc/bitcoin/dist/index.js +45 -0
- package/.yalc/@node-dlc/bitcoin/dist/index.js.map +1 -0
- package/.yalc/@node-dlc/bitcoin/lib/Amount.ts +70 -0
- package/.yalc/@node-dlc/bitcoin/lib/Base58.ts +63 -0
- package/.yalc/@node-dlc/bitcoin/lib/Base58Check.ts +34 -0
- package/.yalc/@node-dlc/bitcoin/lib/BitcoinError.ts +31 -0
- package/.yalc/@node-dlc/bitcoin/lib/BitcoinErrorCode.ts +10 -0
- package/.yalc/@node-dlc/bitcoin/lib/Block.ts +20 -0
- package/.yalc/@node-dlc/bitcoin/lib/HashByteOrder.ts +21 -0
- package/.yalc/@node-dlc/bitcoin/lib/HashValue.ts +90 -0
- package/.yalc/@node-dlc/bitcoin/lib/ICloneable.ts +3 -0
- package/.yalc/@node-dlc/bitcoin/lib/LexicographicalSorters.ts +37 -0
- package/.yalc/@node-dlc/bitcoin/lib/LockTime.ts +102 -0
- package/.yalc/@node-dlc/bitcoin/lib/OpCodes.ts +119 -0
- package/.yalc/@node-dlc/bitcoin/lib/OutPoint.ts +101 -0
- package/.yalc/@node-dlc/bitcoin/lib/Script.ts +509 -0
- package/.yalc/@node-dlc/bitcoin/lib/ScriptCmd.ts +3 -0
- package/.yalc/@node-dlc/bitcoin/lib/Sequence.ts +211 -0
- package/.yalc/@node-dlc/bitcoin/lib/SigHashType.ts +19 -0
- package/.yalc/@node-dlc/bitcoin/lib/SizeResult.ts +5 -0
- package/.yalc/@node-dlc/bitcoin/lib/Sorter.ts +1 -0
- package/.yalc/@node-dlc/bitcoin/lib/Stack.ts +81 -0
- package/.yalc/@node-dlc/bitcoin/lib/TimeLockMode.ts +16 -0
- package/.yalc/@node-dlc/bitcoin/lib/Tx.ts +480 -0
- package/.yalc/@node-dlc/bitcoin/lib/TxBuilder.ts +297 -0
- package/.yalc/@node-dlc/bitcoin/lib/TxIn.ts +115 -0
- package/.yalc/@node-dlc/bitcoin/lib/TxOut.ts +87 -0
- package/.yalc/@node-dlc/bitcoin/lib/Value.ts +201 -0
- package/.yalc/@node-dlc/bitcoin/lib/Wif.ts +77 -0
- package/.yalc/@node-dlc/bitcoin/lib/Witness.ts +65 -0
- package/.yalc/@node-dlc/bitcoin/lib/index.ts +28 -0
- package/.yalc/@node-dlc/bitcoin/package.json +31 -0
- package/.yalc/@node-dlc/bitcoin/tsconfig.json +8 -0
- package/.yalc/@node-dlc/bitcoin/yalc.sig +1 -0
- package/.yalc/@node-dlc/bufio/.eslintrc +6 -0
- package/.yalc/@node-dlc/bufio/.nyc_output/3c26c5b3-2a5e-4a53-88d4-06f4a5c339f7.json +1 -0
- package/.yalc/@node-dlc/bufio/.nyc_output/processinfo/3c26c5b3-2a5e-4a53-88d4-06f4a5c339f7.json +1 -0
- package/.yalc/@node-dlc/bufio/.nyc_output/processinfo/index.json +1 -0
- package/.yalc/@node-dlc/bufio/README.md +68 -0
- package/.yalc/@node-dlc/bufio/__tests__/BufferReader.spec.ts +548 -0
- package/.yalc/@node-dlc/bufio/__tests__/BufferWriter.spec.ts +530 -0
- package/.yalc/@node-dlc/bufio/__tests__/Hex.spec.ts +51 -0
- package/.yalc/@node-dlc/bufio/__tests__/StreamReader.spec.ts +133 -0
- package/.yalc/@node-dlc/bufio/__tests__/bigFromBufBE.spec.ts +14 -0
- package/.yalc/@node-dlc/bufio/__tests__/bigFromBufLE.spec.ts +14 -0
- package/.yalc/@node-dlc/bufio/__tests__/bigToBufBE.spec.ts +15 -0
- package/.yalc/@node-dlc/bufio/__tests__/bigToBufLE.spec.ts +14 -0
- package/.yalc/@node-dlc/bufio/__tests__/encodeVarInt.spec.ts +25 -0
- package/.yalc/@node-dlc/bufio/__tests__/tsconfig.json +7 -0
- package/.yalc/@node-dlc/bufio/__tests__/varIntBytes.spec.ts +34 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/BufferReader.ts.html +1142 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/BufferWriter.ts.html +953 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/Hex.ts.html +323 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/StreamReader.ts.html +620 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/base.css +224 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/bigFromBufBE.ts.html +89 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/bigFromBufLE.ts.html +95 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/bigToBufBE.ts.html +98 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/bigToBufLE.ts.html +95 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/block-navigation.js +79 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/bufToStream.ts.html +113 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/encodeVarInt.ts.html +203 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/index.html +261 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/prettify.css +1 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/prettify.js +2 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/sorter.js +170 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov-report/varIntBytes.ts.html +116 -0
- package/.yalc/@node-dlc/bufio/coverage/lcov.info +747 -0
- package/.yalc/@node-dlc/bufio/dist/BufferReader.d.ts +155 -0
- package/.yalc/@node-dlc/bufio/dist/BufferReader.js +346 -0
- package/.yalc/@node-dlc/bufio/dist/BufferReader.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/BufferWriter.d.ts +143 -0
- package/.yalc/@node-dlc/bufio/dist/BufferWriter.js +279 -0
- package/.yalc/@node-dlc/bufio/dist/BufferWriter.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/Hex.d.ts +13 -0
- package/.yalc/@node-dlc/bufio/dist/Hex.js +78 -0
- package/.yalc/@node-dlc/bufio/dist/Hex.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/StreamReader.d.ts +111 -0
- package/.yalc/@node-dlc/bufio/dist/StreamReader.js +180 -0
- package/.yalc/@node-dlc/bufio/dist/StreamReader.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/bigFromBufBE.d.ts +2 -0
- package/.yalc/@node-dlc/bufio/dist/bigFromBufBE.js +8 -0
- package/.yalc/@node-dlc/bufio/dist/bigFromBufBE.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/bigFromBufLE.d.ts +2 -0
- package/.yalc/@node-dlc/bufio/dist/bigFromBufLE.js +9 -0
- package/.yalc/@node-dlc/bufio/dist/bigFromBufLE.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/bigToBufBE.d.ts +2 -0
- package/.yalc/@node-dlc/bufio/dist/bigToBufBE.js +13 -0
- package/.yalc/@node-dlc/bufio/dist/bigToBufBE.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/bigToBufLE.d.ts +2 -0
- package/.yalc/@node-dlc/bufio/dist/bigToBufLE.js +9 -0
- package/.yalc/@node-dlc/bufio/dist/bigToBufLE.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/bufToStream.d.ts +7 -0
- package/.yalc/@node-dlc/bufio/dist/bufToStream.js +15 -0
- package/.yalc/@node-dlc/bufio/dist/bufToStream.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/encodeVarInt.d.ts +12 -0
- package/.yalc/@node-dlc/bufio/dist/encodeVarInt.js +46 -0
- package/.yalc/@node-dlc/bufio/dist/encodeVarInt.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/index.d.ts +11 -0
- package/.yalc/@node-dlc/bufio/dist/index.js +28 -0
- package/.yalc/@node-dlc/bufio/dist/index.js.map +1 -0
- package/.yalc/@node-dlc/bufio/dist/varIntBytes.d.ts +5 -0
- package/.yalc/@node-dlc/bufio/dist/varIntBytes.js +22 -0
- package/.yalc/@node-dlc/bufio/dist/varIntBytes.js.map +1 -0
- package/.yalc/@node-dlc/bufio/lib/BufferReader.ts +354 -0
- package/.yalc/@node-dlc/bufio/lib/BufferWriter.ts +291 -0
- package/.yalc/@node-dlc/bufio/lib/Hex.ts +81 -0
- package/.yalc/@node-dlc/bufio/lib/StreamReader.ts +180 -0
- package/.yalc/@node-dlc/bufio/lib/bigFromBufBE.ts +3 -0
- package/.yalc/@node-dlc/bufio/lib/bigFromBufLE.ts +5 -0
- package/.yalc/@node-dlc/bufio/lib/bigToBufBE.ts +6 -0
- package/.yalc/@node-dlc/bufio/lib/bigToBufLE.ts +5 -0
- package/.yalc/@node-dlc/bufio/lib/bufToStream.ts +11 -0
- package/.yalc/@node-dlc/bufio/lib/encodeVarInt.ts +41 -0
- package/.yalc/@node-dlc/bufio/lib/index.ts +11 -0
- package/.yalc/@node-dlc/bufio/lib/varIntBytes.ts +12 -0
- package/.yalc/@node-dlc/bufio/package.json +27 -0
- package/.yalc/@node-dlc/bufio/tsconfig-build.json +7 -0
- package/.yalc/@node-dlc/bufio/tsconfig.json +7 -0
- package/.yalc/@node-dlc/bufio/yalc.sig +1 -0
- package/.yalc/@node-dlc/core/.nyc_output/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +1 -0
- package/.yalc/@node-dlc/core/.nyc_output/processinfo/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +1 -0
- package/.yalc/@node-dlc/core/.nyc_output/processinfo/index.json +1 -0
- package/.yalc/@node-dlc/core/README.md +11 -0
- package/.yalc/@node-dlc/core/__tests__/core.spec.ts +7 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/CETCalculator.spec.ts +1029 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/CoinSelect.spec.ts +179 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/PolynomialPayoutCurve.spec.ts +345 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/TxBuilder.spec.ts +424 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/Builder.spec.ts +492 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/CoveredCall.spec.ts +112 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/CsoInfo.spec.ts +1124 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongCall.spec.ts +55 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongPut.spec.ts +55 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/OptionInfo.spec.ts +226 -0
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/ShortPut.spec.ts +62 -0
- package/.yalc/@node-dlc/core/__tests__/tsconfig.json +8 -0
- package/.yalc/@node-dlc/core/__tests__/utils/precision.spec.ts +40 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/base.css +224 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/block-navigation.js +79 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/index.html +171 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/AsyncProcessingQueue.ts.html +269 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Base32.ts.html +86 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BigIntUtils.ts.html +86 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BitField.ts.html +86 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ChannelId.ts.html +86 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedList.ts.html +413 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedListNode.ts.html +122 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Queue.ts.html +188 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelId.ts.html +86 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelIdUtils.ts.html +107 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CETCalculator.ts.html +1430 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CoinSelect.ts.html +431 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/HyperbolaPayoutCurve.ts.html +644 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/PolynomialPayoutCurve.ts.html +878 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxBuilder.ts.html +1088 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxFinalizer.ts.html +731 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/Builder.ts.html +2270 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CoveredCall.ts.html +410 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CsoInfo.ts.html +1574 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LinearPayout.ts.html +362 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongCall.ts.html +302 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongPut.ts.html +302 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/OptionInfo.ts.html +626 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/ShortPut.ts.html +305 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/index.html +216 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/index.html +186 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.html +261 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.ts.html +278 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelId.ts.html +242 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelKeys.ts.html +407 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentNumber.ts.html +362 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecret.ts.html +203 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecretStore.ts.html +332 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/Htlc.ts.html +236 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/HtlcDirection.ts.html +131 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ScriptFactory.ts.html +530 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/TxFactory.ts.html +1094 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/index.html +231 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/BigIntUtils.ts.html +272 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/Precision.ts.html +149 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/index.html +126 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.css +1 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.js +2 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/sorter.js +170 -0
- package/.yalc/@node-dlc/core/coverage/lcov.info +2426 -0
- package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.d.ts +22 -0
- package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js +55 -0
- package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/Base32.d.ts +1 -0
- package/.yalc/@node-dlc/core/dist/Base32.js +7 -0
- package/.yalc/@node-dlc/core/dist/Base32.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/BigIntUtils.d.ts +1 -0
- package/.yalc/@node-dlc/core/dist/BigIntUtils.js +8 -0
- package/.yalc/@node-dlc/core/dist/BigIntUtils.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/BitField.d.ts +1 -0
- package/.yalc/@node-dlc/core/dist/BitField.js +7 -0
- package/.yalc/@node-dlc/core/dist/BitField.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/ChannelId.d.ts +1 -0
- package/.yalc/@node-dlc/core/dist/ChannelId.js +7 -0
- package/.yalc/@node-dlc/core/dist/ChannelId.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/LinkedList.d.ts +30 -0
- package/.yalc/@node-dlc/core/dist/LinkedList.js +104 -0
- package/.yalc/@node-dlc/core/dist/LinkedList.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/LinkedListNode.d.ts +9 -0
- package/.yalc/@node-dlc/core/dist/LinkedListNode.js +15 -0
- package/.yalc/@node-dlc/core/dist/LinkedListNode.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/Queue.d.ts +22 -0
- package/.yalc/@node-dlc/core/dist/Queue.js +38 -0
- package/.yalc/@node-dlc/core/dist/Queue.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/ShortChannelId.d.ts +1 -0
- package/.yalc/@node-dlc/core/dist/ShortChannelId.js +7 -0
- package/.yalc/@node-dlc/core/dist/ShortChannelId.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.d.ts +1 -0
- package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js +12 -0
- package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.d.ts +50 -0
- package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js +332 -0
- package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.d.ts +23 -0
- package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js +77 -0
- package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.d.ts +20 -0
- package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js +117 -0
- package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.d.ts +5 -0
- package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js +3 -0
- package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.d.ts +52 -0
- package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js +173 -0
- package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.d.ts +55 -0
- package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js +217 -0
- package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.d.ts +40 -0
- package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js +146 -0
- package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.d.ts +193 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js +422 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.d.ts +13 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js +67 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.d.ts +114 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js +290 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.d.ts +6 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js +79 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.d.ts +13 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js +47 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.d.ts +13 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js +47 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.d.ts +20 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js +101 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.d.ts +12 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js +46 -0
- package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/index.d.ts +39 -0
- package/.yalc/@node-dlc/core/dist/index.js +78 -0
- package/.yalc/@node-dlc/core/dist/index.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/ChannelId.d.ts +31 -0
- package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js +52 -0
- package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.d.ts +55 -0
- package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js +105 -0
- package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.d.ts +55 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js +76 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.d.ts +26 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js +44 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.d.ts +41 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js +79 -0
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/Htlc.d.ts +46 -0
- package/.yalc/@node-dlc/core/dist/lightning/Htlc.js +46 -0
- package/.yalc/@node-dlc/core/dist/lightning/Htlc.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.d.ts +16 -0
- package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js +21 -0
- package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.d.ts +76 -0
- package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js +102 -0
- package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/lightning/TxFactory.d.ts +83 -0
- package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js +222 -0
- package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.d.ts +9 -0
- package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js +59 -0
- package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js.map +1 -0
- package/.yalc/@node-dlc/core/dist/utils/Precision.d.ts +13 -0
- package/.yalc/@node-dlc/core/dist/utils/Precision.js +28 -0
- package/.yalc/@node-dlc/core/dist/utils/Precision.js.map +1 -0
- package/.yalc/@node-dlc/core/lib/AsyncProcessingQueue.ts +63 -0
- package/.yalc/@node-dlc/core/lib/Base32.ts +2 -0
- package/.yalc/@node-dlc/core/lib/BigIntUtils.ts +2 -0
- package/.yalc/@node-dlc/core/lib/BitField.ts +2 -0
- package/.yalc/@node-dlc/core/lib/ChannelId.ts +2 -0
- package/.yalc/@node-dlc/core/lib/LinkedList.ts +111 -0
- package/.yalc/@node-dlc/core/lib/LinkedListNode.ts +14 -0
- package/.yalc/@node-dlc/core/lib/Queue.ts +36 -0
- package/.yalc/@node-dlc/core/lib/ShortChannelId.ts +2 -0
- package/.yalc/@node-dlc/core/lib/ShortChannelIdUtils.ts +9 -0
- package/.yalc/@node-dlc/core/lib/dlc/CETCalculator.ts +450 -0
- package/.yalc/@node-dlc/core/lib/dlc/CoinSelect.ts +117 -0
- package/.yalc/@node-dlc/core/lib/dlc/HyperbolaPayoutCurve.ts +188 -0
- package/.yalc/@node-dlc/core/lib/dlc/PayoutCurve.ts +6 -0
- package/.yalc/@node-dlc/core/lib/dlc/PolynomialPayoutCurve.ts +266 -0
- package/.yalc/@node-dlc/core/lib/dlc/TxBuilder.ts +336 -0
- package/.yalc/@node-dlc/core/lib/dlc/TxFinalizer.ts +217 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/Builder.ts +730 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/CoveredCall.ts +110 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/CsoInfo.ts +498 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/LinearPayout.ts +94 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/LongCall.ts +74 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/LongPut.ts +74 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/OptionInfo.ts +182 -0
- package/.yalc/@node-dlc/core/lib/dlc/finance/ShortPut.ts +75 -0
- package/.yalc/@node-dlc/core/lib/index.ts +66 -0
- package/.yalc/@node-dlc/core/lib/lightning/ChannelId.ts +54 -0
- package/.yalc/@node-dlc/core/lib/lightning/ChannelKeys.ts +109 -0
- package/.yalc/@node-dlc/core/lib/lightning/CommitmentNumber.ts +94 -0
- package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecret.ts +41 -0
- package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecretStore.ts +84 -0
- package/.yalc/@node-dlc/core/lib/lightning/Htlc.ts +52 -0
- package/.yalc/@node-dlc/core/lib/lightning/HtlcDirection.ts +17 -0
- package/.yalc/@node-dlc/core/lib/lightning/ScriptFactory.ts +150 -0
- package/.yalc/@node-dlc/core/lib/lightning/TxFactory.ts +338 -0
- package/.yalc/@node-dlc/core/lib/utils/BigIntUtils.ts +64 -0
- package/.yalc/@node-dlc/core/lib/utils/Precision.ts +23 -0
- package/.yalc/@node-dlc/core/package.json +38 -0
- package/.yalc/@node-dlc/core/tsconfig.json +8 -0
- package/.yalc/@node-dlc/core/yalc.sig +1 -0
- package/.yalc/@node-dlc/crypto/.eslintrc +6 -0
- package/.yalc/@node-dlc/crypto/.nyc_output/de03e0b4-d482-4f61-b680-59411360f56e.json +1 -0
- package/.yalc/@node-dlc/crypto/.nyc_output/processinfo/de03e0b4-d482-4f61-b680-59411360f56e.json +1 -0
- package/.yalc/@node-dlc/crypto/.nyc_output/processinfo/index.json +1 -0
- package/.yalc/@node-dlc/crypto/README.md +13 -0
- package/.yalc/@node-dlc/crypto/__tests__/chacha.spec.ts +29 -0
- package/.yalc/@node-dlc/crypto/__tests__/chachapoly.spec.ts +78 -0
- package/.yalc/@node-dlc/crypto/__tests__/hkdf.spec.ts +131 -0
- package/.yalc/@node-dlc/crypto/__tests__/key.spec.ts +125 -0
- package/.yalc/@node-dlc/crypto/__tests__/secp256k1.spec.ts +194 -0
- package/.yalc/@node-dlc/crypto/__tests__/xor.spec.ts +28 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/base.css +224 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/block-navigation.js +79 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/chacha.ts.html +119 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/chachapoly.ts.html +275 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/hkdf.ts.html +236 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/index.html +186 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/key.ts.html +272 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/prettify.css +1 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/prettify.js +2 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/secp256k1.ts.html +680 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/sorter.js +170 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov-report/xor.ts.html +116 -0
- package/.yalc/@node-dlc/crypto/coverage/lcov.info +221 -0
- package/.yalc/@node-dlc/crypto/dist/aes-key.d.ts +6 -0
- package/.yalc/@node-dlc/crypto/dist/aes-key.js +3 -0
- package/.yalc/@node-dlc/crypto/dist/aes-key.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/aes.d.ts +34 -0
- package/.yalc/@node-dlc/crypto/dist/aes.js +62 -0
- package/.yalc/@node-dlc/crypto/dist/aes.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/chacha.d.ts +4 -0
- package/.yalc/@node-dlc/crypto/dist/chacha.js +40 -0
- package/.yalc/@node-dlc/crypto/dist/chacha.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/chachapoly.d.ts +24 -0
- package/.yalc/@node-dlc/crypto/dist/chachapoly.js +61 -0
- package/.yalc/@node-dlc/crypto/dist/chachapoly.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/hash.d.ts +29 -0
- package/.yalc/@node-dlc/crypto/dist/hash.js +51 -0
- package/.yalc/@node-dlc/crypto/dist/hash.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/hkdf.d.ts +20 -0
- package/.yalc/@node-dlc/crypto/dist/hkdf.js +50 -0
- package/.yalc/@node-dlc/crypto/dist/hkdf.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/hmac.d.ts +3 -0
- package/.yalc/@node-dlc/crypto/dist/hmac.js +14 -0
- package/.yalc/@node-dlc/crypto/dist/hmac.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/index.d.ts +11 -0
- package/.yalc/@node-dlc/crypto/dist/index.js +30 -0
- package/.yalc/@node-dlc/crypto/dist/index.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/key.d.ts +37 -0
- package/.yalc/@node-dlc/crypto/dist/key.js +72 -0
- package/.yalc/@node-dlc/crypto/dist/key.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/secp256k1.d.ts +120 -0
- package/.yalc/@node-dlc/crypto/dist/secp256k1.js +184 -0
- package/.yalc/@node-dlc/crypto/dist/secp256k1.js.map +1 -0
- package/.yalc/@node-dlc/crypto/dist/xor.d.ts +8 -0
- package/.yalc/@node-dlc/crypto/dist/xor.js +17 -0
- package/.yalc/@node-dlc/crypto/dist/xor.js.map +1 -0
- package/.yalc/@node-dlc/crypto/lib/aes-key.ts +4 -0
- package/.yalc/@node-dlc/crypto/lib/aes.ts +81 -0
- package/.yalc/@node-dlc/crypto/lib/chacha.ts +13 -0
- package/.yalc/@node-dlc/crypto/lib/chachapoly.ts +65 -0
- package/.yalc/@node-dlc/crypto/lib/hash.ts +44 -0
- package/.yalc/@node-dlc/crypto/lib/hkdf.ts +52 -0
- package/.yalc/@node-dlc/crypto/lib/hmac.ts +7 -0
- package/.yalc/@node-dlc/crypto/lib/index.ts +11 -0
- package/.yalc/@node-dlc/crypto/lib/key.ts +64 -0
- package/.yalc/@node-dlc/crypto/lib/secp256k1.ts +200 -0
- package/.yalc/@node-dlc/crypto/lib/xor.ts +12 -0
- package/.yalc/@node-dlc/crypto/package.json +34 -0
- package/.yalc/@node-dlc/crypto/tsconfig-build.json +7 -0
- package/.yalc/@node-dlc/crypto/tsconfig.json +4 -0
- package/.yalc/@node-dlc/crypto/yalc.sig +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/83d37f9d-cecf-4c52-a753-115ff80bbca0.json +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/83d37f9d-cecf-4c52-a753-115ff80bbca0.json +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
- package/.yalc/@node-dlc/messaging/README.md +24 -0
- package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +13 -0
- package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +439 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +255 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +342 -0
- package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
- package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +266 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +314 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcInput.spec.ts +111 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +589 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +169 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +324 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +75 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +299 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
- package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +261 -0
- package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +500 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1061 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +215 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +356 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CloseTLV.ts.html +344 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1031 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1397 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1997 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +995 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +434 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInput.ts.html +581 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +2075 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1157 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +962 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +860 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +344 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +848 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +383 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +479 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +503 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1658 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +308 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +602 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +710 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1334 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +521 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1442 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +806 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +464 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +428 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +651 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1091 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +191 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov.info +5617 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +101 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.js +118 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +212 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/index.d.ts +45 -0
- package/.yalc/@node-dlc/messaging/dist/index.js +64 -0
- package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignaturesV0.d.ts +42 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignaturesV0.js +68 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignaturesV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CloseTLV.d.ts +38 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CloseTLV.js +59 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CloseTLV.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +121 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +221 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +308 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +160 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +469 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +214 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInput.d.ts +56 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInput.js +135 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInput.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +146 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +463 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +275 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +107 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +212 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +69 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +193 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignaturesV0.d.ts +34 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignaturesV0.js +72 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignaturesV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +189 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncementV0.d.ts +47 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncementV0.js +76 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncementV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestationV0.d.ts +48 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestationV0.js +100 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestationV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainerV0.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainerV0.js +67 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainerV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventV0.d.ts +54 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventV0.js +100 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +163 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +393 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +35 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +66 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +140 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +81 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +161 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +44 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +111 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +332 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +173 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +96 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervalsV0.d.ts +47 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervalsV0.js +86 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervalsV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +146 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +294 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
- package/.yalc/@node-dlc/messaging/dist/util.js +42 -0
- package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
- package/.yalc/@node-dlc/messaging/lib/MessageType.ts +140 -0
- package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +327 -0
- package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
- package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
- package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
- package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
- package/.yalc/@node-dlc/messaging/lib/index.ts +45 -0
- package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
- package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
- package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
- package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +317 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +439 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +639 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +305 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +118 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcInput.ts +167 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +665 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +359 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
- package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +294 -0
- package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +260 -0
- package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
- package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
- package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +256 -0
- package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +526 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +174 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +210 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +418 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +147 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +454 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +242 -0
- package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +128 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
- package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +337 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
- package/.yalc/@node-dlc/messaging/lib/util.ts +37 -0
- package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
- package/.yalc/@node-dlc/messaging/package.json +42 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +212 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +470 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1519 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +547 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4763 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2171 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +166 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +504 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +264 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4384 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +326 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +654 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1140 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2224 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_3_of_3_test.json +210 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_3_of_5_test.json +468 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_3_of_5_test.json +1517 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_5_of_5_test.json +545 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_single_oracle_test.json +164 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/single_oracle_numerical_hyperbola_test.json +502 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/single_oracle_numerical_test.json +262 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/three_of_three_oracle_numerical_test.json +324 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/three_of_three_oracle_numerical_with_diff_test.json +652 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/two_of_five_oracle_numerical_test.json +1138 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_3_of_3_test.json +212 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_3_of_5_test.json +470 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_3_of_5_test.json +1519 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_5_of_5_test.json +547 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_with_diff_3_of_5_test.json +4763 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_with_diff_5_of_5_test.json +2171 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_single_oracle_test.json +166 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/single_oracle_numerical_hyperbola_test.json +504 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/single_oracle_numerical_test.json +264 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/three_of_five_oracle_numerical_with_diff_test.json +4384 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/three_of_three_oracle_numerical_test.json +326 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/three_of_three_oracle_numerical_with_diff_test.json +654 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/two_of_five_oracle_numerical_test.json +1140 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/two_of_five_oracle_numerical_with_diff_test.json +2224 -0
- package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
- package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
- package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
- package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
- package/CHANGELOG.md +25 -0
- package/dist/BitcoinDlcProvider.d.ts +2 -2
- package/dist/BitcoinDlcProvider.js +4 -5
- package/dist/BitcoinDlcProvider.js.map +1 -1
- package/lib/BitcoinDlcProvider.ts +4 -3
- package/package.json +10 -10
- package/yalc.lock +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CETCalculator.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CETCalculator.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":273}},"4":{"start":{"line":7,"column":23},"end":{"line":7,"column":63}},"5":{"start":{"line":8,"column":22},"end":{"line":8,"column":53}},"6":{"start":{"line":10,"column":4},"end":{"line":10,"column":37}},"7":{"start":{"line":10,"column":29},"end":{"line":10,"column":35}},"8":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"9":{"start":{"line":14,"column":4},"end":{"line":18,"column":5}},"10":{"start":{"line":14,"column":17},"end":{"line":14,"column":18}},"11":{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},"12":{"start":{"line":16,"column":12},"end":{"line":16,"column":33}},"13":{"start":{"line":19,"column":4},"end":{"line":19,"column":14}},"14":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"15":{"start":{"line":23,"column":24},"end":{"line":23,"column":27}},"16":{"start":{"line":24,"column":19},"end":{"line":24,"column":21}},"17":{"start":{"line":25,"column":4},"end":{"line":29,"column":5}},"18":{"start":{"line":26,"column":8},"end":{"line":26,"column":58}},"19":{"start":{"line":27,"column":8},"end":{"line":27,"column":53}},"20":{"start":{"line":28,"column":8},"end":{"line":28,"column":20}},"21":{"start":{"line":30,"column":4},"end":{"line":30,"column":28}},"22":{"start":{"line":32,"column":0},"end":{"line":32,"column":30}},"23":{"start":{"line":34,"column":24},"end":{"line":34,"column":57}},"24":{"start":{"line":35,"column":22},"end":{"line":35,"column":53}},"25":{"start":{"line":36,"column":25},"end":{"line":36,"column":27}},"26":{"start":{"line":37,"column":4},"end":{"line":43,"column":5}},"27":{"start":{"line":37,"column":17},"end":{"line":37,"column":18}},"28":{"start":{"line":38,"column":8},"end":{"line":42,"column":18}},"29":{"start":{"line":39,"column":12},"end":{"line":39,"column":46}},"30":{"start":{"line":42,"column":12},"end":{"line":42,"column":18}},"31":{"start":{"line":44,"column":4},"end":{"line":48,"column":6}},"32":{"start":{"line":50,"column":0},"end":{"line":50,"column":40}},"33":{"start":{"line":52,"column":27},"end":{"line":52,"column":55}},"34":{"start":{"line":53,"column":26},"end":{"line":53,"column":84}},"35":{"start":{"line":53,"column":73},"end":{"line":53,"column":83}},"36":{"start":{"line":54,"column":4},"end":{"line":56,"column":5}},"37":{"start":{"line":55,"column":8},"end":{"line":55,"column":21}},"38":{"start":{"line":57,"column":22},"end":{"line":67,"column":6}},"39":{"start":{"line":58,"column":26},"end":{"line":58,"column":56}},"40":{"start":{"line":60,"column":28},"end":{"line":60,"column":46}},"41":{"start":{"line":61,"column":8},"end":{"line":61,"column":58}},"42":{"start":{"line":62,"column":23},"end":{"line":62,"column":25}},"43":{"start":{"line":63,"column":8},"end":{"line":65,"column":9}},"44":{"start":{"line":63,"column":21},"end":{"line":63,"column":26}},"45":{"start":{"line":64,"column":12},"end":{"line":64,"column":57}},"46":{"start":{"line":66,"column":8},"end":{"line":66,"column":22}},"47":{"start":{"line":68,"column":4},"end":{"line":68,"column":68}},"48":{"start":{"line":68,"column":37},"end":{"line":68,"column":41}},"49":{"start":{"line":70,"column":0},"end":{"line":70,"column":40}},"50":{"start":{"line":72,"column":27},"end":{"line":72,"column":55}},"51":{"start":{"line":73,"column":25},"end":{"line":73,"column":90}},"52":{"start":{"line":73,"column":72},"end":{"line":73,"column":89}},"53":{"start":{"line":74,"column":4},"end":{"line":76,"column":5}},"54":{"start":{"line":75,"column":8},"end":{"line":75,"column":28}},"55":{"start":{"line":77,"column":21},"end":{"line":87,"column":6}},"56":{"start":{"line":78,"column":26},"end":{"line":78,"column":55}},"57":{"start":{"line":80,"column":28},"end":{"line":80,"column":46}},"58":{"start":{"line":81,"column":8},"end":{"line":81,"column":58}},"59":{"start":{"line":82,"column":23},"end":{"line":82,"column":25}},"60":{"start":{"line":83,"column":8},"end":{"line":85,"column":9}},"61":{"start":{"line":83,"column":21},"end":{"line":83,"column":26}},"62":{"start":{"line":84,"column":12},"end":{"line":84,"column":57}},"63":{"start":{"line":86,"column":8},"end":{"line":86,"column":22}},"64":{"start":{"line":88,"column":4},"end":{"line":88,"column":76}},"65":{"start":{"line":88,"column":59},"end":{"line":88,"column":63}},"66":{"start":{"line":90,"column":0},"end":{"line":90,"column":38}},"67":{"start":{"line":92,"column":19},"end":{"line":92,"column":21}},"68":{"start":{"line":93,"column":4},"end":{"line":95,"column":5}},"69":{"start":{"line":94,"column":8},"end":{"line":94,"column":39}},"70":{"start":{"line":96,"column":4},"end":{"line":96,"column":18}},"71":{"start":{"line":98,"column":0},"end":{"line":98,"column":42}},"72":{"start":{"line":100,"column":53},"end":{"line":100,"column":96}},"73":{"start":{"line":101,"column":4},"end":{"line":120,"column":5}},"74":{"start":{"line":102,"column":34},"end":{"line":102,"column":41}},"75":{"start":{"line":103,"column":35},"end":{"line":103,"column":49}},"76":{"start":{"line":105,"column":8},"end":{"line":105,"column":30}},"77":{"start":{"line":107,"column":9},"end":{"line":120,"column":5}},"78":{"start":{"line":108,"column":23},"end":{"line":108,"column":25}},"79":{"start":{"line":109,"column":8},"end":{"line":111,"column":9}},"80":{"start":{"line":109,"column":21},"end":{"line":109,"column":56}},"81":{"start":{"line":110,"column":12},"end":{"line":110,"column":46}},"82":{"start":{"line":112,"column":8},"end":{"line":112,"column":22}},"83":{"start":{"line":115,"column":22},"end":{"line":115,"column":55}},"84":{"start":{"line":116,"column":23},"end":{"line":116,"column":68}},"85":{"start":{"line":117,"column":21},"end":{"line":117,"column":51}},"86":{"start":{"line":118,"column":26},"end":{"line":118,"column":56}},"87":{"start":{"line":119,"column":8},"end":{"line":119,"column":61}},"88":{"start":{"line":119,"column":36},"end":{"line":119,"column":59}},"89":{"start":{"line":122,"column":0},"end":{"line":122,"column":54}},"90":{"start":{"line":147,"column":4},"end":{"line":149,"column":5}},"91":{"start":{"line":148,"column":8},"end":{"line":148,"column":69}},"92":{"start":{"line":150,"column":30},"end":{"line":150,"column":62}},"93":{"start":{"line":151,"column":34},"end":{"line":159,"column":5}},"94":{"start":{"line":152,"column":30},"end":{"line":152,"column":106}},"95":{"start":{"line":152,"column":72},"end":{"line":152,"column":105}},"96":{"start":{"line":153,"column":8},"end":{"line":158,"column":10}},"97":{"start":{"line":160,"column":18},"end":{"line":160,"column":90}},"98":{"start":{"line":160,"column":27},"end":{"line":160,"column":90}},"99":{"start":{"line":161,"column":30},"end":{"line":161,"column":84}},"100":{"start":{"line":162,"column":20},"end":{"line":162,"column":110}},"101":{"start":{"line":162,"column":29},"end":{"line":162,"column":110}},"102":{"start":{"line":163,"column":19},"end":{"line":163,"column":21}},"103":{"start":{"line":165,"column":4},"end":{"line":169,"column":7}},"104":{"start":{"line":171,"column":4},"end":{"line":185,"column":5}},"105":{"start":{"line":172,"column":8},"end":{"line":176,"column":11}},"106":{"start":{"line":178,"column":8},"end":{"line":182,"column":11}},"107":{"start":{"line":184,"column":8},"end":{"line":184,"column":49}},"108":{"start":{"line":186,"column":25},"end":{"line":186,"column":41}},"109":{"start":{"line":188,"column":4},"end":{"line":295,"column":5}},"110":{"start":{"line":189,"column":42},"end":{"line":189,"column":79}},"111":{"start":{"line":191,"column":41},"end":{"line":191,"column":98}},"112":{"start":{"line":193,"column":28},"end":{"line":193,"column":130}},"113":{"start":{"line":194,"column":39},"end":{"line":194,"column":53}},"114":{"start":{"line":195,"column":28},"end":{"line":197,"column":30}},"115":{"start":{"line":199,"column":26},"end":{"line":199,"column":27}},"116":{"start":{"line":200,"column":30},"end":{"line":200,"column":54}},"117":{"start":{"line":201,"column":8},"end":{"line":294,"column":9}},"118":{"start":{"line":203,"column":12},"end":{"line":212,"column":13}},"119":{"start":{"line":205,"column":16},"end":{"line":209,"column":19}},"120":{"start":{"line":210,"column":16},"end":{"line":210,"column":36}},"121":{"start":{"line":211,"column":16},"end":{"line":211,"column":22}},"122":{"start":{"line":213,"column":38},"end":{"line":215,"column":73}},"123":{"start":{"line":216,"column":44},"end":{"line":216,"column":90}},"124":{"start":{"line":217,"column":41},"end":{"line":217,"column":119}},"125":{"start":{"line":218,"column":40},"end":{"line":218,"column":87}},"126":{"start":{"line":220,"column":12},"end":{"line":223,"column":13}},"127":{"start":{"line":222,"column":16},"end":{"line":222,"column":77}},"128":{"start":{"line":224,"column":12},"end":{"line":235,"column":13}},"129":{"start":{"line":230,"column":16},"end":{"line":230,"column":74}},"130":{"start":{"line":232,"column":16},"end":{"line":234,"column":17}},"131":{"start":{"line":233,"column":20},"end":{"line":233,"column":69}},"132":{"start":{"line":236,"column":32},"end":{"line":236,"column":76}},"133":{"start":{"line":237,"column":12},"end":{"line":245,"column":13}},"134":{"start":{"line":238,"column":16},"end":{"line":242,"column":19}},"135":{"start":{"line":243,"column":16},"end":{"line":243,"column":58}},"136":{"start":{"line":244,"column":16},"end":{"line":244,"column":22}},"137":{"start":{"line":246,"column":12},"end":{"line":271,"column":13}},"138":{"start":{"line":251,"column":16},"end":{"line":268,"column":17}},"139":{"start":{"line":252,"column":20},"end":{"line":256,"column":23}},"140":{"start":{"line":259,"column":20},"end":{"line":267,"column":23}},"141":{"start":{"line":269,"column":16},"end":{"line":269,"column":36}},"142":{"start":{"line":270,"column":16},"end":{"line":270,"column":22}},"143":{"start":{"line":272,"column":12},"end":{"line":276,"column":15}},"144":{"start":{"line":278,"column":12},"end":{"line":284,"column":13}},"145":{"start":{"line":280,"column":16},"end":{"line":280,"column":70}},"146":{"start":{"line":283,"column":16},"end":{"line":283,"column":57}},"147":{"start":{"line":285,"column":12},"end":{"line":285,"column":46}},"148":{"start":{"line":287,"column":46},"end":{"line":287,"column":70}},"149":{"start":{"line":288,"column":12},"end":{"line":288,"column":73}},"150":{"start":{"line":289,"column":12},"end":{"line":293,"column":13}},"151":{"start":{"line":291,"column":16},"end":{"line":291,"column":58}},"152":{"start":{"line":292,"column":16},"end":{"line":292,"column":22}},"153":{"start":{"line":297,"column":4},"end":{"line":301,"column":7}},"154":{"start":{"line":303,"column":4},"end":{"line":303,"column":45}},"155":{"start":{"line":305,"column":0},"end":{"line":305,"column":42}},"156":{"start":{"line":306,"column":21},"end":{"line":319,"column":1}},"157":{"start":{"line":307,"column":4},"end":{"line":318,"column":11}},"158":{"start":{"line":308,"column":21},"end":{"line":308,"column":40}},"159":{"start":{"line":309,"column":8},"end":{"line":316,"column":9}},"160":{"start":{"line":310,"column":12},"end":{"line":315,"column":13}},"161":{"start":{"line":313,"column":16},"end":{"line":313,"column":45}},"162":{"start":{"line":314,"column":16},"end":{"line":314,"column":27}},"163":{"start":{"line":317,"column":8},"end":{"line":317,"column":31}},"164":{"start":{"line":320,"column":0},"end":{"line":320,"column":36}},"165":{"start":{"line":322,"column":23},"end":{"line":322,"column":70}},"166":{"start":{"line":323,"column":16},"end":{"line":325,"column":49}},"167":{"start":{"line":326,"column":26},"end":{"line":328,"column":27}},"168":{"start":{"line":329,"column":4},"end":{"line":329,"column":54}},"169":{"start":{"line":331,"column":0},"end":{"line":331,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"zipWithIndex","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":27},"end":{"line":11,"column":1}},"line":9},"2":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":19},"end":{"line":10,"column":20}},"loc":{"start":{"line":10,"column":29},"end":{"line":10,"column":35}},"line":10},"3":{"name":"dropUntil","decl":{"start":{"line":13,"column":9},"end":{"line":13,"column":18}},"loc":{"start":{"line":13,"column":32},"end":{"line":20,"column":1}},"line":13},"4":{"name":"decompose","decl":{"start":{"line":22,"column":9},"end":{"line":22,"column":18}},"loc":{"start":{"line":22,"column":41},"end":{"line":31,"column":1}},"line":22},"5":{"name":"separatePrefix","decl":{"start":{"line":33,"column":9},"end":{"line":33,"column":23}},"loc":{"start":{"line":33,"column":53},"end":{"line":49,"column":1}},"line":33},"6":{"name":"frontGroupings","decl":{"start":{"line":51,"column":9},"end":{"line":51,"column":23}},"loc":{"start":{"line":51,"column":38},"end":{"line":69,"column":1}},"line":51},"7":{"name":"(anonymous_7)","decl":{"start":{"line":53,"column":66},"end":{"line":53,"column":67}},"loc":{"start":{"line":53,"column":73},"end":{"line":53,"column":83}},"line":53},"8":{"name":"(anonymous_8)","decl":{"start":{"line":58,"column":16},"end":{"line":58,"column":17}},"loc":{"start":{"line":58,"column":26},"end":{"line":58,"column":56}},"line":58},"9":{"name":"(anonymous_9)","decl":{"start":{"line":59,"column":17},"end":{"line":59,"column":18}},"loc":{"start":{"line":59,"column":29},"end":{"line":67,"column":5}},"line":59},"10":{"name":"(anonymous_10)","decl":{"start":{"line":68,"column":30},"end":{"line":68,"column":31}},"loc":{"start":{"line":68,"column":37},"end":{"line":68,"column":41}},"line":68},"11":{"name":"backGroupings","decl":{"start":{"line":71,"column":9},"end":{"line":71,"column":22}},"loc":{"start":{"line":71,"column":37},"end":{"line":89,"column":1}},"line":71},"12":{"name":"(anonymous_12)","decl":{"start":{"line":73,"column":65},"end":{"line":73,"column":66}},"loc":{"start":{"line":73,"column":72},"end":{"line":73,"column":89}},"line":73},"13":{"name":"(anonymous_13)","decl":{"start":{"line":78,"column":16},"end":{"line":78,"column":17}},"loc":{"start":{"line":78,"column":26},"end":{"line":78,"column":55}},"line":78},"14":{"name":"(anonymous_14)","decl":{"start":{"line":79,"column":17},"end":{"line":79,"column":18}},"loc":{"start":{"line":79,"column":29},"end":{"line":87,"column":5}},"line":79},"15":{"name":"(anonymous_15)","decl":{"start":{"line":88,"column":52},"end":{"line":88,"column":53}},"loc":{"start":{"line":88,"column":59},"end":{"line":88,"column":63}},"line":88},"16":{"name":"middleGroupings","decl":{"start":{"line":91,"column":9},"end":{"line":91,"column":24}},"loc":{"start":{"line":91,"column":57},"end":{"line":97,"column":1}},"line":91},"17":{"name":"groupByIgnoringDigits","decl":{"start":{"line":99,"column":9},"end":{"line":99,"column":30}},"loc":{"start":{"line":99,"column":60},"end":{"line":121,"column":1}},"line":99},"18":{"name":"(anonymous_18)","decl":{"start":{"line":102,"column":27},"end":{"line":102,"column":28}},"loc":{"start":{"line":102,"column":34},"end":{"line":102,"column":41}},"line":102},"19":{"name":"(anonymous_19)","decl":{"start":{"line":103,"column":28},"end":{"line":103,"column":29}},"loc":{"start":{"line":103,"column":35},"end":{"line":103,"column":49}},"line":103},"20":{"name":"(anonymous_20)","decl":{"start":{"line":119,"column":29},"end":{"line":119,"column":30}},"loc":{"start":{"line":119,"column":36},"end":{"line":119,"column":59}},"line":119},"21":{"name":"splitIntoRanges","decl":{"start":{"line":144,"column":9},"end":{"line":144,"column":24}},"loc":{"start":{"line":146,"column":43},"end":{"line":304,"column":1}},"line":146},"22":{"name":"(anonymous_22)","decl":{"start":{"line":151,"column":34},"end":{"line":151,"column":35}},"loc":{"start":{"line":151,"column":47},"end":{"line":159,"column":5}},"line":151},"23":{"name":"(anonymous_23)","decl":{"start":{"line":152,"column":58},"end":{"line":152,"column":59}},"loc":{"start":{"line":152,"column":72},"end":{"line":152,"column":105}},"line":152},"24":{"name":"(anonymous_24)","decl":{"start":{"line":160,"column":18},"end":{"line":160,"column":19}},"loc":{"start":{"line":160,"column":27},"end":{"line":160,"column":90}},"line":160},"25":{"name":"(anonymous_25)","decl":{"start":{"line":162,"column":20},"end":{"line":162,"column":21}},"loc":{"start":{"line":162,"column":29},"end":{"line":162,"column":110}},"line":162},"26":{"name":"(anonymous_26)","decl":{"start":{"line":306,"column":21},"end":{"line":306,"column":22}},"loc":{"start":{"line":306,"column":34},"end":{"line":319,"column":1}},"line":306},"27":{"name":"(anonymous_27)","decl":{"start":{"line":307,"column":26},"end":{"line":307,"column":27}},"loc":{"start":{"line":307,"column":42},"end":{"line":318,"column":5}},"line":307},"28":{"name":"roundPayout","decl":{"start":{"line":321,"column":9},"end":{"line":321,"column":20}},"loc":{"start":{"line":321,"column":39},"end":{"line":330,"column":1}},"line":321}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},"type":"if","locations":[{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},{"start":{"line":15,"column":8},"end":{"line":17,"column":9}}],"line":15},"4":{"loc":{"start":{"line":38,"column":8},"end":{"line":42,"column":18}},"type":"if","locations":[{"start":{"line":38,"column":8},"end":{"line":42,"column":18}},{"start":{"line":38,"column":8},"end":{"line":42,"column":18}}],"line":38},"5":{"loc":{"start":{"line":54,"column":4},"end":{"line":56,"column":5}},"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":56,"column":5}},{"start":{"line":54,"column":4},"end":{"line":56,"column":5}}],"line":54},"6":{"loc":{"start":{"line":74,"column":4},"end":{"line":76,"column":5}},"type":"if","locations":[{"start":{"line":74,"column":4},"end":{"line":76,"column":5}},{"start":{"line":74,"column":4},"end":{"line":76,"column":5}}],"line":74},"7":{"loc":{"start":{"line":101,"column":4},"end":{"line":120,"column":5}},"type":"if","locations":[{"start":{"line":101,"column":4},"end":{"line":120,"column":5}},{"start":{"line":101,"column":4},"end":{"line":120,"column":5}}],"line":101},"8":{"loc":{"start":{"line":101,"column":8},"end":{"line":104,"column":38}},"type":"binary-expr","locations":[{"start":{"line":101,"column":8},"end":{"line":101,"column":21}},{"start":{"line":102,"column":9},"end":{"line":102,"column":42}},{"start":{"line":103,"column":12},"end":{"line":103,"column":50}},{"start":{"line":104,"column":12},"end":{"line":104,"column":37}}],"line":101},"9":{"loc":{"start":{"line":107,"column":9},"end":{"line":120,"column":5}},"type":"if","locations":[{"start":{"line":107,"column":9},"end":{"line":120,"column":5}},{"start":{"line":107,"column":9},"end":{"line":120,"column":5}}],"line":107},"10":{"loc":{"start":{"line":147,"column":4},"end":{"line":149,"column":5}},"type":"if","locations":[{"start":{"line":147,"column":4},"end":{"line":149,"column":5}},{"start":{"line":147,"column":4},"end":{"line":149,"column":5}}],"line":147},"11":{"loc":{"start":{"line":154,"column":12},"end":{"line":156,"column":27}},"type":"cond-expr","locations":[{"start":{"line":155,"column":18},"end":{"line":155,"column":62}},{"start":{"line":156,"column":18},"end":{"line":156,"column":27}}],"line":154},"12":{"loc":{"start":{"line":171,"column":4},"end":{"line":185,"column":5}},"type":"if","locations":[{"start":{"line":171,"column":4},"end":{"line":185,"column":5}},{"start":{"line":171,"column":4},"end":{"line":185,"column":5}}],"line":171},"13":{"loc":{"start":{"line":191,"column":41},"end":{"line":191,"column":98}},"type":"binary-expr","locations":[{"start":{"line":191,"column":41},"end":{"line":191,"column":92}},{"start":{"line":191,"column":96},"end":{"line":191,"column":98}}],"line":191},"14":{"loc":{"start":{"line":203,"column":12},"end":{"line":212,"column":13}},"type":"if","locations":[{"start":{"line":203,"column":12},"end":{"line":212,"column":13}},{"start":{"line":203,"column":12},"end":{"line":212,"column":13}}],"line":203},"15":{"loc":{"start":{"line":215,"column":22},"end":{"line":215,"column":72}},"type":"cond-expr","locations":[{"start":{"line":215,"column":36},"end":{"line":215,"column":52}},{"start":{"line":215,"column":55},"end":{"line":215,"column":72}}],"line":215},"16":{"loc":{"start":{"line":217,"column":60},"end":{"line":217,"column":118}},"type":"cond-expr","locations":[{"start":{"line":217,"column":74},"end":{"line":217,"column":94}},{"start":{"line":217,"column":97},"end":{"line":217,"column":118}}],"line":217},"17":{"loc":{"start":{"line":220,"column":12},"end":{"line":223,"column":13}},"type":"if","locations":[{"start":{"line":220,"column":12},"end":{"line":223,"column":13}},{"start":{"line":220,"column":12},"end":{"line":223,"column":13}}],"line":220},"18":{"loc":{"start":{"line":224,"column":12},"end":{"line":235,"column":13}},"type":"if","locations":[{"start":{"line":224,"column":12},"end":{"line":235,"column":13}},{"start":{"line":224,"column":12},"end":{"line":235,"column":13}}],"line":224},"19":{"loc":{"start":{"line":224,"column":16},"end":{"line":229,"column":85}},"type":"binary-expr","locations":[{"start":{"line":224,"column":17},"end":{"line":224,"column":29}},{"start":{"line":225,"column":16},"end":{"line":225,"column":42}},{"start":{"line":226,"column":16},"end":{"line":226,"column":79}},{"start":{"line":227,"column":17},"end":{"line":227,"column":28}},{"start":{"line":228,"column":20},"end":{"line":228,"column":46}},{"start":{"line":229,"column":20},"end":{"line":229,"column":84}}],"line":224},"20":{"loc":{"start":{"line":232,"column":16},"end":{"line":234,"column":17}},"type":"if","locations":[{"start":{"line":232,"column":16},"end":{"line":234,"column":17}},{"start":{"line":232,"column":16},"end":{"line":234,"column":17}}],"line":232},"21":{"loc":{"start":{"line":237,"column":12},"end":{"line":245,"column":13}},"type":"if","locations":[{"start":{"line":237,"column":12},"end":{"line":245,"column":13}},{"start":{"line":237,"column":12},"end":{"line":245,"column":13}}],"line":237},"22":{"loc":{"start":{"line":246,"column":12},"end":{"line":271,"column":13}},"type":"if","locations":[{"start":{"line":246,"column":12},"end":{"line":271,"column":13}},{"start":{"line":246,"column":12},"end":{"line":271,"column":13}}],"line":246},"23":{"loc":{"start":{"line":246,"column":16},"end":{"line":249,"column":31}},"type":"binary-expr","locations":[{"start":{"line":246,"column":16},"end":{"line":246,"column":57}},{"start":{"line":247,"column":16},"end":{"line":247,"column":43}},{"start":{"line":248,"column":16},"end":{"line":248,"column":33}},{"start":{"line":249,"column":16},"end":{"line":249,"column":31}}],"line":246},"24":{"loc":{"start":{"line":251,"column":16},"end":{"line":268,"column":17}},"type":"if","locations":[{"start":{"line":251,"column":16},"end":{"line":268,"column":17}},{"start":{"line":251,"column":16},"end":{"line":268,"column":17}}],"line":251},"25":{"loc":{"start":{"line":251,"column":20},"end":{"line":251,"column":78}},"type":"binary-expr","locations":[{"start":{"line":251,"column":20},"end":{"line":251,"column":48}},{"start":{"line":251,"column":52},"end":{"line":251,"column":78}}],"line":251},"26":{"loc":{"start":{"line":278,"column":12},"end":{"line":284,"column":13}},"type":"if","locations":[{"start":{"line":278,"column":12},"end":{"line":284,"column":13}},{"start":{"line":278,"column":12},"end":{"line":284,"column":13}}],"line":278},"27":{"loc":{"start":{"line":289,"column":12},"end":{"line":293,"column":13}},"type":"if","locations":[{"start":{"line":289,"column":12},"end":{"line":293,"column":13}},{"start":{"line":289,"column":12},"end":{"line":293,"column":13}}],"line":289},"28":{"loc":{"start":{"line":309,"column":8},"end":{"line":316,"column":9}},"type":"if","locations":[{"start":{"line":309,"column":8},"end":{"line":316,"column":9}},{"start":{"line":309,"column":8},"end":{"line":316,"column":9}}],"line":309},"29":{"loc":{"start":{"line":310,"column":12},"end":{"line":315,"column":13}},"type":"if","locations":[{"start":{"line":310,"column":12},"end":{"line":315,"column":13}},{"start":{"line":310,"column":12},"end":{"line":315,"column":13}}],"line":310},"30":{"loc":{"start":{"line":310,"column":16},"end":{"line":312,"column":44}},"type":"binary-expr","locations":[{"start":{"line":310,"column":17},"end":{"line":310,"column":49}},{"start":{"line":311,"column":16},"end":{"line":311,"column":60}},{"start":{"line":312,"column":16},"end":{"line":312,"column":44}}],"line":310},"31":{"loc":{"start":{"line":323,"column":16},"end":{"line":325,"column":49}},"type":"cond-expr","locations":[{"start":{"line":324,"column":10},"end":{"line":324,"column":32}},{"start":{"line":325,"column":10},"end":{"line":325,"column":49}}],"line":323},"32":{"loc":{"start":{"line":326,"column":26},"end":{"line":328,"column":27}},"type":"cond-expr","locations":[{"start":{"line":327,"column":10},"end":{"line":327,"column":44}},{"start":{"line":328,"column":10},"end":{"line":328,"column":27}}],"line":326}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":18,"7":80,"8":1,"9":18,"10":18,"11":31,"12":16,"13":2,"14":1,"15":29,"16":29,"17":29,"18":141,"19":141,"20":141,"21":29,"22":1,"23":12,"24":12,"25":12,"26":12,"27":12,"28":24,"29":13,"30":11,"31":12,"32":1,"33":9,"34":9,"35":14,"36":9,"37":1,"38":8,"39":34,"40":26,"41":26,"42":26,"43":26,"44":26,"45":58,"46":26,"47":8,"48":34,"49":1,"50":9,"51":9,"52":17,"53":9,"54":1,"55":8,"56":31,"57":23,"58":23,"59":23,"60":23,"61":23,"62":21,"63":23,"64":8,"65":31,"66":1,"67":9,"68":9,"69":17,"70":9,"71":1,"72":12,"73":12,"74":15,"75":4,"76":2,"77":10,"78":1,"79":1,"80":1,"81":8,"82":1,"83":9,"84":9,"85":9,"86":9,"87":9,"88":114,"89":1,"90":18,"91":0,"92":18,"93":18,"94":21,"95":34,"96":21,"97":18,"98":4999,"99":18,"100":18,"101":21,"102":18,"103":18,"104":18,"105":4,"106":4,"107":4,"108":14,"109":14,"110":21,"111":21,"112":21,"113":21,"114":21,"115":21,"116":21,"117":21,"118":4985,"119":0,"120":0,"121":0,"122":4985,"123":4985,"124":4985,"125":4985,"126":4985,"127":0,"128":4985,"129":2472,"130":2472,"131":0,"132":4985,"133":4985,"134":6,"135":6,"136":6,"137":4979,"138":14,"139":0,"140":14,"141":14,"142":14,"143":4965,"144":4965,"145":0,"146":4965,"147":4965,"148":4965,"149":4965,"150":4965,"151":0,"152":0,"153":14,"154":14,"155":1,"156":1,"157":20,"158":5075,"159":5075,"160":5055,"161":39,"162":39,"163":5036,"164":1,"165":9909,"166":9909,"167":9909,"168":9909,"169":1},"f":{"0":1,"1":18,"2":80,"3":18,"4":29,"5":12,"6":9,"7":14,"8":34,"9":26,"10":34,"11":9,"12":17,"13":31,"14":23,"15":31,"16":9,"17":12,"18":15,"19":4,"20":114,"21":18,"22":21,"23":34,"24":4999,"25":21,"26":20,"27":5075,"28":9909},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[16,15],"4":[13,11],"5":[1,8],"6":[1,8],"7":[2,10],"8":[12,11,2,2],"9":[1,9],"10":[0,18],"11":[21,0],"12":[4,14],"13":[21,13],"14":[0,4985],"15":[2253,2732],"16":[2253,2732],"17":[0,4985],"18":[2472,2513],"19":[4985,2732,2732,3665,2253,2253],"20":[0,2472],"21":[6,4979],"22":[14,4965],"23":[4979,4975,4975,4969],"24":[0,14],"25":[14,14],"26":[0,4965],"27":[0,4965],"28":[5055,20],"29":[39,5016],"30":[5055,5043,5054],"31":[9909,0],"32":[4949,4960]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CETCalculator.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CETCalculator.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAErC,sDAA4D;AAI5D,SAAgB,YAAY,CAAI,GAAQ;IACtC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAFD,oCAEC;AAED,SAAgB,SAAS,CAAI,IAAS,EAAE,KAAwB;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACtB;KACF;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAPD,8BAOC;AAED,SAAgB,SAAS,CACvB,GAAW,EACX,IAAY,EACZ,SAAiB;IAEjB,IAAI,aAAa,GAAG,GAAG,CAAC;IACxB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,OAAO,SAAS,GAAG,CAAC,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,aAAa,GAAG,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,SAAS,EAAE,CAAC;KACb;IACD,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAbD,8BAaC;AAED,SAAgB,cAAc,CAC5B,KAAa,EACb,GAAW,EACX,IAAY,EACZ,SAAiB;IAMjB,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAElD,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE;YACnC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACnC;;YAAM,MAAM;KACd;IAED,OAAO;QACL,YAAY;QACZ,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;QACpD,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;KACjD,CAAC;AACJ,CAAC;AAzBD,wCAyBC;AAED,SAAgB,cAAc,CAAC,MAAgB,EAAE,IAAY;IAC3D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,aAAa,GAAG,SAAS,CAC7B,YAAY,CAAC,cAAc,CAAC,EAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAClB,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACd;IACD,MAAM,SAAS,GAAG,aAAa;SAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SAChD,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAElD,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9C;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,SAAS,CAAC,CAAC;AAClE,CAAC;AAxBD,wCAwBC;AAED,SAAgB,aAAa,CAAC,MAAgB,EAAE,IAAY;IAC1D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,YAAY,GAAG,SAAS,CAC5B,YAAY,CAAC,cAAc,CAAC,EAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CACzB,CAAC;IAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;QAC7B,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;KACrB;IAED,MAAM,QAAQ,GAAG,YAAY;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/C,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAElD,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9C;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,CAAC;AA1BD,sCA0BC;AAED,SAAgB,eAAe,CAC7B,eAAuB,EACvB,aAAqB;IAErB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,OAAO,EAAE,eAAe,GAAG,aAAa,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;KAChC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AATD,0CASC;AAED,SAAgB,qBAAqB,CACnC,KAAa,EACb,GAAW,EACX,IAAY,EACZ,SAAiB;IAEjB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,cAAc,CAC7D,KAAK,EACL,GAAG,EACH,IAAI,EACJ,SAAS,CACV,CAAC;IAEF,IACE,KAAK,KAAK,GAAG;QACb,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;YACtC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,EAC5B;QACA,OAAO,CAAC,YAAY,CAAC,CAAC;KACvB;SAAM,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,GAAG,CAAC,EAAE;QAChD,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KACE,IAAI,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAC3C,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,EACpC,CAAC,EAAE,EACH;YACA,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;SACnC;QAED,OAAO,MAAM,CAAC;KACf;SAAM;QACL,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE5C,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;QAEjD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;KACtD;AACH,CAAC;AAxCD,sDAwCC;AAaD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAgB,eAAe,CAC7B,IAAY,EACZ,EAAU,EACV,UAAkB,EAAE,kBAAkB;AACtC,QAAgB,EAAE,kBAAkB;AACpC,eAAuB,EACvB,KAAmD,EACnD,iBAAqC;IAErC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,MAAM,iBAAiB,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;IAE3D,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAoB,EAAE;QAClE,MAAM,aAAa,GAAG,iBAAiB,CAAC,SAAS,CAC/C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAChD,CAAC;QAEF,OAAO;YACL,aAAa,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,WAAW;gBAC9C,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACb,aAAa;SACd,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAC5B,wBAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAEpD,MAAM,iBAAiB,GAAG,IAAI,sBAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,CAAC,GAAc,EAAE,EAAE,CACjC,sBAAS,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAS,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,uBAAuB;IACvB,MAAM,CAAC,IAAI,CAAC;QACV,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,qGAAqG;IACrG,IAAI,UAAU,KAAK,QAAQ,EAAE;QAC3B,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,uBAAuB;QACvB,MAAM,CAAC,IAAI,CAAC;YACV,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,6CAA6C;QAC7C,OAAO,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;KAC7B;IAED,IAAI,cAAc,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtC,wDAAwD;IACxD,OAAO,cAAc,GAAG,EAAE,EAAE;QAC1B,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAExE,6DAA6D;QAC7D,MAAM,wBAAwB,GAC5B,iBAAiB,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,aAAa,IAAI,EAAE,CAAC;QAE5D,gDAAgD;QAChD,IAAI,aAAa,GAAG,IAAI,sBAAS,CAC/B,WAAW,CACT,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EACxC,QAAQ,CACT,CAAC,QAAQ,EAAE,CACb,CAAC;QAEF,IAAI,wBAAwB,GAAG,cAAc,CAAC;QAE9C,MAAM,WAAW,GAAG,KAAK;aACtB,SAAS,CAAC,wBAAwB,CAAC;aACnC,EAAE,CAAC,aAAa,CAAC,CAAC;QAErB,6CAA6C;QAC7C,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,8BAA8B;QAE9E,OAAO,wBAAwB,GAAG,wBAAwB,EAAE;YAC1D,yBAAyB;YACzB,IAAI,EAAE,WAAW,GAAG,aAAa,EAAE;gBACjC,yEAAyE;gBACzE,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,KAAK,CAAC,IAAA,sBAAQ,EAAC,aAAa,CAAC,CAAC;oBACtC,SAAS,EAAE,wBAAwB;oBACnC,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;iBACxB,CAAC,CAAC;gBACH,cAAc,GAAG,EAAE,CAAC;gBACpB,MAAM;aACP;YAED,MAAM,iBAAiB,GAAG,aAAa;iBACpC,YAAY,EAAE;iBACd,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE5D,MAAM,uBAAuB,GAAG,IAAA,sBAAQ,EAAC,iBAAiB,CAAC,CAAC;YAE5D,MAAM,oBAAoB,GAAG,aAAa,CAAC,IAAI,CAC7C,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC3D,CAAC;YAEF,IAAI,qBAAqB,GAAG,KAAK,CAAC,mBAAmB,CACnD,oBAAoB,CACrB,CAAC;YAEF,mDAAmD;YACnD,IAAI,qBAAqB,GAAG,CAAC,EAAE;gBAC7B,iEAAiE;gBACjE,qBAAqB,GAAG,wBAAwB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aAC9D;YAED,IACE,CAAC,CAAC,WAAW;gBACX,qBAAqB,IAAI,CAAC;gBAC1B,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;gBAClE,CAAC,WAAW;oBACV,qBAAqB,IAAI,CAAC;oBAC1B,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,EACnE;gBACA,qBAAqB,GAAG,qBAAqB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC1D,8BAA8B;gBAC9B,IAAI,qBAAqB,GAAG,CAAC,EAAE;oBAC7B,qBAAqB,GAAG,wBAAwB,CAAC;iBAClD;aACF;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAEjE,IAAI,qBAAqB,IAAI,wBAAwB,EAAE;gBACrD,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,KAAK,CAAC,IAAA,sBAAQ,EAAC,aAAa,CAAC,CAAC;oBACtC,SAAS,EAAE,wBAAwB;oBACnC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAAC,CAAC,CAAC;iBAC9C,CAAC,CAAC;gBAEH,cAAc,GAAG,wBAAwB,CAAC;gBAC1C,MAAM;aACP;YAED,IACE,uBAAuB,GAAG,eAAe;gBACzC,uBAAuB,GAAG,CAAC;gBAC3B,WAAW,IAAI,EAAE;gBACjB,WAAW,GAAG,CAAC,CAAC,qBAAqB;cACrC;gBACA,IAAI,qBAAqB,GAAG,IAAI,IAAI,qBAAqB,GAAG,EAAE,EAAE;oBAC9D,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,KAAK,CAAC,IAAA,sBAAQ,EAAC,aAAa,CAAC,CAAC;wBACtC,SAAS,EAAE,wBAAwB;wBACnC,OAAO,EAAE,EAAE;qBACZ,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,CAAC,IAAI,CACT;wBACE,MAAM,EAAE,KAAK,CAAC,IAAA,sBAAQ,EAAC,aAAa,CAAC,CAAC;wBACtC,SAAS,EAAE,wBAAwB;wBACnC,OAAO,EAAE,qBAAqB;qBAC/B,EACD;wBACE,MAAM,EAAE,KAAK,CAAC,uBAAuB,CAAC;wBACtC,SAAS,EAAE,qBAAqB,GAAG,MAAM,CAAC,CAAC,CAAC;wBAC5C,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;qBACxB,CACF,CAAC;iBACH;gBAED,cAAc,GAAG,EAAE,CAAC;gBACpB,MAAM;aACP;YAED,MAAM,CAAC,IAAI,CAAC;gBACV,MAAM,EAAE,KAAK,CAAC,IAAA,sBAAQ,EAAC,aAAa,CAAC,CAAC;gBACtC,SAAS,EAAE,wBAAwB;gBACnC,OAAO,EAAE,qBAAqB;aAC/B,CAAC,CAAC;YAEH,2CAA2C;YAC3C,IAAI,WAAW,GAAG,CAAC,EAAE;gBACnB,gEAAgE;gBAChE,cAAc,GAAG,wBAAwB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACL,cAAc,GAAG,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aAC1C;YAED,aAAa,GAAG,iBAAiB,CAAC;YAElC,wDAAwD;YACxD,MAAM,yBAAyB,GAAG,wBAAwB,CAAC;YAC3D,wBAAwB,GAAG,qBAAqB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAE7D,IAAI,wBAAwB,IAAI,yBAAyB,EAAE;gBACzD,yDAAyD;gBACzD,cAAc,GAAG,wBAAwB,CAAC;gBAC1C,MAAM;aACP;SACF;KACF;IAED,uBAAuB;IACvB,MAAM,CAAC,IAAI,CAAC;QACV,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;KACZ,CAAC,CAAC;IAEH,6CAA6C;IAC7C,OAAO,IAAA,oBAAY,EAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AA1ND,0CA0NC;AAEM,MAAM,YAAY,GAAG,CAAC,OAAoB,EAAe,EAAE;IAChE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAgB,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,EAAE;YACR,IACE,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,SAAS;gBAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;gBAC/C,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAC5B;gBACA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC7B,OAAO,GAAG,CAAC;aACZ;SACF;QAED,OAAO,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAhBW,QAAA,YAAY,gBAgBvB;AAEF,SAAgB,WAAW,CAAC,MAAiB,EAAE,QAAgB;IAC7D,MAAM,UAAU,GAAG,IAAI,sBAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtB,OAAO,IAAA,sBAAQ,EAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAXD,kCAWC","sourcesContent":["import BigNumber from 'bignumber.js';\n\nimport { BigIntMath, toBigInt } from '../utils/BigIntUtils';\nimport { HyperbolaPayoutCurve } from './HyperbolaPayoutCurve';\nimport { PolynomialPayoutCurve } from './PolynomialPayoutCurve';\n\nexport function zipWithIndex<T>(arr: T[]): [T, number][] {\n return arr.map((a, i) => [a, i]);\n}\n\nexport function dropUntil<T>(data: T[], check: (_: T) => boolean): T[] {\n for (let i = 0; i < data.length; i++) {\n if (check(data[i])) {\n return data.slice(i);\n }\n }\n return [];\n}\n\nexport function decompose(\n num: bigint,\n base: number,\n numDigits: number,\n): number[] {\n let currentNumber = num;\n const digits = [];\n while (numDigits > 0) {\n digits.push(Number(currentNumber % BigInt(base)));\n currentNumber = currentNumber / BigInt(base);\n numDigits--;\n }\n return digits.reverse();\n}\n\nexport function separatePrefix(\n start: bigint,\n end: bigint,\n base: number,\n numDigits: number,\n): {\n prefixDigits: number[];\n startDigits: number[];\n endDigits: number[];\n} {\n const startDigits = decompose(start, base, numDigits);\n const endDigits = decompose(end, base, numDigits);\n\n const prefixDigits: number[] = [];\n for (let i = 0; i < startDigits.length; i++) {\n if (startDigits[i] === endDigits[i]) {\n prefixDigits.push(startDigits[i]);\n } else break;\n }\n\n return {\n prefixDigits,\n startDigits: startDigits.splice(prefixDigits.length),\n endDigits: endDigits.splice(prefixDigits.length),\n };\n}\n\nexport function frontGroupings(digits: number[], base: number): number[][] {\n const digitsReversed = Array.from(digits).reverse();\n const nonZeroDigits = dropUntil(\n zipWithIndex(digitsReversed),\n (a) => a[0] !== 0,\n );\n\n if (nonZeroDigits.length === 0) {\n return [[0]];\n }\n const fromFront = nonZeroDigits\n .filter((_, i) => i !== nonZeroDigits.length - 1)\n .flatMap(([d, i]) => {\n const fixedDigits = Array.from(digits);\n fixedDigits.length = fixedDigits.length - (i + 1);\n\n const result: number[][] = [];\n for (let n = d + 1; n < base; n++) {\n result.push([...Array.from(fixedDigits), n]);\n }\n return result;\n });\n\n return [nonZeroDigits.map((a) => a[0]).reverse(), ...fromFront];\n}\n\nexport function backGroupings(digits: number[], base: number): number[][] {\n const digitsReversed = Array.from(digits).reverse();\n const nonMaxDigits = dropUntil(\n zipWithIndex(digitsReversed),\n (a) => a[0] !== base - 1,\n );\n\n if (nonMaxDigits.length === 0) {\n return [[base - 1]];\n }\n\n const fromBack = nonMaxDigits\n .filter((_, i) => i !== nonMaxDigits.length - 1)\n .flatMap(([d, i]) => {\n const fixedDigits = Array.from(digits);\n fixedDigits.length = fixedDigits.length - (i + 1);\n\n const result: number[][] = [];\n for (let n = d - 1; n >= 0; n--) {\n result.push([...Array.from(fixedDigits), n]);\n }\n\n return result;\n });\n\n return [...fromBack.reverse(), nonMaxDigits.map((a) => a[0]).reverse()];\n}\n\nexport function middleGroupings(\n firstDigitStart: number,\n firstDigitEnd: number,\n): number[][] {\n const result = [];\n while (++firstDigitStart < firstDigitEnd) {\n result.push([firstDigitStart]);\n }\n return result;\n}\n\nexport function groupByIgnoringDigits(\n start: bigint,\n end: bigint,\n base: number,\n numDigits: number,\n): number[][] {\n const { prefixDigits, startDigits, endDigits } = separatePrefix(\n start,\n end,\n base,\n numDigits,\n );\n\n if (\n start === end ||\n (startDigits.every((n) => n === 0) &&\n endDigits.every((n) => n === base - 1) &&\n prefixDigits.length !== 0)\n ) {\n return [prefixDigits];\n } else if (prefixDigits.length === numDigits - 1) {\n const result = [];\n for (\n let i = startDigits[startDigits.length - 1];\n i <= endDigits[endDigits.length - 1];\n i++\n ) {\n result.push([...prefixDigits, i]);\n }\n\n return result;\n } else {\n const front = frontGroupings(startDigits, base);\n const middle = middleGroupings(startDigits[0], endDigits[0]);\n const back = backGroupings(endDigits, base);\n\n const groupings = [...front, ...middle, ...back];\n\n return groupings.map((g) => [...prefixDigits, ...g]);\n }\n}\n\nexport interface RoundingInterval {\n beginInterval: bigint;\n roundingMod: bigint;\n}\n\nexport type CETPayout = {\n indexFrom: bigint;\n indexTo: bigint;\n payout: bigint;\n};\n\n/**\n * Performs optimized evaluation and rounding for strictly monotonic hyperbolas on intervals (from, to)\n * e.g. hyperbolas with the form b = c = 0\n *\n * The next start of a payout range is determined by finding the outcome at the next mid-rounding payout.\n * Uses an inverse function of the hyperbola to find the outcome.\n *\n * Optimizes rounding from O(to - from) to O(totalCollateral / rounding)\n *\n *\n * Evaluates and rounds a payout_function equivalent to:\n *\n * payout_function_v0\n * num_pieces: 1\n * endpoint_0: from\n * endpoint_payout_0: fromPayout\n * extra_precision_0: 0\n * payout_curve_piece: HyperbolaPayoutCurve\n * endpoint_1: to\n * endpoint_payout_1: toPayout\n */\nexport function splitIntoRanges(\n from: bigint,\n to: bigint,\n fromPayout: bigint, // endpoint_payout\n toPayout: bigint, // endpoint_payout\n totalCollateral: bigint,\n curve: HyperbolaPayoutCurve | PolynomialPayoutCurve,\n roundingIntervals: RoundingInterval[],\n): CETPayout[] {\n if (to - from <= 0) {\n throw new Error('`to` must be strictly greater than `from`');\n }\n\n const reversedIntervals = [...roundingIntervals].reverse();\n\n const getRoundingForOutcome = (outcome: bigint): [bigint, number] => {\n const roundingIndex = reversedIntervals.findIndex(\n (interval) => interval.beginInterval <= outcome,\n );\n\n return [\n roundingIndex !== -1\n ? reversedIntervals[roundingIndex].roundingMod\n : BigInt(1),\n roundingIndex,\n ];\n };\n\n const clamp = (val: bigint) =>\n BigIntMath.clamp(BigInt(0), val, totalCollateral);\n\n const totalCollateralBN = new BigNumber(totalCollateral.toString());\n const clampBN = (val: BigNumber) =>\n BigNumber.max(0, BigNumber.min(val, totalCollateralBN));\n\n const result: CETPayout[] = [];\n\n // outcome = endpoint_0\n result.push({\n payout: fromPayout,\n indexFrom: from,\n indexTo: from,\n });\n\n // In the case of a constant payout curve (fromPayout === toPayout), we can skip the range evaluation\n if (fromPayout === toPayout) {\n result.push({\n payout: toPayout,\n indexFrom: from,\n indexTo: to,\n });\n // outcome = endpoint_1\n result.push({\n payout: toPayout,\n indexFrom: to,\n indexTo: to,\n });\n // merge neighbouring ranges with same payout\n return mergePayouts(result);\n }\n\n let currentOutcome = from + BigInt(1);\n\n // iterate over entire range of outcomes from [from, to]\n while (currentOutcome < to) {\n const [rounding, roundingIndex] = getRoundingForOutcome(currentOutcome);\n\n // either the next rounding interval, or the end of the range\n const nextFirstRoundingOutcome =\n reversedIntervals[roundingIndex - 1]?.beginInterval || to;\n\n // temporary variable to hold the current payout\n let currentPayout = new BigNumber(\n roundPayout(\n clampBN(curve.getPayout(currentOutcome)),\n rounding,\n ).toString(),\n );\n\n let currentMidRoundedOutcome = currentOutcome;\n\n const isAscending = curve\n .getPayout(nextFirstRoundingOutcome)\n .gt(currentPayout);\n\n // Add loop counter to prevent infinite loops\n let loopCounter = 0;\n const maxIterations = Number(to - from) + 1000; // Allow some extra iterations\n\n while (currentMidRoundedOutcome < nextFirstRoundingOutcome) {\n // Prevent infinite loops\n if (++loopCounter > maxIterations) {\n // Breaking out of potential infinite loop - add remaining range and exit\n result.push({\n payout: clamp(toBigInt(currentPayout)),\n indexFrom: currentMidRoundedOutcome,\n indexTo: to - BigInt(1),\n });\n currentOutcome = to;\n break;\n }\n\n const nextRoundedPayout = currentPayout\n .integerValue()\n .plus(isAscending ? Number(rounding) : -Number(rounding));\n\n const nextRoundedPayoutBigInt = toBigInt(nextRoundedPayout);\n\n const nextMidRoundedPayout = currentPayout.plus(\n isAscending ? Number(rounding) / 2 : -Number(rounding) / 2,\n );\n\n let nextMidRoundedOutcome = curve.getOutcomeForPayout(\n nextMidRoundedPayout,\n );\n\n // Handle invalid outcomes from getOutcomeForPayout\n if (nextMidRoundedOutcome < 0) {\n // If getOutcomeForPayout returns invalid value, advance manually\n nextMidRoundedOutcome = currentMidRoundedOutcome + BigInt(1);\n }\n\n if (\n (!isAscending &&\n nextMidRoundedOutcome >= 0 &&\n curve.getPayout(nextMidRoundedOutcome).lt(nextMidRoundedPayout)) ||\n (isAscending &&\n nextMidRoundedOutcome >= 0 &&\n curve.getPayout(nextMidRoundedOutcome).gte(nextMidRoundedPayout))\n ) {\n nextMidRoundedOutcome = nextMidRoundedOutcome - BigInt(1);\n // Ensure we don't go negative\n if (nextMidRoundedOutcome < 0) {\n nextMidRoundedOutcome = currentMidRoundedOutcome;\n }\n }\n\n const nextOutcome = curve.getOutcomeForPayout(nextRoundedPayout);\n\n if (nextMidRoundedOutcome >= nextFirstRoundingOutcome) {\n result.push({\n payout: clamp(toBigInt(currentPayout)),\n indexFrom: currentMidRoundedOutcome,\n indexTo: nextFirstRoundingOutcome - BigInt(1),\n });\n\n currentOutcome = nextFirstRoundingOutcome;\n break;\n }\n\n if (\n nextRoundedPayoutBigInt > totalCollateral ||\n nextRoundedPayoutBigInt < 0 ||\n nextOutcome >= to ||\n nextOutcome < 0 // undefined on curve\n ) {\n if (nextMidRoundedOutcome < from || nextMidRoundedOutcome > to) {\n result.push({\n payout: clamp(toBigInt(currentPayout)),\n indexFrom: currentMidRoundedOutcome,\n indexTo: to,\n });\n } else {\n result.push(\n {\n payout: clamp(toBigInt(currentPayout)),\n indexFrom: currentMidRoundedOutcome,\n indexTo: nextMidRoundedOutcome,\n },\n {\n payout: clamp(nextRoundedPayoutBigInt),\n indexFrom: nextMidRoundedOutcome + BigInt(1),\n indexTo: to - BigInt(1),\n },\n );\n }\n\n currentOutcome = to;\n break;\n }\n\n result.push({\n payout: clamp(toBigInt(currentPayout)),\n indexFrom: currentMidRoundedOutcome,\n indexTo: nextMidRoundedOutcome,\n });\n\n // Handle case where nextOutcome is invalid\n if (nextOutcome < 0) {\n // Advance manually if getOutcomeForPayout returns invalid value\n currentOutcome = currentMidRoundedOutcome + BigInt(1);\n } else {\n currentOutcome = nextOutcome + BigInt(1);\n }\n\n currentPayout = nextRoundedPayout;\n\n // Additional safety check: ensure we're making progress\n const previousMidRoundedOutcome = currentMidRoundedOutcome;\n currentMidRoundedOutcome = nextMidRoundedOutcome + BigInt(1);\n\n if (currentMidRoundedOutcome <= previousMidRoundedOutcome) {\n // No progress detected in splitIntoRanges loop, breaking\n currentOutcome = nextFirstRoundingOutcome;\n break;\n }\n }\n }\n\n // outcome = endpoint_1\n result.push({\n payout: toPayout,\n indexFrom: to,\n indexTo: to,\n });\n\n // merge neighbouring ranges with same payout\n return mergePayouts(result);\n}\n\nexport const mergePayouts = (payouts: CETPayout[]): CETPayout[] => {\n return payouts.reduce((acc: CETPayout[], range) => {\n const prev = acc[acc.length - 1];\n if (prev) {\n if (\n (prev.indexTo === range.indexFrom ||\n prev.indexTo + BigInt(1) === range.indexFrom) &&\n prev.payout === range.payout\n ) {\n prev.indexTo = range.indexTo;\n return acc;\n }\n }\n\n return [...acc, range];\n }, []);\n};\n\nexport function roundPayout(payout: BigNumber, rounding: bigint): bigint {\n const roundingBN = new BigNumber(rounding.toString());\n const mod = payout.gte(0)\n ? payout.mod(roundingBN)\n : payout.mod(roundingBN).plus(roundingBN);\n\n const roundedPayout = mod.gte(roundingBN.dividedBy(2))\n ? payout.plus(roundingBN).minus(mod)\n : payout.minus(mod);\n\n return toBigInt(roundedPayout);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d96c87d7cf574a0b53e97ede94b42b35f89cc064","contentHash":"769ef21ca5b8ca6aa5fc9ef614079758aff5450dccf3f24601670ed4f4e41978"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/BigIntUtils.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/BigIntUtils.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"2":{"start":{"line":6,"column":8},"end":{"line":8,"column":9}},"3":{"start":{"line":7,"column":12},"end":{"line":7,"column":24}},"4":{"start":{"line":9,"column":8},"end":{"line":11,"column":9}},"5":{"start":{"line":10,"column":12},"end":{"line":10,"column":29}},"6":{"start":{"line":12,"column":18},"end":{"line":12,"column":27}},"7":{"start":{"line":13,"column":8},"end":{"line":17,"column":9}},"8":{"start":{"line":13,"column":21},"end":{"line":13,"column":22}},"9":{"start":{"line":14,"column":12},"end":{"line":16,"column":13}},"10":{"start":{"line":15,"column":16},"end":{"line":15,"column":32}},"11":{"start":{"line":18,"column":8},"end":{"line":18,"column":19}},"12":{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},"13":{"start":{"line":22,"column":12},"end":{"line":22,"column":24}},"14":{"start":{"line":24,"column":8},"end":{"line":26,"column":9}},"15":{"start":{"line":25,"column":12},"end":{"line":25,"column":29}},"16":{"start":{"line":27,"column":18},"end":{"line":27,"column":27}},"17":{"start":{"line":28,"column":8},"end":{"line":32,"column":9}},"18":{"start":{"line":28,"column":21},"end":{"line":28,"column":22}},"19":{"start":{"line":29,"column":12},"end":{"line":31,"column":13}},"20":{"start":{"line":30,"column":16},"end":{"line":30,"column":32}},"21":{"start":{"line":33,"column":8},"end":{"line":33,"column":19}},"22":{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},"23":{"start":{"line":37,"column":12},"end":{"line":37,"column":29}},"24":{"start":{"line":39,"column":8},"end":{"line":41,"column":9}},"25":{"start":{"line":40,"column":12},"end":{"line":40,"column":30}},"26":{"start":{"line":42,"column":8},"end":{"line":42,"column":25}},"27":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"28":{"start":{"line":46,"column":12},"end":{"line":46,"column":26}},"29":{"start":{"line":48,"column":8},"end":{"line":48,"column":21}},"30":{"start":{"line":51,"column":8},"end":{"line":51,"column":49}},"31":{"start":{"line":54,"column":0},"end":{"line":54,"column":32}},"32":{"start":{"line":56,"column":4},"end":{"line":56,"column":49}},"33":{"start":{"line":58,"column":0},"end":{"line":58,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":4},"end":{"line":5,"column":5}},"loc":{"start":{"line":5,"column":26},"end":{"line":19,"column":5}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":26},"end":{"line":34,"column":5}},"line":20},"2":{"name":"(anonymous_2)","decl":{"start":{"line":35,"column":4},"end":{"line":35,"column":5}},"loc":{"start":{"line":35,"column":23},"end":{"line":43,"column":5}},"line":35},"3":{"name":"(anonymous_3)","decl":{"start":{"line":44,"column":4},"end":{"line":44,"column":5}},"loc":{"start":{"line":44,"column":22},"end":{"line":49,"column":5}},"line":44},"4":{"name":"(anonymous_4)","decl":{"start":{"line":50,"column":4},"end":{"line":50,"column":5}},"loc":{"start":{"line":50,"column":32},"end":{"line":52,"column":5}},"line":50},"5":{"name":"toBigInt","decl":{"start":{"line":55,"column":9},"end":{"line":55,"column":17}},"loc":{"start":{"line":55,"column":23},"end":{"line":57,"column":1}},"line":55}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":8},"end":{"line":8,"column":9}},"type":"if","locations":[{"start":{"line":6,"column":8},"end":{"line":8,"column":9}},{"start":{"line":6,"column":8},"end":{"line":8,"column":9}}],"line":6},"1":{"loc":{"start":{"line":9,"column":8},"end":{"line":11,"column":9}},"type":"if","locations":[{"start":{"line":9,"column":8},"end":{"line":11,"column":9}},{"start":{"line":9,"column":8},"end":{"line":11,"column":9}}],"line":9},"2":{"loc":{"start":{"line":14,"column":12},"end":{"line":16,"column":13}},"type":"if","locations":[{"start":{"line":14,"column":12},"end":{"line":16,"column":13}},{"start":{"line":14,"column":12},"end":{"line":16,"column":13}}],"line":14},"3":{"loc":{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},"type":"if","locations":[{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},{"start":{"line":21,"column":8},"end":{"line":23,"column":9}}],"line":21},"4":{"loc":{"start":{"line":24,"column":8},"end":{"line":26,"column":9}},"type":"if","locations":[{"start":{"line":24,"column":8},"end":{"line":26,"column":9}},{"start":{"line":24,"column":8},"end":{"line":26,"column":9}}],"line":24},"5":{"loc":{"start":{"line":29,"column":12},"end":{"line":31,"column":13}},"type":"if","locations":[{"start":{"line":29,"column":12},"end":{"line":31,"column":13}},{"start":{"line":29,"column":12},"end":{"line":31,"column":13}}],"line":29},"6":{"loc":{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},"type":"if","locations":[{"start":{"line":36,"column":8},"end":{"line":38,"column":9}},{"start":{"line":36,"column":8},"end":{"line":38,"column":9}}],"line":36},"7":{"loc":{"start":{"line":39,"column":8},"end":{"line":41,"column":9}},"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":41,"column":9}},{"start":{"line":39,"column":8},"end":{"line":41,"column":9}}],"line":39},"8":{"loc":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"type":"if","locations":[{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},{"start":{"line":45,"column":8},"end":{"line":47,"column":9}}],"line":45}},"s":{"0":1,"1":1,"2":14887,"3":0,"4":14887,"5":0,"6":14887,"7":14887,"8":14887,"9":14887,"10":14877,"11":14887,"12":14887,"13":0,"14":14887,"15":0,"16":14887,"17":14887,"18":14887,"19":14887,"20":8,"21":14887,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":14887,"31":1,"32":19887,"33":1},"f":{"0":14887,"1":14887,"2":0,"3":0,"4":14887,"5":19887},"b":{"0":[0,14887],"1":[0,14887],"2":[14877,10],"3":[0,14887],"4":[0,14887],"5":[8,14879],"6":[0,0],"7":[0,0],"8":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/BigIntUtils.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/BigIntUtils.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACrB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAgB;QAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;SAClB;QAED,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;gBACnB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACjB;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,MAAgB;QAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;SAClB;QAED,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;gBACnB,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;aACjB;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAa;QACvB,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;YACrB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;SAClB;QACD,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE;YACrB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACnB;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,KAAa;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACnC,OAAO,CAAC,KAAK,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;QAChD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;CACF;AAzDD,gCAyDC;AAED,SAAgB,QAAQ,CAAC,GAAc;IACrC,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,CAAC;AAFD,4BAEC","sourcesContent":["import BigNumber from 'bignumber.js';\n\nexport class BigIntMath {\n static max(...values: bigint[]): bigint {\n if (values.length === 0) {\n return null;\n }\n\n if (values.length === 1) {\n return values[0];\n }\n\n let max = values[0];\n for (let i = 1; i < values.length; i++) {\n if (values[i] > max) {\n max = values[i];\n }\n }\n return max;\n }\n\n static min(...values: bigint[]): bigint {\n if (values.length === 0) {\n return null;\n }\n\n if (values.length === 1) {\n return values[0];\n }\n\n let min = values[0];\n for (let i = 1; i < values.length; i++) {\n if (values[i] < min) {\n min = values[i];\n }\n }\n return min;\n }\n\n static sign(value: bigint): bigint {\n if (value > BigInt(0)) {\n return BigInt(1);\n }\n if (value < BigInt(0)) {\n return BigInt(-1);\n }\n return BigInt(0);\n }\n\n static abs(value: bigint): bigint {\n if (this.sign(value) === BigInt(-1)) {\n return -value;\n }\n return value;\n }\n\n static clamp(min: bigint, val: bigint, max: bigint): bigint {\n return this.max(min, this.min(val, max));\n }\n}\n\nexport function toBigInt(num: BigNumber): bigint {\n return BigInt(num.integerValue().toString());\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9edd40c819822c02c3f665c7fd7e5cced4fbc569","contentHash":"9f3f58b3c95e97f9cd76d06508b4dd70cc7170c547c60d8fc07556b2edb45fde"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CoveredCall.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CoveredCall.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":22},"end":{"line":9,"column":56}},"7":{"start":{"line":10,"column":31},"end":{"line":10,"column":65}},"8":{"start":{"line":11,"column":19},"end":{"line":28,"column":1}},"9":{"start":{"line":12,"column":14},"end":{"line":12,"column":43}},"10":{"start":{"line":13,"column":14},"end":{"line":13,"column":43}},"11":{"start":{"line":14,"column":14},"end":{"line":14,"column":43}},"12":{"start":{"line":15,"column":14},"end":{"line":15,"column":81}},"13":{"start":{"line":16,"column":16},"end":{"line":16,"column":45}},"14":{"start":{"line":17,"column":17},"end":{"line":17,"column":46}},"15":{"start":{"line":18,"column":38},"end":{"line":18,"column":108}},"16":{"start":{"line":19,"column":23},"end":{"line":19,"column":109}},"17":{"start":{"line":20,"column":29},"end":{"line":22,"column":23}},"18":{"start":{"line":23,"column":4},"end":{"line":27,"column":6}},"19":{"start":{"line":29,"column":28},"end":{"line":65,"column":1}},"20":{"start":{"line":30,"column":57},"end":{"line":30,"column":120}},"21":{"start":{"line":31,"column":27},"end":{"line":31,"column":59}},"22":{"start":{"line":33,"column":4},"end":{"line":35,"column":5}},"23":{"start":{"line":34,"column":8},"end":{"line":34,"column":49}},"24":{"start":{"line":36,"column":23},"end":{"line":36,"column":55}},"25":{"start":{"line":38,"column":4},"end":{"line":42,"column":6}},"26":{"start":{"line":43,"column":4},"end":{"line":47,"column":6}},"27":{"start":{"line":48,"column":4},"end":{"line":55,"column":7}},"28":{"start":{"line":56,"column":4},"end":{"line":60,"column":6}},"29":{"start":{"line":61,"column":4},"end":{"line":64,"column":6}},"30":{"start":{"line":66,"column":0},"end":{"line":66,"column":58}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":19},"end":{"line":11,"column":20}},"loc":{"start":{"line":11,"column":76},"end":{"line":28,"column":1}},"line":11},"2":{"name":"(anonymous_2)","decl":{"start":{"line":29,"column":28},"end":{"line":29,"column":29}},"loc":{"start":{"line":29,"column":85},"end":{"line":65,"column":1}},"line":29}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":33,"column":4},"end":{"line":35,"column":5}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":35,"column":5}},{"start":{"line":33,"column":4},"end":{"line":35,"column":5}}],"line":33}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":8,"10":8,"11":8,"12":8,"13":8,"14":8,"15":8,"16":8,"17":8,"18":8,"19":1,"20":4,"21":4,"22":4,"23":0,"24":4,"25":4,"26":4,"27":4,"28":4,"29":4,"30":1},"f":{"0":1,"1":8,"2":4},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[0,4]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CoveredCall.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CoveredCall.ts"],"names":[],"mappings":"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","sourcesContent":["import { PayoutFunction } from '@node-dlc/messaging';\nimport BN from 'bignumber.js';\n\nimport { toBigInt } from '../../utils/BigIntUtils';\nimport { HyperbolaPayoutCurve } from '../HyperbolaPayoutCurve';\n\nconst buildCurve = (\n strikePrice: bigint,\n contractSize: bigint,\n oracleBase: number,\n oracleDigits: number,\n): {\n maxOutcome: bigint;\n totalCollateral: bigint;\n payoutCurve: HyperbolaPayoutCurve;\n} => {\n const a = new BN(1);\n const b = new BN(0);\n const c = new BN(0);\n const d = new BN((strikePrice * contractSize).toString());\n\n const f_1 = new BN(0);\n const _f_2 = new BN(0);\n\n const _tempHyperbolaPayoutCurve = new HyperbolaPayoutCurve(\n a,\n b,\n c,\n d,\n f_1,\n _f_2,\n );\n\n const maxOutcome = BigInt(\n new BN(oracleBase).pow(oracleDigits).minus(1).toString(10),\n );\n const maxOutcomePayout = _tempHyperbolaPayoutCurve\n .getPayout(maxOutcome)\n .integerValue();\n\n return {\n maxOutcome,\n totalCollateral: contractSize - toBigInt(maxOutcomePayout),\n payoutCurve: new HyperbolaPayoutCurve(\n a,\n b,\n c,\n d,\n f_1,\n maxOutcomePayout.negated(),\n ),\n };\n};\n\nconst buildPayoutFunction = (\n strikePrice: bigint,\n contractSize: bigint,\n oracleBase: number,\n oracleDigits: number,\n): { payoutFunction: PayoutFunction; totalCollateral: bigint } => {\n const { maxOutcome, totalCollateral, payoutCurve } = buildCurve(\n strikePrice,\n contractSize,\n oracleBase,\n oracleDigits,\n );\n\n const payoutFunction = new PayoutFunction();\n\n // Defensive fix: ensure payoutFunctionPieces is initialized as an array\n if (!payoutFunction.payoutFunctionPieces) {\n payoutFunction.payoutFunctionPieces = [];\n }\n\n const curvePiece = payoutCurve.toPayoutCurvePiece();\n\n // Set the left and right endpoints for the hyperbola piece (matching rust-dlc structure)\n curvePiece.leftEndPoint = {\n eventOutcome: BigInt(0),\n outcomePayout: totalCollateral,\n extraPrecision: 0,\n };\n curvePiece.rightEndPoint = {\n eventOutcome: maxOutcome,\n outcomePayout: BigInt(0),\n extraPrecision: 0,\n };\n\n payoutFunction.payoutFunctionPieces.push({\n endPoint: {\n eventOutcome: maxOutcome,\n outcomePayout: BigInt(0),\n extraPrecision: 0,\n },\n payoutCurvePiece: curvePiece,\n });\n\n payoutFunction.lastEndpoint = {\n eventOutcome: maxOutcome,\n outcomePayout: BigInt(0),\n extraPrecision: 0,\n };\n\n return {\n payoutFunction,\n totalCollateral,\n };\n};\n\nexport const CoveredCall = { buildCurve, buildPayoutFunction };\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5267711e6ba2a4a6a37cec78137d11b26acabcd4","contentHash":"c11a8f9e11c9c58955ccd4b213b7c0f184d4739c672150370edf9484bbc23134"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/HyperbolaPayoutCurve.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/HyperbolaPayoutCurve.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":38}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":24},"end":{"line":9,"column":50}},"7":{"start":{"line":12,"column":8},"end":{"line":12,"column":19}},"8":{"start":{"line":13,"column":8},"end":{"line":13,"column":19}},"9":{"start":{"line":14,"column":8},"end":{"line":14,"column":19}},"10":{"start":{"line":15,"column":8},"end":{"line":15,"column":19}},"11":{"start":{"line":16,"column":8},"end":{"line":16,"column":49}},"12":{"start":{"line":17,"column":8},"end":{"line":17,"column":47}},"13":{"start":{"line":18,"column":8},"end":{"line":18,"column":33}},"14":{"start":{"line":21,"column":66},"end":{"line":21,"column":70}},"15":{"start":{"line":22,"column":18},"end":{"line":22,"column":56}},"16":{"start":{"line":23,"column":23},"end":{"line":42,"column":34}},"17":{"start":{"line":43,"column":8},"end":{"line":43,"column":22}},"18":{"start":{"line":46,"column":66},"end":{"line":46,"column":70}},"19":{"start":{"line":49,"column":8},"end":{"line":71,"column":9}},"20":{"start":{"line":50,"column":32},"end":{"line":50,"column":70}},"21":{"start":{"line":51,"column":12},"end":{"line":53,"column":13}},"22":{"start":{"line":52,"column":16},"end":{"line":52,"column":34}},"23":{"start":{"line":54,"column":28},"end":{"line":63,"column":31}},"24":{"start":{"line":64,"column":12},"end":{"line":65,"column":50}},"25":{"start":{"line":65,"column":16},"end":{"line":65,"column":50}},"26":{"start":{"line":66,"column":12},"end":{"line":66,"column":30}},"27":{"start":{"line":70,"column":12},"end":{"line":70,"column":45}},"28":{"start":{"line":74,"column":76},"end":{"line":74,"column":80}},"29":{"start":{"line":76,"column":22},"end":{"line":76,"column":186}},"30":{"start":{"line":77,"column":8},"end":{"line":77,"column":21}},"31":{"start":{"line":80,"column":8},"end":{"line":86,"column":46}},"32":{"start":{"line":90,"column":18},"end":{"line":90,"column":76}},"33":{"start":{"line":91,"column":18},"end":{"line":91,"column":76}},"34":{"start":{"line":92,"column":18},"end":{"line":92,"column":76}},"35":{"start":{"line":93,"column":18},"end":{"line":93,"column":76}},"36":{"start":{"line":94,"column":33},"end":{"line":94,"column":106}},"37":{"start":{"line":95,"column":32},"end":{"line":95,"column":104}},"38":{"start":{"line":96,"column":8},"end":{"line":96,"column":111}},"39":{"start":{"line":99,"column":8},"end":{"line":100,"column":60}},"40":{"start":{"line":100,"column":12},"end":{"line":100,"column":60}},"41":{"start":{"line":101,"column":48},"end":{"line":101,"column":86}},"42":{"start":{"line":102,"column":8},"end":{"line":106,"column":70}},"43":{"start":{"line":106,"column":12},"end":{"line":106,"column":70}},"44":{"start":{"line":107,"column":34},"end":{"line":107,"column":50}},"45":{"start":{"line":108,"column":22},"end":{"line":108,"column":66}},"46":{"start":{"line":111,"column":36},"end":{"line":111,"column":93}},"47":{"start":{"line":112,"column":37},"end":{"line":112,"column":95}},"48":{"start":{"line":113,"column":8},"end":{"line":113,"column":195}},"49":{"start":{"line":116,"column":0},"end":{"line":116,"column":52}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":5}},"loc":{"start":{"line":11,"column":80},"end":{"line":19,"column":5}},"line":11},"2":{"name":"(anonymous_2)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":18},"end":{"line":44,"column":5}},"line":20},"3":{"name":"(anonymous_3)","decl":{"start":{"line":45,"column":4},"end":{"line":45,"column":5}},"loc":{"start":{"line":45,"column":32},"end":{"line":72,"column":5}},"line":45},"4":{"name":"(anonymous_4)","decl":{"start":{"line":73,"column":4},"end":{"line":73,"column":5}},"loc":{"start":{"line":73,"column":25},"end":{"line":78,"column":5}},"line":73},"5":{"name":"(anonymous_5)","decl":{"start":{"line":79,"column":4},"end":{"line":79,"column":5}},"loc":{"start":{"line":79,"column":18},"end":{"line":87,"column":5}},"line":79},"6":{"name":"(anonymous_6)","decl":{"start":{"line":88,"column":4},"end":{"line":88,"column":5}},"loc":{"start":{"line":88,"column":39},"end":{"line":97,"column":5}},"line":88},"7":{"name":"(anonymous_7)","decl":{"start":{"line":98,"column":4},"end":{"line":98,"column":5}},"loc":{"start":{"line":98,"column":78},"end":{"line":114,"column":5}},"line":98}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":11,"column":63},"end":{"line":11,"column":78}},"type":"default-arg","locations":[{"start":{"line":11,"column":74},"end":{"line":11,"column":78}}],"line":11},"4":{"loc":{"start":{"line":49,"column":8},"end":{"line":71,"column":9}},"type":"if","locations":[{"start":{"line":49,"column":8},"end":{"line":71,"column":9}},{"start":{"line":49,"column":8},"end":{"line":71,"column":9}}],"line":49},"5":{"loc":{"start":{"line":51,"column":12},"end":{"line":53,"column":13}},"type":"if","locations":[{"start":{"line":51,"column":12},"end":{"line":53,"column":13}},{"start":{"line":51,"column":12},"end":{"line":53,"column":13}}],"line":51},"6":{"loc":{"start":{"line":64,"column":12},"end":{"line":65,"column":50}},"type":"if","locations":[{"start":{"line":64,"column":12},"end":{"line":65,"column":50}},{"start":{"line":64,"column":12},"end":{"line":65,"column":50}}],"line":64},"7":{"loc":{"start":{"line":80,"column":16},"end":{"line":86,"column":44}},"type":"binary-expr","locations":[{"start":{"line":80,"column":16},"end":{"line":80,"column":34}},{"start":{"line":81,"column":12},"end":{"line":81,"column":30}},{"start":{"line":82,"column":12},"end":{"line":82,"column":30}},{"start":{"line":83,"column":12},"end":{"line":83,"column":30}},{"start":{"line":84,"column":12},"end":{"line":84,"column":60}},{"start":{"line":85,"column":12},"end":{"line":85,"column":58}},{"start":{"line":86,"column":12},"end":{"line":86,"column":44}}],"line":80},"8":{"loc":{"start":{"line":99,"column":8},"end":{"line":100,"column":60}},"type":"if","locations":[{"start":{"line":99,"column":8},"end":{"line":100,"column":60}},{"start":{"line":99,"column":8},"end":{"line":100,"column":60}}],"line":99},"9":{"loc":{"start":{"line":102,"column":8},"end":{"line":106,"column":70}},"type":"if","locations":[{"start":{"line":102,"column":8},"end":{"line":106,"column":70}},{"start":{"line":102,"column":8},"end":{"line":106,"column":70}}],"line":102},"10":{"loc":{"start":{"line":102,"column":12},"end":{"line":105,"column":90}},"type":"binary-expr","locations":[{"start":{"line":102,"column":12},"end":{"line":103,"column":54}},{"start":{"line":104,"column":12},"end":{"line":104,"column":87}},{"start":{"line":105,"column":12},"end":{"line":105,"column":90}}],"line":102},"11":{"loc":{"start":{"line":111,"column":36},"end":{"line":111,"column":93}},"type":"binary-expr","locations":[{"start":{"line":111,"column":36},"end":{"line":111,"column":80}},{"start":{"line":111,"column":84},"end":{"line":111,"column":93}}],"line":111},"12":{"loc":{"start":{"line":112,"column":37},"end":{"line":112,"column":95}},"type":"binary-expr","locations":[{"start":{"line":112,"column":37},"end":{"line":112,"column":82}},{"start":{"line":112,"column":86},"end":{"line":112,"column":95}}],"line":112}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":46,"8":46,"9":46,"10":46,"11":46,"12":46,"13":46,"14":14914,"15":14914,"16":14914,"17":14914,"18":9914,"19":9914,"20":9914,"21":9914,"22":4,"23":9910,"24":9910,"25":9910,"26":0,"27":0,"28":15,"29":15,"30":15,"31":6,"32":10,"33":10,"34":10,"35":10,"36":10,"37":10,"38":10,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":1},"f":{"0":1,"1":46,"2":14914,"3":9914,"4":15,"5":6,"6":10,"7":0},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[31],"4":[9914,0],"5":[4,9910],"6":[9910,0],"7":[6,5,5,5,5,4,4],"8":[0,0],"9":[0,0],"10":[0,0,0],"11":[0,0],"12":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/HyperbolaPayoutCurve.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/HyperbolaPayoutCurve.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n HyperbolaPayoutCurvePiece,\n MessageType,\n PayoutCurvePieceType,\n PayoutFunctionV0,\n RoundingIntervals,\n} from '@node-dlc/messaging';\nimport BigNumber from 'bignumber.js';\n\nimport { CETPayout } from '..';\nimport { splitIntoRanges } from './CETCalculator';\nimport PayoutCurve from './PayoutCurve';\n\nexport class HyperbolaPayoutCurve implements PayoutCurve {\n constructor(\n private a: BigNumber,\n private b: BigNumber,\n private c: BigNumber,\n private d: BigNumber,\n private translateOutcome: BigNumber,\n private translatePayout: BigNumber,\n private positive: boolean = true, // TODO: support negative pieces\n ) {}\n\n getPayout(_x: bigint): BigNumber {\n const { a, b, c, d, translateOutcome, translatePayout } = this;\n const x = new BigNumber(Number(_x));\n\n const payout = c\n .times(\n x\n .minus(translateOutcome)\n .plus(\n x\n .minus(translateOutcome)\n .exponentiatedBy(2)\n .minus(a.times(b).times(4))\n .squareRoot(),\n )\n .div(a.times(2)),\n )\n .plus(\n a\n .times(d)\n .times(2)\n .div(\n x\n .minus(translateOutcome)\n .plus(\n x\n .minus(translateOutcome)\n .exponentiatedBy(2)\n .minus(a.times(b).times(4))\n .squareRoot(),\n ),\n ),\n )\n .plus(translatePayout);\n\n return payout;\n }\n\n getOutcomeForPayout(payout: BigNumber): bigint {\n const { a, b, c, d, translateOutcome, translatePayout } = this;\n\n // Inverse function\n // y=(-ad^{2}-bf_{2}^{2}+2bf_{2}x-bx^{2}+df_{1}f_{2}-df_{1}x)/(d(f_{2}-x))\n if (c.eq(0)) {\n const denominator = d.times(translatePayout.minus(payout));\n\n if (denominator.eq(0)) {\n return BigInt(-1);\n }\n\n const outcome = a\n .negated()\n .times(d.exponentiatedBy(2))\n .minus(b.times(translatePayout.exponentiatedBy(2)))\n .plus(b.times(translatePayout).times(payout).times(2))\n .minus(b.times(payout.exponentiatedBy(2)))\n .plus(d.times(translateOutcome).times(translatePayout))\n .minus(d.times(translateOutcome).times(payout))\n .dividedBy(denominator)\n .integerValue();\n\n if (outcome.isFinite()) return BigInt(outcome.toString());\n return BigInt(-1);\n } else {\n // y=\\left((\\sqrt{((adf_{2}-adx+bcf_{2}-bcx-2c\\cdot d\\cdot f_{1})^{2}-4cd(a^{2}d^{2}-2abcd+abf_{2}^{2}-2abf_{2}x+abx^{2}-adf_{1}f_{2}+adf_{1}x+b^{2}c^{2}-bcf_{1}f_{2}+bcf_{1}x+c\\cdot d\\cdot f_{1}^{2}))}-adf_{2}+adx-bcf_{2}+bcx+2c\\cdot d\\cdot f_{1})\\right)/(2cd)\n throw new Error('Not supported');\n }\n }\n\n toPayoutCurvePiece(): HyperbolaPayoutCurvePiece {\n const { a, b, c, d, translateOutcome, translatePayout, positive } = this;\n\n // Use the constructor with string values to avoid F64 dependency issues\n const piece = new HyperbolaPayoutCurvePiece(\n positive,\n translateOutcome.toString(),\n translatePayout.toString(),\n a.toString(),\n b.toString(),\n c.toString(),\n d.toString(),\n );\n\n return piece;\n }\n\n equals(curve: HyperbolaPayoutCurve): boolean {\n return (\n this.a.eq(curve.a) &&\n this.b.eq(curve.b) &&\n this.c.eq(curve.c) &&\n this.d.eq(curve.d) &&\n this.translateOutcome.eq(curve.translateOutcome) &&\n this.translatePayout.eq(curve.translatePayout) &&\n this.positive === curve.positive\n );\n }\n\n static fromPayoutCurvePiece(\n piece: HyperbolaPayoutCurvePiece,\n ): HyperbolaPayoutCurve {\n // Convert F64 values to BigNumber using toDecimal().toString() to preserve precision\n const a = new BigNumber(piece.a.toDecimal().toString());\n const b = new BigNumber(piece.b.toDecimal().toString());\n const c = new BigNumber(piece.c.toDecimal().toString());\n const d = new BigNumber(piece.d.toDecimal().toString());\n const translateOutcome = new BigNumber(\n piece.translateOutcome.toDecimal().toString(),\n );\n const translatePayout = new BigNumber(\n piece.translatePayout.toDecimal().toString(),\n );\n\n return new HyperbolaPayoutCurve(\n a,\n b,\n c,\n d,\n translateOutcome,\n translatePayout,\n piece.usePositivePiece,\n );\n }\n\n static computePayouts(\n payoutFunction: PayoutFunctionV0,\n totalCollateral: bigint,\n roundingIntervals: RoundingIntervals,\n ): CETPayout[] {\n if (payoutFunction.payoutFunctionPieces.length !== 1)\n throw new Error('Must have at least one piece');\n const {\n endPoint,\n payoutCurvePiece,\n } = payoutFunction.payoutFunctionPieces[0];\n\n if (\n payoutCurvePiece.payoutCurvePieceType !==\n PayoutCurvePieceType.Hyperbola &&\n payoutCurvePiece.type !== MessageType.HyperbolaPayoutCurvePiece &&\n payoutCurvePiece.type !== MessageType.OldHyperbolaPayoutCurvePiece\n )\n throw new Error('Payout curve piece must be a hyperbola');\n\n const _payoutCurvePiece = payoutCurvePiece as HyperbolaPayoutCurvePiece;\n const curve = this.fromPayoutCurvePiece(_payoutCurvePiece);\n\n // For the new PayoutFunction structure, get the starting point from the hyperbola piece's leftEndPoint\n // This matches the rust-dlc implementation where get_first_outcome() returns left_end_point.event_outcome\n const initialEventOutcome =\n _payoutCurvePiece.leftEndPoint?.eventOutcome || BigInt(0);\n const initialOutcomePayout =\n _payoutCurvePiece.leftEndPoint?.outcomePayout || BigInt(0);\n return splitIntoRanges(\n initialEventOutcome,\n endPoint.eventOutcome,\n initialOutcomePayout,\n endPoint.outcomePayout,\n totalCollateral,\n curve,\n roundingIntervals.intervals,\n );\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"952e48288bd24d101bb71521da14b8bfe581df84","contentHash":"060ed222822191d7a6af580fa9e1ed6dbb89d4083bf26829d260b69f3676339c"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/ShortPut.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/ShortPut.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":31},"end":{"line":9,"column":65}},"7":{"start":{"line":10,"column":19},"end":{"line":24,"column":1}},"8":{"start":{"line":11,"column":14},"end":{"line":11,"column":44}},"9":{"start":{"line":12,"column":14},"end":{"line":12,"column":43}},"10":{"start":{"line":13,"column":14},"end":{"line":13,"column":43}},"11":{"start":{"line":14,"column":14},"end":{"line":14,"column":81}},"12":{"start":{"line":15,"column":16},"end":{"line":15,"column":45}},"13":{"start":{"line":16,"column":16},"end":{"line":16,"column":94}},"14":{"start":{"line":17,"column":24},"end":{"line":17,"column":93}},"15":{"start":{"line":18,"column":23},"end":{"line":18,"column":109}},"16":{"start":{"line":19,"column":4},"end":{"line":23,"column":6}},"17":{"start":{"line":25,"column":28},"end":{"line":44,"column":1}},"18":{"start":{"line":26,"column":40},"end":{"line":26,"column":120}},"19":{"start":{"line":27,"column":27},"end":{"line":27,"column":61}},"20":{"start":{"line":28,"column":4},"end":{"line":35,"column":7}},"21":{"start":{"line":36,"column":4},"end":{"line":40,"column":6}},"22":{"start":{"line":41,"column":4},"end":{"line":43,"column":6}},"23":{"start":{"line":45,"column":0},"end":{"line":45,"column":55}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":19},"end":{"line":10,"column":20}},"loc":{"start":{"line":10,"column":93},"end":{"line":24,"column":1}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":25,"column":28},"end":{"line":25,"column":29}},"loc":{"start":{"line":25,"column":102},"end":{"line":44,"column":1}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":11,"9":11,"10":11,"11":11,"12":11,"13":11,"14":11,"15":11,"16":11,"17":1,"18":4,"19":4,"20":4,"21":4,"22":4,"23":1},"f":{"0":1,"1":11,"2":4},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/ShortPut.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/ShortPut.ts"],"names":[],"mappings":";;;;;;AAAA,mDAAuD;AACvD,gEAA8B;AAE9B,kEAA+D;AAE/D,MAAM,UAAU,GAAG,CACjB,WAAmB,EACnB,YAAoB,EACpB,eAAuB,EACvB,UAAkB,EAClB,YAAoB,EAKpB,EAAE;IACF,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,sBAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAEvE,MAAM,WAAW,GAAG,IAAI,2CAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,MAAM,CACvB,IAAI,sBAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC3D,CAAC;IAEF,OAAO;QACL,UAAU;QACV,eAAe;QACf,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,WAAmB,EACnB,YAAoB,EACpB,eAAuB,EACvB,UAAkB,EAClB,YAAoB,EACkB,EAAE;IACxC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,UAAU,CAC5C,WAAW,EACX,YAAY,EACZ,eAAe,EACf,UAAU,EACV,YAAY,CACb,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,4BAAgB,EAAE,CAAC;IAE9C,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACvC,QAAQ,EAAE;YACR,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,eAAe;YAC9B,cAAc,EAAE,CAAC;SAClB;QACD,gBAAgB,EAAE,WAAW,CAAC,kBAAkB,EAAE;KACnD,CAAC,CAAC;IAEH,cAAc,CAAC,YAAY,GAAG;QAC5B,YAAY,EAAE,UAAU;QACxB,aAAa,EAAE,eAAe;QAC9B,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,OAAO;QACL,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,QAAQ,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import { PayoutFunctionV0 } from '@node-dlc/messaging';\nimport BN from 'bignumber.js';\n\nimport { HyperbolaPayoutCurve } from '../HyperbolaPayoutCurve';\n\nconst buildCurve = (\n strikePrice: bigint,\n contractSize: bigint,\n totalCollateral: bigint,\n oracleBase: number,\n oracleDigits: number,\n): {\n maxOutcome: bigint;\n totalCollateral: bigint;\n payoutCurve: HyperbolaPayoutCurve;\n} => {\n const a = new BN(-1);\n const b = new BN(0);\n const c = new BN(0);\n const d = new BN((strikePrice * contractSize).toString());\n\n const f_1 = new BN(0);\n const f_2 = new BN(Number(contractSize)).plus(Number(totalCollateral));\n\n const payoutCurve = new HyperbolaPayoutCurve(a, b, c, d, f_1, f_2);\n\n const maxOutcome = BigInt(\n new BN(oracleBase).pow(oracleDigits).minus(1).toString(10),\n );\n\n return {\n maxOutcome,\n totalCollateral,\n payoutCurve,\n };\n};\n\nconst buildPayoutFunction = (\n strikePrice: bigint,\n contractSize: bigint,\n totalCollateral: bigint,\n oracleBase: number,\n oracleDigits: number,\n): { payoutFunction: PayoutFunctionV0 } => {\n const { maxOutcome, payoutCurve } = buildCurve(\n strikePrice,\n contractSize,\n totalCollateral,\n oracleBase,\n oracleDigits,\n );\n\n const payoutFunction = new PayoutFunctionV0();\n\n payoutFunction.payoutFunctionPieces.push({\n endPoint: {\n eventOutcome: maxOutcome,\n outcomePayout: totalCollateral,\n extraPrecision: 0,\n },\n payoutCurvePiece: payoutCurve.toPayoutCurvePiece(),\n });\n\n payoutFunction.lastEndpoint = {\n eventOutcome: maxOutcome,\n outcomePayout: totalCollateral,\n extraPrecision: 0,\n };\n\n return {\n payoutFunction,\n };\n};\n\nexport const ShortPut = { buildCurve, buildPayoutFunction };\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d7039c6a75f1726cc86b7bc5bbd06ee5d385315d","contentHash":"9263e36522454928a307a3b343376fd95d63b42019113d34ff0d4efdfc2a9144"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/index.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/index.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"5":{"start":{"line":6,"column":6},"end":{"line":6,"column":68}},"6":{"start":{"line":6,"column":51},"end":{"line":6,"column":63}},"7":{"start":{"line":8,"column":4},"end":{"line":8,"column":39}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"9":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"11":{"start":{"line":13,"column":19},"end":{"line":15,"column":1}},"12":{"start":{"line":14,"column":4},"end":{"line":14,"column":126}},"13":{"start":{"line":14,"column":21},"end":{"line":14,"column":126}},"14":{"start":{"line":14,"column":95},"end":{"line":14,"column":126}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":62}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":400}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":52}},"18":{"start":{"line":20,"column":0},"end":{"line":20,"column":57}},"19":{"start":{"line":21,"column":0},"end":{"line":21,"column":43}},"20":{"start":{"line":22,"column":0},"end":{"line":22,"column":48}},"21":{"start":{"line":23,"column":0},"end":{"line":23,"column":45}},"22":{"start":{"line":24,"column":0},"end":{"line":24,"column":46}},"23":{"start":{"line":25,"column":0},"end":{"line":25,"column":47}},"24":{"start":{"line":26,"column":0},"end":{"line":26,"column":51}},"25":{"start":{"line":27,"column":0},"end":{"line":27,"column":42}},"26":{"start":{"line":28,"column":0},"end":{"line":28,"column":51}},"27":{"start":{"line":29,"column":0},"end":{"line":29,"column":56}},"28":{"start":{"line":30,"column":16},"end":{"line":30,"column":44}},"29":{"start":{"line":31,"column":0},"end":{"line":31,"column":124}},"30":{"start":{"line":31,"column":87},"end":{"line":31,"column":118}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":116}},"32":{"start":{"line":32,"column":83},"end":{"line":32,"column":110}},"33":{"start":{"line":33,"column":0},"end":{"line":33,"column":114}},"34":{"start":{"line":33,"column":82},"end":{"line":33,"column":108}},"35":{"start":{"line":34,"column":0},"end":{"line":34,"column":110}},"36":{"start":{"line":34,"column":80},"end":{"line":34,"column":104}},"37":{"start":{"line":35,"column":0},"end":{"line":35,"column":102}},"38":{"start":{"line":35,"column":76},"end":{"line":35,"column":96}},"39":{"start":{"line":36,"column":0},"end":{"line":36,"column":116}},"40":{"start":{"line":36,"column":83},"end":{"line":36,"column":110}},"41":{"start":{"line":37,"column":0},"end":{"line":37,"column":106}},"42":{"start":{"line":37,"column":78},"end":{"line":37,"column":100}},"43":{"start":{"line":38,"column":0},"end":{"line":38,"column":108}},"44":{"start":{"line":38,"column":79},"end":{"line":38,"column":102}},"45":{"start":{"line":39,"column":0},"end":{"line":39,"column":108}},"46":{"start":{"line":39,"column":79},"end":{"line":39,"column":102}},"47":{"start":{"line":41,"column":28},"end":{"line":41,"column":60}},"48":{"start":{"line":42,"column":0},"end":{"line":42,"column":158}},"49":{"start":{"line":42,"column":98},"end":{"line":42,"column":152}},"50":{"start":{"line":43,"column":0},"end":{"line":43,"column":158}},"51":{"start":{"line":43,"column":98},"end":{"line":43,"column":152}},"52":{"start":{"line":44,"column":0},"end":{"line":44,"column":158}},"53":{"start":{"line":44,"column":98},"end":{"line":44,"column":152}},"54":{"start":{"line":45,"column":0},"end":{"line":45,"column":154}},"55":{"start":{"line":45,"column":96},"end":{"line":45,"column":148}},"56":{"start":{"line":46,"column":0},"end":{"line":46,"column":154}},"57":{"start":{"line":46,"column":96},"end":{"line":46,"column":148}},"58":{"start":{"line":47,"column":0},"end":{"line":47,"column":154}},"59":{"start":{"line":47,"column":96},"end":{"line":47,"column":148}},"60":{"start":{"line":49,"column":18},"end":{"line":49,"column":50}},"61":{"start":{"line":50,"column":0},"end":{"line":50,"column":127}},"62":{"start":{"line":50,"column":92},"end":{"line":50,"column":121}},"63":{"start":{"line":51,"column":0},"end":{"line":51,"column":58}},"64":{"start":{"line":52,"column":0},"end":{"line":52,"column":63}},"65":{"start":{"line":53,"column":0},"end":{"line":53,"column":63}},"66":{"start":{"line":54,"column":0},"end":{"line":54,"column":68}},"67":{"start":{"line":55,"column":0},"end":{"line":55,"column":51}},"68":{"start":{"line":56,"column":0},"end":{"line":56,"column":60}},"69":{"start":{"line":57,"column":0},"end":{"line":57,"column":60}},"70":{"start":{"line":58,"column":0},"end":{"line":58,"column":56}},"71":{"start":{"line":60,"column":0},"end":{"line":60,"column":54}},"72":{"start":{"line":61,"column":0},"end":{"line":61,"column":51}},"73":{"start":{"line":62,"column":0},"end":{"line":62,"column":61}},"74":{"start":{"line":63,"column":0},"end":{"line":63,"column":52}},"75":{"start":{"line":64,"column":0},"end":{"line":64,"column":62}},"76":{"start":{"line":65,"column":0},"end":{"line":65,"column":50}},"77":{"start":{"line":66,"column":0},"end":{"line":66,"column":52}},"78":{"start":{"line":68,"column":0},"end":{"line":68,"column":56}},"79":{"start":{"line":69,"column":0},"end":{"line":69,"column":60}},"80":{"start":{"line":70,"column":0},"end":{"line":70,"column":56}},"81":{"start":{"line":71,"column":0},"end":{"line":71,"column":61}},"82":{"start":{"line":72,"column":0},"end":{"line":72,"column":57}},"83":{"start":{"line":73,"column":0},"end":{"line":73,"column":56}},"84":{"start":{"line":74,"column":0},"end":{"line":74,"column":59}},"85":{"start":{"line":75,"column":0},"end":{"line":75,"column":57}},"86":{"start":{"line":76,"column":0},"end":{"line":76,"column":54}},"87":{"start":{"line":77,"column":0},"end":{"line":77,"column":52}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":49},"end":{"line":6,"column":65}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":50},"end":{"line":13,"column":51}},"loc":{"start":{"line":13,"column":71},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":31,"column":73},"end":{"line":31,"column":74}},"loc":{"start":{"line":31,"column":85},"end":{"line":31,"column":120}},"line":31},"5":{"name":"(anonymous_5)","decl":{"start":{"line":32,"column":69},"end":{"line":32,"column":70}},"loc":{"start":{"line":32,"column":81},"end":{"line":32,"column":112}},"line":32},"6":{"name":"(anonymous_6)","decl":{"start":{"line":33,"column":68},"end":{"line":33,"column":69}},"loc":{"start":{"line":33,"column":80},"end":{"line":33,"column":110}},"line":33},"7":{"name":"(anonymous_7)","decl":{"start":{"line":34,"column":66},"end":{"line":34,"column":67}},"loc":{"start":{"line":34,"column":78},"end":{"line":34,"column":106}},"line":34},"8":{"name":"(anonymous_8)","decl":{"start":{"line":35,"column":62},"end":{"line":35,"column":63}},"loc":{"start":{"line":35,"column":74},"end":{"line":35,"column":98}},"line":35},"9":{"name":"(anonymous_9)","decl":{"start":{"line":36,"column":69},"end":{"line":36,"column":70}},"loc":{"start":{"line":36,"column":81},"end":{"line":36,"column":112}},"line":36},"10":{"name":"(anonymous_10)","decl":{"start":{"line":37,"column":64},"end":{"line":37,"column":65}},"loc":{"start":{"line":37,"column":76},"end":{"line":37,"column":102}},"line":37},"11":{"name":"(anonymous_11)","decl":{"start":{"line":38,"column":65},"end":{"line":38,"column":66}},"loc":{"start":{"line":38,"column":77},"end":{"line":38,"column":104}},"line":38},"12":{"name":"(anonymous_12)","decl":{"start":{"line":39,"column":65},"end":{"line":39,"column":66}},"loc":{"start":{"line":39,"column":77},"end":{"line":39,"column":104}},"line":39},"13":{"name":"(anonymous_13)","decl":{"start":{"line":42,"column":84},"end":{"line":42,"column":85}},"loc":{"start":{"line":42,"column":96},"end":{"line":42,"column":154}},"line":42},"14":{"name":"(anonymous_14)","decl":{"start":{"line":43,"column":84},"end":{"line":43,"column":85}},"loc":{"start":{"line":43,"column":96},"end":{"line":43,"column":154}},"line":43},"15":{"name":"(anonymous_15)","decl":{"start":{"line":44,"column":84},"end":{"line":44,"column":85}},"loc":{"start":{"line":44,"column":96},"end":{"line":44,"column":154}},"line":44},"16":{"name":"(anonymous_16)","decl":{"start":{"line":45,"column":82},"end":{"line":45,"column":83}},"loc":{"start":{"line":45,"column":94},"end":{"line":45,"column":150}},"line":45},"17":{"name":"(anonymous_17)","decl":{"start":{"line":46,"column":82},"end":{"line":46,"column":83}},"loc":{"start":{"line":46,"column":94},"end":{"line":46,"column":150}},"line":46},"18":{"name":"(anonymous_18)","decl":{"start":{"line":47,"column":82},"end":{"line":47,"column":83}},"loc":{"start":{"line":47,"column":94},"end":{"line":47,"column":150}},"line":47},"19":{"name":"(anonymous_19)","decl":{"start":{"line":50,"column":78},"end":{"line":50,"column":79}},"loc":{"start":{"line":50,"column":90},"end":{"line":50,"column":123}},"line":50}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":12,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{"line":3,"column":4},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{"line":5,"column":4},"end":{"line":7,"column":5}}],"line":5},"4":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":85}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":13}},{"start":{"line":5,"column":18},"end":{"line":5,"column":84}}],"line":5},"5":{"loc":{"start":{"line":5,"column":18},"end":{"line":5,"column":84}},"type":"cond-expr","locations":[{"start":{"line":5,"column":34},"end":{"line":5,"column":47}},{"start":{"line":5,"column":50},"end":{"line":5,"column":84}}],"line":5},"6":{"loc":{"start":{"line":5,"column":50},"end":{"line":5,"column":84}},"type":"binary-expr","locations":[{"start":{"line":5,"column":50},"end":{"line":5,"column":63}},{"start":{"line":5,"column":67},"end":{"line":5,"column":84}}],"line":5},"7":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{"line":10,"column":4},"end":{"line":10,"column":33}}],"line":10},"8":{"loc":{"start":{"line":13,"column":19},"end":{"line":15,"column":1}},"type":"binary-expr","locations":[{"start":{"line":13,"column":20},"end":{"line":13,"column":24}},{"start":{"line":13,"column":28},"end":{"line":13,"column":45}},{"start":{"line":13,"column":50},"end":{"line":15,"column":1}}],"line":13},"9":{"loc":{"start":{"line":14,"column":21},"end":{"line":14,"column":126}},"type":"if","locations":[{"start":{"line":14,"column":21},"end":{"line":14,"column":126}},{"start":{"line":14,"column":21},"end":{"line":14,"column":126}}],"line":14},"10":{"loc":{"start":{"line":14,"column":25},"end":{"line":14,"column":93}},"type":"binary-expr","locations":[{"start":{"line":14,"column":25},"end":{"line":14,"column":40}},{"start":{"line":14,"column":44},"end":{"line":14,"column":93}}],"line":14}},"s":{"0":1,"1":89,"2":89,"3":89,"4":89,"5":66,"6":214,"7":89,"8":0,"9":0,"10":0,"11":1,"12":36,"13":104,"14":89,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":0,"31":1,"32":0,"33":1,"34":0,"35":1,"36":0,"37":1,"38":0,"39":1,"40":0,"41":1,"42":0,"43":1,"44":0,"45":1,"46":0,"47":1,"48":1,"49":0,"50":1,"51":0,"52":1,"53":0,"54":1,"55":0,"56":1,"57":0,"58":1,"59":0,"60":1,"61":1,"62":0,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1},"f":{"0":89,"1":214,"2":0,"3":36,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0},"b":{"0":[1,1,1],"1":[1,0],"2":[89,0],"3":[66,23],"4":[89,89],"5":[23,66],"6":[66,0],"7":[0,0],"8":[1,1,1],"9":[89,15],"10":[104,104]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/index.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oDAAkC;AAElC,sFAAsF;AACtF,yDAAuC;AACvC,2CAAyB;AACzB,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B;AAC5B,+CAA6B;AAC7B,mDAAiC;AACjC,0CAAwB;AACxB,mDAAiC;AACjC,wDAAsC;AACtC,6CAU2B;AATzB,wGAAA,aAAa,OAAA;AACb,oGAAA,SAAS,OAAA;AACT,mGAAA,QAAQ,OAAA;AACR,iGAAA,MAAM,OAAA;AACN,6FAAA,EAAE,OAAA;AACF,oGAAA,SAAS,OAAA;AACT,+FAAA,IAAI,OAAA;AACJ,gGAAA,KAAK,OAAA;AACL,gGAAA,KAAK,OAAA;AAGP,0DAA0D;AAC1D,6DAO+B;AAN7B,+HAAA,wBAAwB,OAAA;AACxB,+HAAA,wBAAwB,OAAA;AACxB,+HAAA,wBAAwB,OAAA;AACxB,6HAAA,sBAAsB,OAAA;AACtB,6HAAA,sBAAsB,OAAA;AACtB,6HAAA,sBAAsB,OAAA;AAGxB,yEAAyE;AACzE,mDAAwE;AAA/D,+GAAA,SAAS,OAAsB;AACxC,0DAAwC;AACxC,+DAA6C;AAC7C,+DAA6C;AAC7C,oEAAkD;AAClD,mDAAiC;AACjC,4DAA0C;AAC1C,4DAA0C;AAC1C,wDAAsC;AAEtC,iCAAiC;AACjC,sDAAoC;AACpC,mDAAiC;AACjC,6DAA2C;AAC3C,oDAAkC;AAClC,8DAA4C;AAC5C,kDAAgC;AAChC,oDAAkC;AAElC,+BAA+B;AAC/B,wDAAsC;AACtC,4DAA0C;AAC1C,wDAAsC;AACtC,6DAA2C;AAC3C,yDAAuC;AACvC,wDAAsC;AACtC,2DAAyC;AACzC,yDAAuC;AACvC,sDAAoC;AACpC,oDAAkC","sourcesContent":["export * from '@node-dlc/bitcoin';\n\n// Explicitly re-export commonly used types from bitcoin for better TypeScript support\nexport * from './AsyncProcessingQueue';\nexport * from './Base32';\nexport * from './BigIntUtils';\nexport * from './BitField';\nexport * from './ChannelId';\nexport * from './LinkedList';\nexport * from './LinkedListNode';\nexport * from './Queue';\nexport * from './ShortChannelId';\nexport * from './ShortChannelIdUtils';\nexport {\n HashByteOrder,\n HashValue,\n OutPoint,\n Script,\n Tx,\n TxBuilder,\n TxIn,\n TxOut,\n Value,\n} from '@node-dlc/bitcoin';\n\n// Explicitly export the utility functions that wire needs\nexport {\n shortChannelIdFromBuffer,\n shortChannelIdFromNumber,\n shortChannelIdFromString,\n shortChannelIdToBuffer,\n shortChannelIdToNumber,\n shortChannelIdToString,\n} from './ShortChannelIdUtils';\n\n// Lightning subdirectory exports (excluding ChannelId to avoid conflict)\nexport { ChannelId as LightningChannelId } from './lightning/ChannelId';\nexport * from './lightning/ChannelKeys';\nexport * from './lightning/CommitmentNumber';\nexport * from './lightning/CommitmentSecret';\nexport * from './lightning/CommitmentSecretStore';\nexport * from './lightning/Htlc';\nexport * from './lightning/HtlcDirection';\nexport * from './lightning/ScriptFactory';\nexport * from './lightning/TxFactory';\n\n// Original node-dlc core exports\nexport * from './dlc/CETCalculator';\nexport * from './dlc/CoinSelect';\nexport * from './dlc/HyperbolaPayoutCurve';\nexport * from './dlc/PayoutCurve';\nexport * from './dlc/PolynomialPayoutCurve';\nexport * from './dlc/TxBuilder';\nexport * from './dlc/TxFinalizer';\n\n// Finance subdirectory exports\nexport * from './dlc/finance/Builder';\nexport * from './dlc/finance/CoveredCall';\nexport * from './dlc/finance/CsoInfo';\nexport * from './dlc/finance/LinearPayout';\nexport * from './dlc/finance/LongCall';\nexport * from './dlc/finance/LongPut';\nexport * from './dlc/finance/OptionInfo';\nexport * from './dlc/finance/ShortPut';\nexport * from './utils/BigIntUtils';\nexport * from './utils/Precision';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"623ceae7447dc8d56462378af618f11e828ec807","contentHash":"c68d899dd7a2104b90baceb264a4b237ff12d767a05c3bb31777ae007743fb66"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/AsyncProcessingQueue.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/AsyncProcessingQueue.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":34}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":34}},"4":{"start":{"line":12,"column":8},"end":{"line":12,"column":16}},"5":{"start":{"line":13,"column":8},"end":{"line":13,"column":22}},"6":{"start":{"line":14,"column":8},"end":{"line":14,"column":42}},"7":{"start":{"line":15,"column":8},"end":{"line":15,"column":45}},"8":{"start":{"line":21,"column":8},"end":{"line":21,"column":35}},"9":{"start":{"line":24,"column":8},"end":{"line":25,"column":58}},"10":{"start":{"line":25,"column":12},"end":{"line":25,"column":58}},"11":{"start":{"line":32,"column":8},"end":{"line":32,"column":34}},"12":{"start":{"line":36,"column":8},"end":{"line":36,"column":30}},"13":{"start":{"line":39,"column":8},"end":{"line":47,"column":9}},"14":{"start":{"line":40,"column":12},"end":{"line":46,"column":13}},"15":{"start":{"line":41,"column":30},"end":{"line":41,"column":51}},"16":{"start":{"line":42,"column":16},"end":{"line":42,"column":38}},"17":{"start":{"line":45,"column":16},"end":{"line":45,"column":39}},"18":{"start":{"line":49,"column":8},"end":{"line":49,"column":29}},"19":{"start":{"line":51,"column":8},"end":{"line":51,"column":38}},"20":{"start":{"line":54,"column":0},"end":{"line":54,"column":52}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":5}},"loc":{"start":{"line":11,"column":20},"end":{"line":16,"column":5}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":19},"end":{"line":26,"column":5}},"line":20},"2":{"name":"(anonymous_2)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":15},"end":{"line":33,"column":5}},"line":31},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":5}},"loc":{"start":{"line":34,"column":19},"end":{"line":52,"column":5}},"line":34}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":8},"end":{"line":25,"column":58}},"type":"if","locations":[{"start":{"line":24,"column":8},"end":{"line":25,"column":58}},{"start":{"line":24,"column":8},"end":{"line":25,"column":58}}],"line":24}},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":1},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/AsyncProcessingQueue.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/AsyncProcessingQueue.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAEtC,mCAAgC;AAEhC;;;GAGG;AACH,MAAa,oBAAwB,SAAQ,qBAAY;IAOvD,YAAY,EAAmC;QAC7C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,aAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,KAAQ;QACrB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3B,yEAAyE;QACzE,uEAAuE;QACvE,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,MAAM;QAClB,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtB,kDAAkD;QAClD,oDAAoD;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI;gBACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACvB;YAAC,OAAO,EAAE,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;aACxB;SACF;QAED,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAErB,+DAA+D;QAC/D,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;CACF;AAtDD,oDAsDC","sourcesContent":["import { EventEmitter } from 'events';\n\nimport { Queue } from './Queue';\n\n/**\n * Serializes execution of events. This class is constructed with\n * a delegate function that is executed for each item that is enqueued.\n */\nexport class AsyncProcessingQueue<T> extends EventEmitter {\n private _fn: (...args: T[]) => Promise<void>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _queue: Queue<any>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _flushHandle: any;\n\n constructor(fn: (...args: T[]) => Promise<void>) {\n super();\n this._fn = fn;\n this._queue = new Queue();\n this._flush = this._flush.bind(this);\n }\n\n /**\n * Adds a new item to the processing queue\n */\n public enqueue(value: T): void {\n this._queue.enqueue(value);\n\n // Postpone flushing until end of event loop to allow multiple operations\n // to enqueue. This handle will be cleared once flushing has completed.\n if (!this._flushHandle) this._flushHandle = setImmediate(this._flush);\n }\n\n /**\n * Gets the number of pending items in the processor queue\n * @type {number}\n */\n get size(): number {\n return this._queue.length;\n }\n\n private async _flush() {\n // emit that flushing is starting\n this.emit('flushing');\n\n // process all items on the queue, even items that\n // are added to the queue while flushing is occuring\n while (this._queue.length > 0) {\n try {\n const value = this._queue.dequeue();\n await this._fn(value);\n } catch (ex) {\n this.emit('error', ex);\n }\n }\n\n // emit flushing has completed\n this.emit('flushed');\n\n // clear flush handle so that next enqueue will trigger a flush\n this._flushHandle = undefined;\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1f1e56e260f76c4bbc2bdb67663f1409c0b18083","contentHash":"f61e64078e7b61dc32d374a37a24e0cd74ace41ba5046ae08876c8ba98c6b43e"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Queue.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Queue.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":23}},"2":{"start":{"line":4,"column":21},"end":{"line":4,"column":44}},"3":{"start":{"line":10,"column":8},"end":{"line":10,"column":51}},"4":{"start":{"line":16,"column":8},"end":{"line":16,"column":56}},"5":{"start":{"line":22,"column":8},"end":{"line":22,"column":33}},"6":{"start":{"line":28,"column":8},"end":{"line":28,"column":30}},"7":{"start":{"line":34,"column":8},"end":{"line":34,"column":36}},"8":{"start":{"line":37,"column":0},"end":{"line":37,"column":22}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":18},"end":{"line":11,"column":5}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":11},"end":{"line":17,"column":5}},"line":15},"2":{"name":"(anonymous_2)","decl":{"start":{"line":21,"column":4},"end":{"line":21,"column":5}},"loc":{"start":{"line":21,"column":17},"end":{"line":23,"column":5}},"line":21},"3":{"name":"(anonymous_3)","decl":{"start":{"line":27,"column":4},"end":{"line":27,"column":5}},"loc":{"start":{"line":27,"column":19},"end":{"line":29,"column":5}},"line":27},"4":{"name":"(anonymous_4)","decl":{"start":{"line":33,"column":4},"end":{"line":33,"column":5}},"loc":{"start":{"line":33,"column":14},"end":{"line":35,"column":5}},"line":33}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":15},"end":{"line":16,"column":55}},"type":"binary-expr","locations":[{"start":{"line":16,"column":15},"end":{"line":16,"column":30}},{"start":{"line":16,"column":34},"end":{"line":16,"column":55}}],"line":16}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":0,"8":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Queue.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Queue.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C;;GAEG;AACH,MAAa,KAAK;IAAlB;QACU,UAAK,GAAkB,IAAI,uBAAU,EAAK,CAAC;IA6BrD,CAAC;IA3BC;;OAEG;IACI,IAAI;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,KAAQ;QACrB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;CACF;AA9BD,sBA8BC","sourcesContent":["import { LinkedList } from './LinkedList';\n\n/**\n * FIFO queue implemented with O(1) enqueue and dequeue operations\n */\nexport class Queue<T> {\n private _list: LinkedList<T> = new LinkedList<T>();\n\n /**\n * Peak the tip value\n */\n public peak(): T {\n return this._list.head && this._list.head.value;\n }\n\n /**\n * Returns the length of the queue\n */\n get length(): number {\n return this._list.length;\n }\n\n /**\n * Enqueue a value\n */\n public enqueue(value: T): void {\n this._list.add(value);\n }\n\n /**\n * Dequeue top most value\n */\n public dequeue(): T {\n return this._list.remove(0);\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"07b978c0cada647fd753dcd2dc057f2ff8095b71","contentHash":"6f55574cf79e7155eeb2c2295aaf91e9b6dab7402638dcccf3008e008a4b83d5"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedList.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedList.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"2":{"start":{"line":4,"column":25},"end":{"line":4,"column":52}},"3":{"start":{"line":11,"column":8},"end":{"line":11,"column":24}},"4":{"start":{"line":12,"column":8},"end":{"line":12,"column":25}},"5":{"start":{"line":13,"column":8},"end":{"line":13,"column":25}},"6":{"start":{"line":21,"column":21},"end":{"line":21,"column":63}},"7":{"start":{"line":23,"column":8},"end":{"line":28,"column":9}},"8":{"start":{"line":24,"column":12},"end":{"line":24,"column":29}},"9":{"start":{"line":25,"column":12},"end":{"line":25,"column":29}},"10":{"start":{"line":26,"column":12},"end":{"line":26,"column":26}},"11":{"start":{"line":27,"column":12},"end":{"line":27,"column":24}},"12":{"start":{"line":30,"column":8},"end":{"line":30,"column":30}},"13":{"start":{"line":31,"column":8},"end":{"line":31,"column":30}},"14":{"start":{"line":32,"column":8},"end":{"line":32,"column":25}},"15":{"start":{"line":33,"column":8},"end":{"line":33,"column":22}},"16":{"start":{"line":34,"column":8},"end":{"line":34,"column":20}},"17":{"start":{"line":40,"column":21},"end":{"line":40,"column":39}},"18":{"start":{"line":41,"column":8},"end":{"line":42,"column":30}},"19":{"start":{"line":42,"column":12},"end":{"line":42,"column":30}},"20":{"start":{"line":49,"column":8},"end":{"line":51,"column":9}},"21":{"start":{"line":50,"column":12},"end":{"line":50,"column":55}},"22":{"start":{"line":53,"column":26},"end":{"line":53,"column":35}},"23":{"start":{"line":54,"column":20},"end":{"line":54,"column":21}},"24":{"start":{"line":55,"column":8},"end":{"line":58,"column":9}},"25":{"start":{"line":56,"column":12},"end":{"line":56,"column":43}},"26":{"start":{"line":57,"column":12},"end":{"line":57,"column":20}},"27":{"start":{"line":59,"column":8},"end":{"line":59,"column":27}},"28":{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},"29":{"start":{"line":69,"column":12},"end":{"line":69,"column":55}},"30":{"start":{"line":72,"column":23},"end":{"line":72,"column":27}},"31":{"start":{"line":73,"column":23},"end":{"line":73,"column":27}},"32":{"start":{"line":75,"column":8},"end":{"line":80,"column":9}},"33":{"start":{"line":76,"column":12},"end":{"line":76,"column":35}},"34":{"start":{"line":77,"column":12},"end":{"line":77,"column":38}},"35":{"start":{"line":79,"column":12},"end":{"line":79,"column":33}},"36":{"start":{"line":82,"column":8},"end":{"line":87,"column":9}},"37":{"start":{"line":83,"column":12},"end":{"line":83,"column":35}},"38":{"start":{"line":84,"column":12},"end":{"line":84,"column":38}},"39":{"start":{"line":86,"column":12},"end":{"line":86,"column":33}},"40":{"start":{"line":89,"column":8},"end":{"line":93,"column":9}},"41":{"start":{"line":90,"column":12},"end":{"line":90,"column":44}},"42":{"start":{"line":91,"column":12},"end":{"line":91,"column":39}},"43":{"start":{"line":92,"column":12},"end":{"line":92,"column":39}},"44":{"start":{"line":95,"column":8},"end":{"line":96,"column":37}},"45":{"start":{"line":96,"column":12},"end":{"line":96,"column":37}},"46":{"start":{"line":97,"column":8},"end":{"line":98,"column":37}},"47":{"start":{"line":98,"column":12},"end":{"line":98,"column":37}},"48":{"start":{"line":99,"column":8},"end":{"line":99,"column":22}},"49":{"start":{"line":100,"column":8},"end":{"line":100,"column":32}},"50":{"start":{"line":103,"column":0},"end":{"line":103,"column":32}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":18},"end":{"line":14,"column":5}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":15},"end":{"line":35,"column":5}},"line":20},"2":{"name":"(anonymous_2)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":5}},"loc":{"start":{"line":39,"column":19},"end":{"line":43,"column":5}},"line":39},"3":{"name":"(anonymous_3)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":5}},"loc":{"start":{"line":47,"column":18},"end":{"line":60,"column":5}},"line":47},"4":{"name":"(anonymous_4)","decl":{"start":{"line":66,"column":4},"end":{"line":66,"column":5}},"loc":{"start":{"line":66,"column":18},"end":{"line":101,"column":5}},"line":66}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":8},"end":{"line":28,"column":9}},"type":"if","locations":[{"start":{"line":23,"column":8},"end":{"line":28,"column":9}},{"start":{"line":23,"column":8},"end":{"line":28,"column":9}}],"line":23},"1":{"loc":{"start":{"line":41,"column":8},"end":{"line":42,"column":30}},"type":"if","locations":[{"start":{"line":41,"column":8},"end":{"line":42,"column":30}},{"start":{"line":41,"column":8},"end":{"line":42,"column":30}}],"line":41},"2":{"loc":{"start":{"line":49,"column":8},"end":{"line":51,"column":9}},"type":"if","locations":[{"start":{"line":49,"column":8},"end":{"line":51,"column":9}},{"start":{"line":49,"column":8},"end":{"line":51,"column":9}}],"line":49},"3":{"loc":{"start":{"line":49,"column":12},"end":{"line":49,"column":44}},"type":"binary-expr","locations":[{"start":{"line":49,"column":12},"end":{"line":49,"column":21}},{"start":{"line":49,"column":25},"end":{"line":49,"column":44}}],"line":49},"4":{"loc":{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":70,"column":9}},{"start":{"line":68,"column":8},"end":{"line":70,"column":9}}],"line":68},"5":{"loc":{"start":{"line":68,"column":12},"end":{"line":68,"column":44}},"type":"binary-expr","locations":[{"start":{"line":68,"column":12},"end":{"line":68,"column":21}},{"start":{"line":68,"column":25},"end":{"line":68,"column":44}}],"line":68},"6":{"loc":{"start":{"line":75,"column":8},"end":{"line":80,"column":9}},"type":"if","locations":[{"start":{"line":75,"column":8},"end":{"line":80,"column":9}},{"start":{"line":75,"column":8},"end":{"line":80,"column":9}}],"line":75},"7":{"loc":{"start":{"line":82,"column":8},"end":{"line":87,"column":9}},"type":"if","locations":[{"start":{"line":82,"column":8},"end":{"line":87,"column":9}},{"start":{"line":82,"column":8},"end":{"line":87,"column":9}}],"line":82},"8":{"loc":{"start":{"line":89,"column":8},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":89,"column":8},"end":{"line":93,"column":9}},{"start":{"line":89,"column":8},"end":{"line":93,"column":9}}],"line":89},"9":{"loc":{"start":{"line":95,"column":8},"end":{"line":96,"column":37}},"type":"if","locations":[{"start":{"line":95,"column":8},"end":{"line":96,"column":37}},{"start":{"line":95,"column":8},"end":{"line":96,"column":37}}],"line":95},"10":{"loc":{"start":{"line":97,"column":8},"end":{"line":98,"column":37}},"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":98,"column":37}},{"start":{"line":97,"column":8},"end":{"line":98,"column":37}}],"line":97}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedList.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedList.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD;;;GAGG;AACH,MAAa,UAAU;IAAvB;QACS,WAAM,GAAG,CAAC,CAAC;QACX,SAAI,GAAsB,IAAI,CAAC;QAC/B,SAAI,GAAsB,IAAI,CAAC;IAqGxC,CAAC;IAnGC;;;;OAIG;IACI,GAAG,CAAC,KAAQ;QACjB,MAAM,IAAI,GAAG,IAAI,+BAAc,CAAC,KAAK,CAAC,CAAC;QAEvC,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;SACb;QAED,4BAA4B;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,KAAa;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,KAAa;QACzB,gCAAgC;QAChC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;YACpC,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;SAC5C;QAED,4BAA4B;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,KAAK,GAAG,KAAK,EAAE;YACpB,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;YAC/B,KAAK,EAAE,CAAC;SACT;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAa;QACzB,gCAAgC;QAChC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;YACpC,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;SAC5C;QAED,IAAI,UAAU,CAAC;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,gDAAgD;QAChD,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAE1B,cAAc;YACd,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACtB;QAED,mDAAmD;QACnD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAE1B,cAAc;YACd,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;SACtB;QAED,cAAc;QACd,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;YAC3B,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC;SAC5B;QAED,yCAAyC;QACzC,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvC,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;CACF;AAxGD,gCAwGC","sourcesContent":["import { LinkedListNode } from './LinkedListNode';\n\n/**\n * Implementation of a doubly linked-list that maintains both head and tail.\n * Tail maintenance allows for O(1) insertions at tail\n */\nexport class LinkedList<T> {\n public length = 0;\n public head: LinkedListNode<T> = null;\n public tail: LinkedListNode<T> = null;\n\n /**\n * Adds a node to the end of a linked List\n * @param T value\n * @returns {LinkedListNode}\n */\n public add(value: T): LinkedListNode<T> {\n const node = new LinkedListNode(value);\n\n // when empty list\n if (!this.head) {\n this.head = node;\n this.tail = node;\n this.length++;\n return node;\n }\n\n // non-empty, append to tail\n node.prev = this.tail;\n this.tail.next = node;\n this.tail = node;\n this.length++;\n return node;\n }\n\n /**\n * Finds the node at a specific position\n */\n public valueAt(index: number): T {\n const node = this.nodeAt(index);\n if (node) return node.value;\n }\n\n /**\n * Finds the node for the index or throws an out of range exception\n */\n public nodeAt(index: number): LinkedListNode<T> {\n // error when index out of range\n if (index < 0 || index > this.length) {\n throw new RangeError('Index out of range');\n }\n\n // seek until index is found\n let currentNode = this.head;\n let count = 0;\n while (count < index) {\n currentNode = currentNode.next;\n count++;\n }\n\n return currentNode;\n }\n\n /**\n * Removes the node at the index and returns its value.\n * Head or tail removal is an O(1) operation. For removal of other indexes\n * is at worst O(N).\n */\n public remove(index: number): T {\n // error when index out of range\n if (index < 0 || index > this.length) {\n throw new RangeError('Index out of range');\n }\n\n let removeNode;\n let prevNode = null;\n let nextNode = null;\n\n // first node simply removes the node at the tip\n if (index === 0) {\n removeNode = this.head;\n nextNode = this.head.next;\n\n // adjust head\n this.head = nextNode;\n }\n\n // last node, update the tail and mark next as null\n if (index === this.length - 1) {\n removeNode = this.tail;\n prevNode = this.tail.prev;\n\n // adjust tail\n this.tail = prevNode;\n }\n\n // middle node\n if (!removeNode) {\n removeNode = this.nodeAt(index);\n prevNode = removeNode.prev;\n nextNode = removeNode.next;\n }\n\n // splice out the node afer null checking\n if (prevNode) prevNode.next = nextNode;\n if (nextNode) nextNode.prev = prevNode;\n this.length--;\n\n return removeNode.value;\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"55c7d636a608d4dfb020262455928c58cd843f2b","contentHash":"e2bc48a60b1f1ed57d6f32bb113fa588f09fbfd191e27e14ee828d2330beb541"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedListNode.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedListNode.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"2":{"start":{"line":9,"column":8},"end":{"line":9,"column":27}},"3":{"start":{"line":10,"column":8},"end":{"line":10,"column":25}},"4":{"start":{"line":11,"column":8},"end":{"line":11,"column":25}},"5":{"start":{"line":14,"column":0},"end":{"line":14,"column":40}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":8,"column":23},"end":{"line":12,"column":5}},"line":8}},"branchMap":{},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":1},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedListNode.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/LinkedListNode.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAc;IAKzB;;OAEG;IACH,YAAY,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAbD,wCAaC","sourcesContent":["export class LinkedListNode<T> {\n public value: T;\n public prev: LinkedListNode<T>;\n public next: LinkedListNode<T>;\n\n /**\n * Creates a linked list node with the specified data\n */\n constructor(value: T) {\n this.value = value;\n this.prev = null;\n this.next = null;\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1800b3225efa38f7ee6ec8565071c6030c31b387","contentHash":"a3098549f5a62c093f319717fb16fce860f6cf90f60dea8b6106ca3c01342c0f"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Base32.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Base32.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}},"2":{"start":{"line":5,"column":15},"end":{"line":5,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":109}},"4":{"start":{"line":6,"column":80},"end":{"line":6,"column":103}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":66},"end":{"line":6,"column":67}},"loc":{"start":{"line":6,"column":78},"end":{"line":6,"column":105}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Base32.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/Base32.ts"],"names":[],"mappings":";;;AAAA,0EAA0E;AAC1E,2CAA0C;AAAjC,gGAAA,MAAM,OAAA","sourcesContent":["// Re-export Base32 from common package to maintain backward compatibility\nexport { Base32 } from '@node-dlc/common';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a8263ba3928d0b00fc3eee76b6189c58047fe609","contentHash":"8538db3396f236803eb2c43937b08f2d5ac4c9915b470ff52842778111b936ae"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BigIntUtils.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BigIntUtils.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":52}},"2":{"start":{"line":5,"column":15},"end":{"line":5,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":125}},"4":{"start":{"line":6,"column":88},"end":{"line":6,"column":119}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":115}},"6":{"start":{"line":7,"column":83},"end":{"line":7,"column":109}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":74},"end":{"line":6,"column":75}},"loc":{"start":{"line":6,"column":86},"end":{"line":6,"column":121}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":69},"end":{"line":7,"column":70}},"loc":{"start":{"line":7,"column":81},"end":{"line":7,"column":111}},"line":7}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":1,"6":0},"f":{"0":0,"1":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BigIntUtils.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BigIntUtils.ts"],"names":[],"mappings":";;;AAAA,yFAAyF;AACzF,2CAA6D;AAApD,wGAAA,cAAc,OAAA;AAAE,mGAAA,SAAS,OAAA","sourcesContent":["// Re-export BigIntUtils functions from common package to maintain backward compatibility\nexport { bigintToBuffer, calcBytes } from '@node-dlc/common';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"424c2280cfe618d713d555e6d4d422ba71133bfb","contentHash":"7918397f37d9c5926b5b211c474914146d40f85b27319912e9e70d6928160eec"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BitField.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BitField.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":26}},"2":{"start":{"line":5,"column":15},"end":{"line":5,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":113}},"4":{"start":{"line":6,"column":82},"end":{"line":6,"column":107}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":68},"end":{"line":6,"column":69}},"loc":{"start":{"line":6,"column":80},"end":{"line":6,"column":109}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BitField.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/BitField.ts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,2CAA4C;AAAnC,kGAAA,QAAQ,OAAA","sourcesContent":["// Re-export BitField from common package to maintain backward compatibility\nexport { BitField } from '@node-dlc/common';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"17d3ef1cf75c6bec520a0aa408da525d82c81c88","contentHash":"994cc4c668219be5b3826be79f7b157442a2d97a880b168be3abf55fc7d74147"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ChannelId.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ChannelId.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"2":{"start":{"line":5,"column":15},"end":{"line":5,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":115}},"4":{"start":{"line":6,"column":83},"end":{"line":6,"column":109}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":69},"end":{"line":6,"column":70}},"loc":{"start":{"line":6,"column":81},"end":{"line":6,"column":111}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ChannelId.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ChannelId.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAC7E,2CAA6C;AAApC,mGAAA,SAAS,OAAA","sourcesContent":["// Re-export ChannelId from common package to maintain backward compatibility\nexport { ChannelId } from '@node-dlc/common';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6380df94f73429e600dda6c5271dd11c4334e31f","contentHash":"0b9ef7d79339d542b4c2a96f44a35005c6a0819084218357d01f43ec8dab877f"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelId.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelId.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"2":{"start":{"line":5,"column":15},"end":{"line":5,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":125}},"4":{"start":{"line":6,"column":88},"end":{"line":6,"column":119}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":74},"end":{"line":6,"column":75}},"loc":{"start":{"line":6,"column":86},"end":{"line":6,"column":121}},"line":6}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelId.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelId.ts"],"names":[],"mappings":";;;AAAA,kFAAkF;AAClF,2CAAkD;AAAzC,wGAAA,cAAc,OAAA","sourcesContent":["// Re-export ShortChannelId from common package to maintain backward compatibility\nexport { ShortChannelId } from '@node-dlc/common';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a56922097b1255b2d32bdc5f0c6bfa57ef103a50","contentHash":"37d1c01dafea31d902882f4fbb88b25f385e8c676b3370a6bb8525bd4f0811bd"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelIdUtils.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelIdUtils.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":211}},"2":{"start":{"line":5,"column":15},"end":{"line":5,"column":42}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":145}},"4":{"start":{"line":6,"column":98},"end":{"line":6,"column":139}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":145}},"6":{"start":{"line":7,"column":98},"end":{"line":7,"column":139}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":145}},"8":{"start":{"line":8,"column":98},"end":{"line":8,"column":139}},"9":{"start":{"line":9,"column":0},"end":{"line":9,"column":141}},"10":{"start":{"line":9,"column":96},"end":{"line":9,"column":135}},"11":{"start":{"line":10,"column":0},"end":{"line":10,"column":141}},"12":{"start":{"line":10,"column":96},"end":{"line":10,"column":135}},"13":{"start":{"line":11,"column":0},"end":{"line":11,"column":141}},"14":{"start":{"line":11,"column":96},"end":{"line":11,"column":135}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":84},"end":{"line":6,"column":85}},"loc":{"start":{"line":6,"column":96},"end":{"line":6,"column":141}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":84},"end":{"line":7,"column":85}},"loc":{"start":{"line":7,"column":96},"end":{"line":7,"column":141}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":84},"end":{"line":8,"column":85}},"loc":{"start":{"line":8,"column":96},"end":{"line":8,"column":141}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":9,"column":82},"end":{"line":9,"column":83}},"loc":{"start":{"line":9,"column":94},"end":{"line":9,"column":137}},"line":9},"4":{"name":"(anonymous_4)","decl":{"start":{"line":10,"column":82},"end":{"line":10,"column":83}},"loc":{"start":{"line":10,"column":94},"end":{"line":10,"column":137}},"line":10},"5":{"name":"(anonymous_5)","decl":{"start":{"line":11,"column":82},"end":{"line":11,"column":83}},"loc":{"start":{"line":11,"column":94},"end":{"line":11,"column":137}},"line":11}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":1,"6":0,"7":1,"8":0,"9":1,"10":0,"11":1,"12":0,"13":1,"14":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelIdUtils.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/ShortChannelIdUtils.ts"],"names":[],"mappings":";;;AAAA,4FAA4F;AAC5F,2CAO0B;AANxB,kHAAA,wBAAwB,OAAA;AACxB,kHAAA,wBAAwB,OAAA;AACxB,kHAAA,wBAAwB,OAAA;AACxB,gHAAA,sBAAsB,OAAA;AACtB,gHAAA,sBAAsB,OAAA;AACtB,gHAAA,sBAAsB,OAAA","sourcesContent":["// Re-export ShortChannelId utilities from common package to maintain backward compatibility\nexport {\n shortChannelIdFromBuffer,\n shortChannelIdFromNumber,\n shortChannelIdFromString,\n shortChannelIdToBuffer,\n shortChannelIdToNumber,\n shortChannelIdToString,\n} from '@node-dlc/common';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b2a0685592afb298ef82679a3ae02ab97bf59a0a","contentHash":"9a0b9c59a826615854777cba330c0704da96cfca0436a97d06843a3be165ffa9"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelId.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelId.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":14,"column":21},"end":{"line":14,"column":73}},"4":{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},"5":{"start":{"line":16,"column":12},"end":{"line":16,"column":59}},"6":{"start":{"line":18,"column":8},"end":{"line":18,"column":46}},"7":{"start":{"line":19,"column":8},"end":{"line":19,"column":48}},"8":{"start":{"line":20,"column":8},"end":{"line":20,"column":35}},"9":{"start":{"line":23,"column":8},"end":{"line":23,"column":27}},"10":{"start":{"line":29,"column":8},"end":{"line":29,"column":39}},"11":{"start":{"line":35,"column":8},"end":{"line":35,"column":28}},"12":{"start":{"line":41,"column":8},"end":{"line":41,"column":42}},"13":{"start":{"line":48,"column":8},"end":{"line":48,"column":46}},"14":{"start":{"line":51,"column":0},"end":{"line":51,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":13,"column":34},"end":{"line":21,"column":5}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":5}},"loc":{"start":{"line":22,"column":23},"end":{"line":24,"column":5}},"line":22},"2":{"name":"(anonymous_2)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":15},"end":{"line":30,"column":5}},"line":28},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":5}},"loc":{"start":{"line":34,"column":15},"end":{"line":36,"column":5}},"line":34},"4":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":5}},"loc":{"start":{"line":40,"column":12},"end":{"line":42,"column":5}},"line":40},"5":{"name":"(anonymous_5)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":5}},"loc":{"start":{"line":47,"column":18},"end":{"line":49,"column":5}},"line":47}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},"type":"if","locations":[{"start":{"line":15,"column":8},"end":{"line":17,"column":9}},{"start":{"line":15,"column":8},"end":{"line":17,"column":9}}],"line":15}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelId.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelId.ts"],"names":[],"mappings":";;;AAAA,+CAA4D;AAE5D;;;;;;GAMG;AACH,MAAa,SAAS;IACb,MAAM,CAAC,YAAY,CAAC,QAAkB;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAa,CAAC,GAAG,CAAC,CAAC;QAExD,IAAI,QAAQ,CAAC,WAAW,GAAG,MAAM,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;QAExC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,YAAqB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAEtC;;OAEG;IACI,QAAQ;QACb,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAgB;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;CACF;AA5CD,8BA4CC","sourcesContent":["import { HashByteOrder, OutPoint } from '@node-dlc/bitcoin';\n\n/**\n * ChannelId type that that encapsulates an outpoint as a 32-byte value\n * and is used to identify a channel. This type is defined in BOLT 2\n * under the peer protocol. It is defined as combinging the funding_txid\n * and the funding_output_index, using big-endian XOR (meaning the\n * output_index modifies the last two bytes).\n */\nexport class ChannelId {\n public static fromOutPoint(outpoint: OutPoint): ChannelId {\n const txid = outpoint.txid.serialize(HashByteOrder.RPC);\n\n if (outpoint.outputIndex > 0xffff) {\n throw new Error('Invalid output index length');\n }\n\n txid[30] ^= outpoint.outputIndex >> 8;\n txid[31] ^= outpoint.outputIndex & 0xff;\n\n return new ChannelId(txid);\n }\n\n constructor(readonly value: Buffer) {}\n\n /**\n * Converts the ChannelId into a buffer\n */\n public toBuffer(): Buffer {\n return Buffer.from(this.value);\n }\n\n /**\n * Converts the ChannelId into a hex-encoded string\n */\n public toString(): string {\n return this.toHex();\n }\n\n /**\n * Converts the ChannelId to a hex-encoded string\n */\n public toHex(): string {\n return this.value.toString('hex');\n }\n\n /**\n * Returns true if the ChannelIds are byte-wise equal\n * @param other\n */\n public equals(other: ChannelId): boolean {\n return this.value.equals(other.value);\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0649947ec647a6fb533c36b3e80c2c4843aa360b","contentHash":"7fe23fbfe7c4afc5d949d394c0be2e7f2d340860f74721eeb043ab9b814cee78"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelKeys.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelKeys.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"5":{"start":{"line":6,"column":6},"end":{"line":6,"column":68}},"6":{"start":{"line":6,"column":51},"end":{"line":6,"column":63}},"7":{"start":{"line":8,"column":4},"end":{"line":8,"column":39}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"9":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"11":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"12":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"14":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"16":{"start":{"line":19,"column":31},"end":{"line":19,"column":42}},"17":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"19":{"start":{"line":21,"column":21},"end":{"line":21,"column":141}},"20":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"21":{"start":{"line":21,"column":109},"end":{"line":21,"column":141}},"22":{"start":{"line":22,"column":4},"end":{"line":22,"column":36}},"23":{"start":{"line":23,"column":4},"end":{"line":23,"column":18}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":62}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":29}},"26":{"start":{"line":27,"column":15},"end":{"line":27,"column":56}},"27":{"start":{"line":41,"column":22},"end":{"line":41,"column":83}},"28":{"start":{"line":42,"column":8},"end":{"line":42,"column":64}},"29":{"start":{"line":59,"column":26},"end":{"line":59,"column":68}},"30":{"start":{"line":60,"column":22},"end":{"line":60,"column":83}},"31":{"start":{"line":61,"column":8},"end":{"line":61,"column":65}},"32":{"start":{"line":76,"column":23},"end":{"line":76,"column":84}},"33":{"start":{"line":77,"column":18},"end":{"line":77,"column":67}},"34":{"start":{"line":78,"column":23},"end":{"line":78,"column":84}},"35":{"start":{"line":79,"column":18},"end":{"line":79,"column":76}},"36":{"start":{"line":80,"column":8},"end":{"line":80,"column":53}},"37":{"start":{"line":94,"column":26},"end":{"line":94,"column":68}},"38":{"start":{"line":95,"column":35},"end":{"line":95,"column":86}},"39":{"start":{"line":96,"column":23},"end":{"line":96,"column":84}},"40":{"start":{"line":97,"column":18},"end":{"line":97,"column":68}},"41":{"start":{"line":98,"column":23},"end":{"line":98,"column":84}},"42":{"start":{"line":99,"column":18},"end":{"line":99,"column":77}},"43":{"start":{"line":100,"column":23},"end":{"line":100,"column":54}},"44":{"start":{"line":101,"column":8},"end":{"line":101,"column":22}},"45":{"start":{"line":104,"column":0},"end":{"line":104,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":49},"end":{"line":6,"column":65}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":80},"end":{"line":13,"column":81}},"loc":{"start":{"line":13,"column":95},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":5},"end":{"line":15,"column":6}},"loc":{"start":{"line":15,"column":20},"end":{"line":17,"column":1}},"line":15},"5":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":50},"end":{"line":18,"column":51}},"loc":{"start":{"line":18,"column":65},"end":{"line":24,"column":1}},"line":18},"6":{"name":"(anonymous_6)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":5}},"loc":{"start":{"line":40,"column":55},"end":{"line":43,"column":5}},"line":40},"7":{"name":"(anonymous_7)","decl":{"start":{"line":58,"column":4},"end":{"line":58,"column":5}},"loc":{"start":{"line":58,"column":62},"end":{"line":62,"column":5}},"line":58},"8":{"name":"(anonymous_8)","decl":{"start":{"line":75,"column":4},"end":{"line":75,"column":5}},"loc":{"start":{"line":75,"column":65},"end":{"line":81,"column":5}},"line":75},"9":{"name":"(anonymous_9)","decl":{"start":{"line":93,"column":4},"end":{"line":93,"column":5}},"loc":{"start":{"line":93,"column":78},"end":{"line":102,"column":5}},"line":93}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":12,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{"line":3,"column":4},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{"line":5,"column":4},"end":{"line":7,"column":5}}],"line":5},"4":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":85}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":13}},{"start":{"line":5,"column":18},"end":{"line":5,"column":84}}],"line":5},"5":{"loc":{"start":{"line":5,"column":18},"end":{"line":5,"column":84}},"type":"cond-expr","locations":[{"start":{"line":5,"column":34},"end":{"line":5,"column":47}},{"start":{"line":5,"column":50},"end":{"line":5,"column":84}}],"line":5},"6":{"loc":{"start":{"line":5,"column":50},"end":{"line":5,"column":84}},"type":"binary-expr","locations":[{"start":{"line":5,"column":50},"end":{"line":5,"column":63}},{"start":{"line":5,"column":67},"end":{"line":5,"column":84}}],"line":5},"7":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{"line":10,"column":4},"end":{"line":10,"column":33}}],"line":10},"8":{"loc":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":30}},{"start":{"line":13,"column":34},"end":{"line":13,"column":57}},{"start":{"line":13,"column":63},"end":{"line":17,"column":1}}],"line":13},"9":{"loc":{"start":{"line":13,"column":63},"end":{"line":17,"column":1}},"type":"cond-expr","locations":[{"start":{"line":13,"column":80},"end":{"line":15,"column":1}},{"start":{"line":15,"column":5},"end":{"line":17,"column":1}}],"line":13},"10":{"loc":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":45}},{"start":{"line":18,"column":50},"end":{"line":24,"column":1}}],"line":18},"11":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},{"start":{"line":19,"column":4},"end":{"line":19,"column":42}}],"line":19},"12":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":29}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":11}},{"start":{"line":19,"column":15},"end":{"line":19,"column":29}}],"line":19},"13":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},{"start":{"line":21,"column":4},"end":{"line":21,"column":141}}],"line":21},"14":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},{"start":{"line":21,"column":40},"end":{"line":21,"column":141}}],"line":21},"15":{"loc":{"start":{"line":21,"column":44},"end":{"line":21,"column":107}},"type":"binary-expr","locations":[{"start":{"line":21,"column":44},"end":{"line":21,"column":59}},{"start":{"line":21,"column":63},"end":{"line":21,"column":107}}],"line":21}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":0,"13":0,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":1,"25":1,"26":1,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":0,"7":0,"8":0,"9":0},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[1,1,1],"9":[1,0],"10":[1,1,1],"11":[1,0],"12":[1,1],"13":[0,0],"14":[0,0],"15":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelKeys.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ChannelKeys.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAE3C,MAAa,WAAW;IACtB;;;;;;;;;;OAUG;IACI,MAAM,CAAC,YAAY,CACxB,kBAA0B,EAC1B,SAAiB;QAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,MAAM,CAAC,aAAa,CACzB,kBAA0B,EAC1B,eAAuB;QAEvB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,sBAAsB,CAClC,kBAA0B,EAC1B,SAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAC/C,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAE5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAC/C,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAErE,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,uBAAuB,CACnC,wBAAgC,EAChC,eAAuB;QAEvB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,CAC5C,wBAAwB,EACxB,IAAI,CACL,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAC/C,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAC/C,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA1GD,kCA0GC","sourcesContent":["import * as crypto from '@node-dlc/crypto';\n\nexport class ChannelKeys {\n /**\n * Derives a public key that can be used for local or remote\n * pubkey, htlc_pubkey, or delayed_pubkey\n *\n * Derived via:\n * pubkey = basepoint + SHA256(per_commitment_point || basepoint) * G\n *\n * @param perCommitmentPoint 33-byte buffer\n * @param basePoint 33-byte base point\n * @returns 33-byte buffer\n */\n public static derivePubKey(\n perCommitmentPoint: Buffer,\n basePoint: Buffer,\n ): Buffer {\n const tweak = crypto.sha256(Buffer.concat([perCommitmentPoint, basePoint]));\n return crypto.publicKeyTweakAdd(basePoint, tweak, true);\n }\n\n /**\n * Derives the private keys based on local basepoint secrets and can\n * be used to derive per-commitment\n * - payment_scret\n * - delayedpayment_secret\n * - htlc_secret\n *\n * Derived via:\n * privkey = basepoint_secret + SHA256(per_commitment_point || basepoint)\n *\n * @param perCommitmentPoint 32-byte buffer\n * @param basePointSecret 32-byte buffer\n * @return 32-byte buffer\n */\n public static derivePrivKey(\n perCommitmentPoint: Buffer,\n basePointSecret: Buffer,\n ): Buffer {\n const basePoint = crypto.getPublicKey(basePointSecret, true);\n const tweak = crypto.sha256(Buffer.concat([perCommitmentPoint, basePoint]));\n return crypto.privateKeyTweakAdd(basePointSecret, tweak);\n }\n\n /**\n * Derives the revocationpubkey blinded key for either local or\n * remote revocation pubkey generation.\n *\n * Derived via:\n * revocationpubkey = revocation_basepoint * SHA256(revocation_basepoint || per_commitment_point) +\n * per_commitment_point * SHA256(per_commitment_point || revocation_basepoint)\n *\n * @param perCommitmentPoint 33-byte buffer\n * @param basePoint 33-byte buffer\n * @returns 33-byte buffer\n */\n public static deriveRevocationPubKey(\n perCommitmentPoint: Buffer,\n basePoint: Buffer,\n ): Buffer {\n const tweakA = crypto.sha256(\n Buffer.concat([basePoint, perCommitmentPoint]),\n );\n const a = crypto.publicKeyTweakMul(basePoint, tweakA, true);\n\n const tweakB = crypto.sha256(\n Buffer.concat([perCommitmentPoint, basePoint]),\n );\n const b = crypto.publicKeyTweakMul(perCommitmentPoint, tweakB, true);\n\n return crypto.publicKeyCombine([a, b], true);\n }\n\n /**\n * Derives the revocationprivkey which is used by the local node\n * and with a per_commitment_secret that was revealed by the\n * counterparty.\n *\n * Derived via:\n * revocationprivkey = revocation_basepoint_secret * SHA256(revocation_basepoint || per_commitment_point) +\n * per_commitment_secret * SHA256(per_commitment_point || revocation_basepoint)\n * @param perCommitmentPointSecret 32-byte buffer\n * @param basePointSecret 32-byte buffer\n */\n public static deriveRevocationPrivKey(\n perCommitmentPointSecret: Buffer,\n basePointSecret: Buffer,\n ): Buffer {\n const basePoint = crypto.getPublicKey(basePointSecret, true);\n const perCommitmentPoint = crypto.getPublicKey(\n perCommitmentPointSecret,\n true,\n );\n\n const tweakA = crypto.sha256(\n Buffer.concat([basePoint, perCommitmentPoint]),\n );\n const a = crypto.privateKeyTweakMul(basePointSecret, tweakA);\n\n const tweakB = crypto.sha256(\n Buffer.concat([perCommitmentPoint, basePoint]),\n );\n const b = crypto.privateKeyTweakMul(perCommitmentPointSecret, tweakB);\n\n const result = crypto.privateKeyTweakAdd(a, b);\n return result;\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"81cb9723609101dd21b4011a998661131b50ba12","contentHash":"fe56d548edfadf0151401df860580607fb527f1b8a0d215ba66c502a5b616751"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentNumber.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentNumber.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":17},"end":{"line":6,"column":44}},"5":{"start":{"line":19,"column":8},"end":{"line":19,"column":104}},"6":{"start":{"line":32,"column":8},"end":{"line":32,"column":109}},"7":{"start":{"line":43,"column":21},"end":{"line":43,"column":77}},"8":{"start":{"line":44,"column":22},"end":{"line":44,"column":69}},"9":{"start":{"line":45,"column":22},"end":{"line":45,"column":55}},"10":{"start":{"line":46,"column":8},"end":{"line":46,"column":46}},"11":{"start":{"line":61,"column":8},"end":{"line":62,"column":32}},"12":{"start":{"line":71,"column":21},"end":{"line":71,"column":90}},"13":{"start":{"line":72,"column":8},"end":{"line":72,"column":70}},"14":{"start":{"line":75,"column":0},"end":{"line":75,"column":44}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":34},"end":{"line":20,"column":5}},"line":18},"1":{"name":"(anonymous_1)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":34},"end":{"line":33,"column":5}},"line":31},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":4},"end":{"line":42,"column":5}},"loc":{"start":{"line":42,"column":70},"end":{"line":47,"column":5}},"line":42},"3":{"name":"(anonymous_3)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":63},"end":{"line":63,"column":5}},"line":60},"4":{"name":"(anonymous_4)","decl":{"start":{"line":70,"column":4},"end":{"line":70,"column":5}},"loc":{"start":{"line":70,"column":51},"end":{"line":73,"column":5}},"line":70}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentNumber.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentNumber.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,2CAA+C;AAC/C,6CAA0C;AAE1C,MAAa,gBAAgB;IAC3B;;;;;;;;;OASG;IACI,MAAM,CAAC,WAAW,CAAC,SAAiB;QACzC,OAAO,IAAI,kBAAQ,CACjB,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CACjE,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACI,MAAM,CAAC,WAAW,CAAC,SAAiB;QACzC,OAAO,IAAI,kBAAQ,CACjB,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CACtE,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAM,CAClB,QAAkB,EAClB,QAAkB,EAClB,aAAqB,EACrB,eAAuB;QAEvB,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;QAChD,OAAO,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,OAAO,CACnB,UAAkB,EAClB,aAAqB,EACrB,eAAuB;QAEvB,OAAO,CACL,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,eAAe,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,CACnB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,OAAO,CACpB,aAAqB,EACrB,eAAuB;QAEvB,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,IAAA,oBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;CACF;AAzFD,4CAyFC","sourcesContent":["import { LockTime, Sequence } from '@node-dlc/bitcoin';\nimport { bigFromBufBE } from '@node-dlc/bufio';\nimport { sha256 } from '@node-dlc/crypto';\n\nexport class CommitmentNumber {\n /**\n * Using the obscured commitment number, creates a Sequence with\n * the upper byte set to 0x80 and the lower three bytes set to the\n * upper 3 bytes of the 48-bit commitment number.\n *\n * The upper most byte is set to 0x80 so that the relative lock time\n * is disabled.\n *\n * @param commitment commitment number to obscure\n */\n public static getSequence(obscurred: bigint): Sequence {\n return new Sequence(\n Number((BigInt(0x80) << BigInt(24)) | (obscurred >> BigInt(24))),\n );\n }\n\n /**\n * Using the obscured commitment number, creates a LockTime with\n * the upper byte set to 0x20 and the lower three bytes set to the\n * lower 3 bytes of the 48-bit commitment number.\n *\n * The uppermost byte is set to 0x20 so the LockTime uses a time\n * based absolute locktime that has already expired.\n *\n * @param obscurred obscurred commitment number\n */\n public static getLockTime(obscurred: bigint): LockTime {\n return new LockTime(\n Number((BigInt(0x20) << BigInt(24)) | (obscurred & BigInt(0xffffff))),\n );\n }\n\n /**\n * Reveals the commitment number provided by the nSequence and\n * nLockTime values. This function reverses the obscurring using the\n * known payment base points.\n *\n * @param locktime\n * @param sequence\n */\n public static reveal(\n locktime: LockTime,\n sequence: Sequence,\n openBasePoint: Buffer,\n acceptBasePoint: Buffer,\n ): number {\n const hash = CommitmentNumber.getHash(openBasePoint, acceptBasePoint);\n const upper = BigInt(sequence.value & 0xffffff) << BigInt(24);\n const lower = BigInt(locktime.value & 0xffffff);\n return Number(hash ^ (upper | lower));\n }\n\n /**\n * Defined in BOLT3, the obscurred commitment number is attached to the\n * commitment transaction. The 48-bit commitment number is broken into\n * two pieces, the lower 3-bytes are obscured in nLocketime and the\n * upper 3-bytes are obscured in the funding input's nSequence.\n *\n * The obscurred commitment number is calculated as the:\n * sha256(open_channel payment_basepoint || accept_channel payment_basepoint) ^ commitment_number\n * @param commitment\n * @param openBasePoint\n * @param acceptBasePoint\n */\n public static obscure(\n commitment: number,\n openBasePoint: Buffer,\n acceptBasePoint: Buffer,\n ): bigint {\n return (\n CommitmentNumber.getHash(openBasePoint, acceptBasePoint) ^\n BigInt(commitment)\n );\n }\n\n /**\n * Obtains the lower 6-bytes from the sha256 of the open_channel\n * basepoint and the accept_channel basepoint.\n * @param openBasePoint\n * @param acceptBasePoint\n */\n private static getHash(\n openBasePoint: Buffer,\n acceptBasePoint: Buffer,\n ): bigint {\n const hash = sha256(Buffer.concat([openBasePoint, acceptBasePoint]));\n return bigFromBufBE(hash.slice(hash.length - 6));\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"87ab3a48dc87cc5f281983cf26f3d3797b99ec86","contentHash":"d64a207e1af92cbdd1cd39237bae81b7434605dc92205e51c51a4eacf4f2e32f"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecret.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecret.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":44}},"3":{"start":{"line":30,"column":16},"end":{"line":30,"column":33}},"4":{"start":{"line":31,"column":8},"end":{"line":39,"column":9}},"5":{"start":{"line":31,"column":21},"end":{"line":31,"column":29}},"6":{"start":{"line":32,"column":12},"end":{"line":38,"column":13}},"7":{"start":{"line":34,"column":34},"end":{"line":34,"column":51}},"8":{"start":{"line":35,"column":33},"end":{"line":35,"column":38}},"9":{"start":{"line":36,"column":16},"end":{"line":36,"column":62}},"10":{"start":{"line":37,"column":16},"end":{"line":37,"column":44}},"11":{"start":{"line":40,"column":8},"end":{"line":40,"column":17}},"12":{"start":{"line":43,"column":0},"end":{"line":43,"column":44}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":38},"end":{"line":41,"column":5}},"line":28}},"branchMap":{"0":{"loc":{"start":{"line":28,"column":27},"end":{"line":28,"column":36}},"type":"default-arg","locations":[{"start":{"line":28,"column":34},"end":{"line":28,"column":36}}],"line":28},"1":{"loc":{"start":{"line":32,"column":12},"end":{"line":38,"column":13}},"type":"if","locations":[{"start":{"line":32,"column":12},"end":{"line":38,"column":13}},{"start":{"line":32,"column":12},"end":{"line":38,"column":13}}],"line":32}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":1},"f":{"0":0},"b":{"0":[0],"1":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecret.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecret.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C,MAAa,gBAAgB;IAC3B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,MAAM,CAAC,MAAM,CAAC,IAAY,EAAE,CAAS,EAAE,IAAI,GAAG,EAAE;QACrD,QAAQ;QACR,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1B,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChC,8CAA8C;gBAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;gBAC9C,CAAC,GAAG,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC;aACf;SACF;QACD,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAtCD,4CAsCC","sourcesContent":["import { sha256 } from '@node-dlc/crypto';\n\nexport class CommitmentSecret {\n /**\n * Generic version of commitment secret generator as defined in\n * BOLT3.\n *\n * This function works by decrementing from bits to 0. If the index\n * number has the corresponding bit set, it flips the bit in the\n * secret and hashes it.\n *\n * The natural conclusion is the first secret flips every bit and\n * the last secret flips zero (and is thus the seed).\n *\n * This function can be used for generate the local per-commitment\n * secret based on the per-commitment seed and a commitment index\n * (in this case it) generates all 48 bits.\n *\n * This function can also be used to generate prior commitment\n * secrets from a newer secret, which acts as a prefix.\n *\n * @param base base secret that will be used to derive from\n * @param i secret at index I to generate\n * @param bits bits to evaluate, default is 48\n */\n public static derive(base: Buffer, i: bigint, bits = 48): Buffer {\n // intii\n let p = Buffer.from(base);\n\n for (let b = bits - 1; b >= 0; b--) {\n if (i & (BigInt(1) << BigInt(b))) {\n // flip the specified bit in the specific byte\n const byteIndex = Math.floor(b / 8);\n const bitIndex = b % 8;\n p[byteIndex] = p[byteIndex] ^ (1 << bitIndex);\n p = sha256(p);\n }\n }\n return p;\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"34eb7d188080c41dec62beca484f2f87808ac2db","contentHash":"1631e84a17e31cfd16f1b2677959133c44e6f327c1ded182de2d4ddc17ed597d"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecretStore.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecretStore.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":39}},"2":{"start":{"line":4,"column":27},"end":{"line":4,"column":56}},"3":{"start":{"line":22,"column":8},"end":{"line":25,"column":9}},"4":{"start":{"line":22,"column":21},"end":{"line":22,"column":30}},"5":{"start":{"line":23,"column":12},"end":{"line":24,"column":33}},"6":{"start":{"line":24,"column":16},"end":{"line":24,"column":33}},"7":{"start":{"line":26,"column":8},"end":{"line":26,"column":18}},"8":{"start":{"line":29,"column":8},"end":{"line":29,"column":37}},"9":{"start":{"line":30,"column":8},"end":{"line":32,"column":9}},"10":{"start":{"line":30,"column":21},"end":{"line":30,"column":22}},"11":{"start":{"line":31,"column":12},"end":{"line":31,"column":70}},"12":{"start":{"line":43,"column":18},"end":{"line":43,"column":52}},"13":{"start":{"line":46,"column":8},"end":{"line":52,"column":9}},"14":{"start":{"line":46,"column":21},"end":{"line":46,"column":22}},"15":{"start":{"line":47,"column":29},"end":{"line":47,"column":51}},"16":{"start":{"line":48,"column":28},"end":{"line":48,"column":104}},"17":{"start":{"line":49,"column":12},"end":{"line":51,"column":13}},"18":{"start":{"line":50,"column":16},"end":{"line":50,"column":65}},"19":{"start":{"line":54,"column":8},"end":{"line":54,"column":42}},"20":{"start":{"line":55,"column":8},"end":{"line":55,"column":48}},"21":{"start":{"line":64,"column":8},"end":{"line":74,"column":9}},"22":{"start":{"line":64,"column":21},"end":{"line":64,"column":22}},"23":{"start":{"line":67,"column":25},"end":{"line":67,"column":75}},"24":{"start":{"line":71,"column":12},"end":{"line":73,"column":13}},"25":{"start":{"line":72,"column":16},"end":{"line":72,"column":96}},"26":{"start":{"line":75,"column":8},"end":{"line":75,"column":60}},"27":{"start":{"line":78,"column":0},"end":{"line":78,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":21,"column":4},"end":{"line":21,"column":5}},"loc":{"start":{"line":21,"column":24},"end":{"line":27,"column":5}},"line":21},"1":{"name":"(anonymous_1)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":18},"end":{"line":33,"column":5}},"line":28},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":4},"end":{"line":42,"column":5}},"loc":{"start":{"line":42,"column":22},"end":{"line":56,"column":5}},"line":42},"3":{"name":"(anonymous_3)","decl":{"start":{"line":63,"column":4},"end":{"line":63,"column":5}},"loc":{"start":{"line":63,"column":14},"end":{"line":76,"column":5}},"line":63}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":12},"end":{"line":24,"column":33}},"type":"if","locations":[{"start":{"line":23,"column":12},"end":{"line":24,"column":33}},{"start":{"line":23,"column":12},"end":{"line":24,"column":33}}],"line":23},"1":{"loc":{"start":{"line":49,"column":12},"end":{"line":51,"column":13}},"type":"if","locations":[{"start":{"line":49,"column":12},"end":{"line":51,"column":13}},{"start":{"line":49,"column":12},"end":{"line":51,"column":13}}],"line":49},"2":{"loc":{"start":{"line":71,"column":12},"end":{"line":73,"column":13}},"type":"if","locations":[{"start":{"line":71,"column":12},"end":{"line":73,"column":13}},{"start":{"line":71,"column":12},"end":{"line":73,"column":13}}],"line":71},"3":{"loc":{"start":{"line":71,"column":16},"end":{"line":71,"column":78}},"type":"binary-expr","locations":[{"start":{"line":71,"column":16},"end":{"line":71,"column":52}},{"start":{"line":71,"column":56},"end":{"line":71,"column":78}}],"line":71}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":1},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecretStore.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/CommitmentSecretStore.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAItD;;;;;;;;;GASG;AACH,MAAa,qBAAqB;IAChC;;;;OAIG;IACI,MAAM,CAAC,SAAS,CAAC,CAAS;QAC/B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,OAAO,EAAE,CAAC,CAAC,OAAO;IACpB,CAAC;IAID;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,CAAgC,CAAC;QAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;SAC3D;IACH,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,MAAc,EAAE,CAAS;QACrC,MAAM,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAE7C,+DAA+D;QAC/D,oBAAoB;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACxC,MAAM,OAAO,GAAG,mCAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;aAClD;SACF;QAED,sBAAsB;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,CAAS;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,2DAA2D;YAC3D,wDAAwD;YACxD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;YAEhE,0DAA0D;YAC1D,sDAAsD;YACtD,eAAe;YACf,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBAClE,OAAO,mCAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC9D;SACF;QACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CACF;AArED,sDAqEC","sourcesContent":["import { CommitmentSecret } from './CommitmentSecret';\n\nexport type CommitmentSecretStoreItem = { index: bigint; secret: Buffer };\n\n/**\n * Defined in BOLT3, this class compactly stored received commitment\n * secrets from our counterparty. Without this mechanism we are required\n * to store every commitment secret that we receive (2^48) which can be\n * a huge amount of data at 32-bytes per secret.\n *\n * Instead we can use the fact that later commitment secrets act as\n * prefixes for prior commitment secrets. We can then compactly store\n * only the secrets we need to derive older commitment secrets.\n */\nexport class CommitmentSecretStore {\n /**\n * Returns the index of the least-significant bit. This is used to\n * determine what the value at I is a prefix for.\n * @param I commitment\n */\n public static calcIndex(I: bigint): number {\n for (let i = BigInt(0); i < BigInt(48); i++) {\n if (I & (BigInt(1) << i)) return Number(i);\n }\n return 48; // seed\n }\n\n private secrets: CommitmentSecretStoreItem[];\n\n constructor() {\n this.secrets = new Array(49) as CommitmentSecretStoreItem[];\n for (let i = 0; i < this.secrets.length; i++) {\n this.secrets[i] = { index: BigInt(0), secret: undefined };\n }\n }\n\n /**\n * Insert the commitment secret into the store and verify that the\n * secret is able to derive all prior commitment secrets that we\n * already know about.\n *\n * @param secret 32-byte secp256k1 secret\n * @param i commitment number\n */\n public insert(secret: Buffer, i: bigint): void {\n const B = CommitmentSecretStore.calcIndex(i);\n\n // validate that the new secret allows derivation of known keys\n // up to the new key\n for (let b = 0; b < B; b++) {\n const existing = this.secrets[b].secret;\n const derived = CommitmentSecret.derive(secret, this.secrets[b].index, B);\n if (!derived.equals(existing)) {\n throw new Error('The secret for I is incorrect');\n }\n }\n\n // update the position\n this.secrets[Number(B)].index = i;\n this.secrets[Number(B)].secret = secret;\n }\n\n /**\n * Derives old commitment secrets from the from the compact store.\n * Throws if we do not have the commitment secret for the specified\n * commitment nmber.\n * @param i derivation number starting at 2^48-1 down to zero.\n */\n public derive(i: bigint): Buffer {\n for (let b = 0; b < this.secrets.length; b++) {\n // construct a mask of the upper bits. Basically we lop off\n // the lower b bits and then right-shift back into place\n const mask = (BigInt(0xffffffffffff) >> BigInt(b)) << BigInt(b);\n\n // Check if the prefix found using I & mask is one that we\n // can use to derive our value. If not, we need to try\n // another bit.\n if ((i & mask) === this.secrets[b].index && this.secrets[b].secret) {\n return CommitmentSecret.derive(this.secrets[b].secret, i, b);\n }\n }\n throw new Error(\"Index I hasn't been received yet\");\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ea845dc79a56974b28d0636eccc286b0c23ecc51","contentHash":"37ff62bc5acae5e1c99ce4b2acfcb00c61c48e7d15369b88b4a3e8785a597c8f"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/Htlc.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/Htlc.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":22}},"2":{"start":{"line":37,"column":8},"end":{"line":37,"column":29}},"3":{"start":{"line":38,"column":8},"end":{"line":38,"column":35}},"4":{"start":{"line":39,"column":8},"end":{"line":39,"column":27}},"5":{"start":{"line":40,"column":8},"end":{"line":40,"column":37}},"6":{"start":{"line":41,"column":8},"end":{"line":41,"column":39}},"7":{"start":{"line":42,"column":8},"end":{"line":42,"column":47}},"8":{"start":{"line":45,"column":0},"end":{"line":45,"column":20}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":5}},"loc":{"start":{"line":36,"column":84},"end":{"line":43,"column":5}},"line":36}},"branchMap":{},"s":{"0":1,"1":1,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":1},"f":{"0":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/Htlc.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/Htlc.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;GASG;AACH,MAAa,IAAI;IAMf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YACW,MAAc,EACd,SAAwB,EACxB,KAAY,EACZ,UAAkB,EAClB,WAAmB,EAC5B,eAAwB;QALf,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAe;QACxB,UAAK,GAAL,KAAK,CAAO;QACZ,eAAU,GAAV,UAAU,CAAQ;QAClB,gBAAW,GAAX,WAAW,CAAQ;QAG5B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;CACF;AArCD,oBAqCC","sourcesContent":["import { Value } from '@node-dlc/bitcoin';\n\nimport { HtlcDirection } from './HtlcDirection';\n\n/**\n * An HTLC (hashed time-locked contract) is part of the transfer\n * layer of the Lightning network. HTLCs are used to trustlessly offer\n * a payment to a counterparty if they are able to provide a preimage\n * of the hash. The offeror can claw back funds after an expiration\n * period (absolute lock time) if the recipient is unable to provide\n * the preimage for the contract. HTLCs are used in Lightning for both\n * initiating payments to a peer directly and as part of forwarding\n * payments.\n */\nexport class Htlc {\n /**\n * The preimage of the payment hash using SHA256.\n */\n public paymentPreimage: Buffer;\n\n /**\n * Constructs an HTLC with associated information\n * @param htlcId Identifier for the HTLC is a counter maintained\n * per-channel, per-peer. It starts at zero and is incremented when\n * an HTLC is offered. This value is used when sending channel\n * related messages to disambiguate HTLCs that may share the same\n * preimage.\n *\n * @param direction Direction, from your node's perspective, that\n * indicates if the HTLC was offered or received.\n *\n * @param value The value of the HTLC in millisatoshi.\n *\n * @param cltvExpiry The absolutely blocktime expiry of the HTLC.\n * The value must be under 500,000,000 to ensure it is a block-based\n * locktime. After this timeout has expired, the offeror can perform\n * a forced resolution on-chain.\n *\n * @param paymentHash The 32-byte hash of the preimage. Knowledge of\n * the preimage is irrevocable and considers payment complete.\n */\n constructor(\n readonly htlcId: bigint,\n readonly direction: HtlcDirection,\n readonly value: Value,\n readonly cltvExpiry: number,\n readonly paymentHash: Buffer,\n paymentPreimage?: Buffer,\n ) {\n this.paymentPreimage = paymentPreimage;\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7f2f01c82ad7d1c76743735be845459f898d98ee","contentHash":"3e940708a7bf7d7b6671cd14d0fb601b8ac781337ad383d661baaf2ac4be74c4"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/HtlcDirection.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/HtlcDirection.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":8,"column":0},"end":{"line":20,"column":74}},"3":{"start":{"line":13,"column":4},"end":{"line":13,"column":60}},"4":{"start":{"line":19,"column":4},"end":{"line":19,"column":62}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":1},"end":{"line":8,"column":2}},"loc":{"start":{"line":8,"column":26},"end":{"line":20,"column":1}},"line":8}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":19},"end":{"line":20,"column":72}},"type":"binary-expr","locations":[{"start":{"line":20,"column":19},"end":{"line":20,"column":40}},{"start":{"line":20,"column":45},"end":{"line":20,"column":71}}],"line":20}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/HtlcDirection.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/HtlcDirection.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,aAaX;AAbD,WAAY,aAAa;IACvB;;;OAGG;IACH,uDAAW,CAAA;IAEX;;;;OAIG;IACH,yDAAY,CAAA;AACd,CAAC,EAbW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAaxB","sourcesContent":["/**\n * Direction, from our node's perspective, of an HTLC.\n */\nexport enum HtlcDirection {\n /**\n * We have offered this HTLC to pay a node directly or on behalf\n * of a forward request.\n */\n Offered = 0,\n\n /**\n * We have accepted this HTLC from the counterparty. We may be the\n * final hop in a chain (and would posssess) the preimage or we may\n * be a processing hop in a sequence of payments.\n */\n Accepted = 1,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"497bfa1ccaa623164a65dc40e8db735c66886bc4","contentHash":"bd609ba5ba332a17195b60edc7abdd9be731c908c79f969db80585cae339f68a"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ScriptFactory.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ScriptFactory.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":16,"column":24},"end":{"line":16,"column":79}},"5":{"start":{"line":16,"column":66},"end":{"line":16,"column":78}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":56}},"7":{"start":{"line":33,"column":8},"end":{"line":33,"column":281}},"8":{"start":{"line":59,"column":8},"end":{"line":65,"column":192}},"9":{"start":{"line":92,"column":8},"end":{"line":98,"column":222}},"10":{"start":{"line":101,"column":0},"end":{"line":101,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":51},"end":{"line":18,"column":5}},"line":15},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":56},"end":{"line":16,"column":57}},"loc":{"start":{"line":16,"column":66},"end":{"line":16,"column":78}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":71},"end":{"line":34,"column":5}},"line":32},"3":{"name":"(anonymous_3)","decl":{"start":{"line":58,"column":4},"end":{"line":58,"column":5}},"loc":{"start":{"line":58,"column":95},"end":{"line":66,"column":5}},"line":58},"4":{"name":"(anonymous_4)","decl":{"start":{"line":91,"column":4},"end":{"line":91,"column":5}},"loc":{"start":{"line":91,"column":108},"end":{"line":99,"column":5}},"line":91}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ScriptFactory.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/ScriptFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { OpCode, Script } from '@node-dlc/bitcoin';\nimport { hash160, ripemd160 } from '@node-dlc/crypto';\n\nexport class ScriptFactory {\n /**\n * Constructs the P2MS commit script used in in the funding transaction\n * as defined in BOLT3. The pubkeys must be sorted in lexicographical\n * order.\n *\n * @param openPubKey funding_pubkey sent in open_channel\n * @param acceptPubKey funding_pubkey sent in accept_channel\n */\n public static fundingScript(\n openPubKey: Buffer,\n acceptPubKey: Buffer,\n ): Script {\n const pubkeys = [openPubKey, acceptPubKey].sort((a, b) => a.compare(b));\n return Script.p2msLock(2, ...pubkeys);\n }\n\n /**\n * Constructs an revocable sequence maturing contract using the\n * provided keys and delay. This script is used in the `to_local`\n * output of the commmitment transaction as well as the secondary\n * HTLC-Success and HTLC-Timeout transactions.\n *\n * @param revocationPubKey the revocation pubkey that has the ability\n * to perform a penalty transaction should a revoked version of this\n * output be spend.\n * @param delayedPubKey the delayed pubkey spendable after the\n * sequence delay\n * @param toSelfDelay the sequence delay in blocks\n */\n public static toLocalScript(\n revocationPubKey: Buffer,\n delayedPubKey: Buffer,\n toSelfDelay: number,\n ): Script {\n return new Script(\n OpCode.OP_IF,\n revocationPubKey,\n OpCode.OP_ELSE,\n Script.number(toSelfDelay),\n OpCode.OP_CHECKSEQUENCEVERIFY,\n OpCode.OP_DROP,\n delayedPubKey,\n OpCode.OP_ENDIF,\n OpCode.OP_CHECKSIG,\n ); // prettier-ignore\n }\n\n /**\n * Constructs the script for an offered HTLC output of a commitment\n * transaction as defined in BOLT3. This enables on-chain resolution\n * of an HTLC to the local node via the secondary HTLC-Timeout\n * transaction. This secondary transaction is both sequence delayed\n * and timelocked and requires signatures by both parties to prevent\n * premature spending. The remote node can immediately resolve the\n * transaction wit knowledge of the preimage.\n *\n * Revocable with witness:\n * [revocationSig, revocationPubKey]\n *\n * Pay to local via the HTLC-Timeout transaction by using witness\n * [0, remoteHtlcSig, localHtlcSig, <>]\n *\n * Pay to remote counterparty without delay using witness\n * [remoteHtlcSig, preimage]\n *\n * @param paymentHash\n * @param revocationPubKey\n * @param localHtlcPubKey\n * @param remoteHtlcPubKey\n */\n public static offeredHtlcScript(\n paymentHash: Buffer,\n revocationPubKey: Buffer,\n localHtlcPubKey: Buffer,\n remoteHtlcPubKey: Buffer,\n ): Script {\n return new Script(\n // to remote with revocation key\n OpCode.OP_DUP, OpCode.OP_HASH160, hash160(revocationPubKey), OpCode.OP_EQUAL,\n OpCode.OP_IF,\n OpCode.OP_CHECKSIG,\n OpCode.OP_ELSE,\n remoteHtlcPubKey, OpCode.OP_SWAP, OpCode.OP_SIZE, Script.number(32), OpCode.OP_EQUAL,\n OpCode.OP_NOTIF,\n // to local via HTLC-Timeout transaction (timelocked)\n OpCode.OP_DROP, OpCode.OP_2, OpCode.OP_SWAP, localHtlcPubKey, OpCode.OP_2, OpCode.OP_CHECKMULTISIG,\n OpCode.OP_ELSE,\n // to remote with preimage and signature\n OpCode.OP_HASH160, ripemd160(paymentHash), OpCode.OP_EQUALVERIFY,\n OpCode.OP_CHECKSIG,\n OpCode.OP_ENDIF,\n OpCode.OP_ENDIF,\n ); // prettier-ignore\n }\n\n /**\n * Constructs the script for a received HTLC output of a commitment\n * transaction as defined in BOLT3. This enables on-chain resolution\n * of an HTLC to the local node via the secondary HTLC-Success\n * transaction. This secondary transaction is sequence delayed and\n * thus local spends require both parties signatures. The remote\n * node can perform a timeout of this output after the timelock\n * expires.\n *\n * Revocable with witness:\n * [revocationSig, revocationPubKey]\n *\n * Pay to local via the HTLC-Success transaction by using witness\n * [0, remoteHtlcSig, localHtlcSig, preimage]\n *\n * Pay to remote counterparty after the CLTV expiry using witness\n * [remoteHtlcSig, <>]\n *\n * @param paymentHash\n * @param cltvExpiry\n * @param revocationPubKey\n * @param localHtlcPubKey\n * @param remoteHtlcPubKey\n */\n public static receivedHtlcScript(\n paymentHash: Buffer,\n cltvExpiry: number,\n revocationPubKey: Buffer,\n localHtlcPubKey: Buffer,\n remoteHtlcPubKey: Buffer,\n ): Script {\n return new Script(\n // to remote with revocation key\n OpCode.OP_DUP, OpCode.OP_HASH160, hash160(revocationPubKey), OpCode.OP_EQUAL,\n OpCode.OP_IF,\n OpCode.OP_CHECKSIG,\n OpCode.OP_ELSE,\n remoteHtlcPubKey, OpCode.OP_SWAP, OpCode.OP_SIZE, Script.number(32), OpCode.OP_EQUAL,\n OpCode.OP_IF,\n // to local via HTLC-Success transaction\n OpCode.OP_HASH160, ripemd160(paymentHash), OpCode.OP_EQUALVERIFY,\n OpCode.OP_2, OpCode.OP_SWAP, localHtlcPubKey, OpCode.OP_2, OpCode.OP_CHECKMULTISIG,\n OpCode.OP_ELSE,\n // to remote after cltv expiry with signature\n OpCode.OP_DROP, Script.number(cltvExpiry), OpCode.OP_CHECKLOCKTIMEVERIFY, OpCode.OP_DROP,\n OpCode.OP_CHECKSIG,\n OpCode.OP_ENDIF,\n OpCode.OP_ENDIF,\n ); // prettier-ignore\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b9ef596357dea8ded961971d54a9d25b72211198","contentHash":"57bae0cb030b85966142a8882a88b46627500f0a8b491093b7ef978e0cc6adb6"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/TxFactory.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/TxFactory.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":27},"end":{"line":5,"column":56}},"4":{"start":{"line":6,"column":24},"end":{"line":6,"column":50}},"5":{"start":{"line":7,"column":24},"end":{"line":7,"column":50}},"6":{"start":{"line":16,"column":23},"end":{"line":16,"column":120}},"7":{"start":{"line":17,"column":8},"end":{"line":17,"column":50}},"8":{"start":{"line":59,"column":41},"end":{"line":59,"column":148}},"9":{"start":{"line":61,"column":19},"end":{"line":61,"column":44}},"10":{"start":{"line":62,"column":8},"end":{"line":62,"column":23}},"11":{"start":{"line":63,"column":8},"end":{"line":63,"column":112}},"12":{"start":{"line":65,"column":8},"end":{"line":65,"column":96}},"13":{"start":{"line":67,"column":30},"end":{"line":67,"column":32}},"14":{"start":{"line":68,"column":8},"end":{"line":91,"column":9}},"15":{"start":{"line":69,"column":32},"end":{"line":69,"column":47}},"16":{"start":{"line":76,"column":12},"end":{"line":83,"column":13}},"17":{"start":{"line":77,"column":16},"end":{"line":78,"column":105}},"18":{"start":{"line":81,"column":16},"end":{"line":82,"column":105}},"19":{"start":{"line":85,"column":30},"end":{"line":85,"column":67}},"20":{"start":{"line":86,"column":32},"end":{"line":86,"column":55}},"21":{"start":{"line":88,"column":12},"end":{"line":90,"column":13}},"22":{"start":{"line":89,"column":16},"end":{"line":89,"column":41}},"23":{"start":{"line":93,"column":23},"end":{"line":93,"column":55}},"24":{"start":{"line":94,"column":24},"end":{"line":94,"column":66}},"25":{"start":{"line":96,"column":8},"end":{"line":113,"column":9}},"26":{"start":{"line":97,"column":29},"end":{"line":97,"column":54}},"27":{"start":{"line":98,"column":12},"end":{"line":103,"column":13}},"28":{"start":{"line":99,"column":16},"end":{"line":99,"column":64}},"29":{"start":{"line":102,"column":16},"end":{"line":102,"column":52}},"30":{"start":{"line":106,"column":29},"end":{"line":106,"column":55}},"31":{"start":{"line":107,"column":12},"end":{"line":112,"column":13}},"32":{"start":{"line":108,"column":16},"end":{"line":108,"column":65}},"33":{"start":{"line":111,"column":16},"end":{"line":111,"column":53}},"34":{"start":{"line":115,"column":23},"end":{"line":115,"column":25}},"35":{"start":{"line":116,"column":8},"end":{"line":123,"column":9}},"36":{"start":{"line":117,"column":34},"end":{"line":120,"column":154}},"37":{"start":{"line":121,"column":26},"end":{"line":121,"column":100}},"38":{"start":{"line":122,"column":12},"end":{"line":122,"column":39}},"39":{"start":{"line":125,"column":8},"end":{"line":129,"column":9}},"40":{"start":{"line":126,"column":12},"end":{"line":128,"column":15}},"41":{"start":{"line":131,"column":8},"end":{"line":133,"column":9}},"42":{"start":{"line":132,"column":12},"end":{"line":132,"column":103}},"43":{"start":{"line":135,"column":8},"end":{"line":148,"column":11}},"44":{"start":{"line":137,"column":26},"end":{"line":137,"column":67}},"45":{"start":{"line":138,"column":12},"end":{"line":139,"column":29}},"46":{"start":{"line":139,"column":16},"end":{"line":139,"column":29}},"47":{"start":{"line":141,"column":34},"end":{"line":143,"column":59}},"48":{"start":{"line":144,"column":12},"end":{"line":145,"column":37}},"49":{"start":{"line":145,"column":16},"end":{"line":145,"column":37}},"50":{"start":{"line":147,"column":12},"end":{"line":147,"column":53}},"51":{"start":{"line":150,"column":28},"end":{"line":150,"column":30}},"52":{"start":{"line":151,"column":8},"end":{"line":154,"column":9}},"53":{"start":{"line":152,"column":12},"end":{"line":152,"column":32}},"54":{"start":{"line":153,"column":12},"end":{"line":153,"column":35}},"55":{"start":{"line":156,"column":8},"end":{"line":156,"column":33}},"56":{"start":{"line":174,"column":19},"end":{"line":174,"column":44}},"57":{"start":{"line":177,"column":8},"end":{"line":177,"column":98}},"58":{"start":{"line":179,"column":23},"end":{"line":179,"column":34}},"59":{"start":{"line":180,"column":21},"end":{"line":180,"column":55}},"60":{"start":{"line":181,"column":21},"end":{"line":181,"column":72}},"61":{"start":{"line":183,"column":8},"end":{"line":183,"column":171}},"62":{"start":{"line":187,"column":8},"end":{"line":187,"column":62}},"63":{"start":{"line":188,"column":8},"end":{"line":188,"column":18}},"64":{"start":{"line":205,"column":19},"end":{"line":205,"column":44}},"65":{"start":{"line":208,"column":8},"end":{"line":208,"column":98}},"66":{"start":{"line":210,"column":23},"end":{"line":210,"column":34}},"67":{"start":{"line":211,"column":21},"end":{"line":211,"column":55}},"68":{"start":{"line":212,"column":21},"end":{"line":212,"column":72}},"69":{"start":{"line":214,"column":8},"end":{"line":214,"column":171}},"70":{"start":{"line":217,"column":8},"end":{"line":217,"column":48}},"71":{"start":{"line":218,"column":8},"end":{"line":218,"column":18}},"72":{"start":{"line":221,"column":0},"end":{"line":221,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":64},"end":{"line":18,"column":5}},"line":15},"1":{"name":"(anonymous_1)","decl":{"start":{"line":58,"column":4},"end":{"line":58,"column":5}},"loc":{"start":{"line":58,"column":297},"end":{"line":157,"column":5}},"line":58},"2":{"name":"(anonymous_2)","decl":{"start":{"line":135,"column":20},"end":{"line":135,"column":21}},"loc":{"start":{"line":135,"column":30},"end":{"line":148,"column":9}},"line":135},"3":{"name":"(anonymous_3)","decl":{"start":{"line":173,"column":4},"end":{"line":173,"column":5}},"loc":{"start":{"line":173,"column":117},"end":{"line":189,"column":5}},"line":173},"4":{"name":"(anonymous_4)","decl":{"start":{"line":204,"column":4},"end":{"line":204,"column":5}},"loc":{"start":{"line":204,"column":117},"end":{"line":219,"column":5}},"line":204}},"branchMap":{"0":{"loc":{"start":{"line":58,"column":285},"end":{"line":58,"column":295}},"type":"default-arg","locations":[{"start":{"line":58,"column":293},"end":{"line":58,"column":295}}],"line":58},"1":{"loc":{"start":{"line":76,"column":12},"end":{"line":83,"column":13}},"type":"if","locations":[{"start":{"line":76,"column":12},"end":{"line":83,"column":13}},{"start":{"line":76,"column":12},"end":{"line":83,"column":13}}],"line":76},"2":{"loc":{"start":{"line":78,"column":20},"end":{"line":78,"column":104}},"type":"cond-expr","locations":[{"start":{"line":78,"column":79},"end":{"line":78,"column":90}},{"start":{"line":78,"column":93},"end":{"line":78,"column":104}}],"line":78},"3":{"loc":{"start":{"line":82,"column":20},"end":{"line":82,"column":104}},"type":"cond-expr","locations":[{"start":{"line":82,"column":79},"end":{"line":82,"column":90}},{"start":{"line":82,"column":93},"end":{"line":82,"column":104}}],"line":82},"4":{"loc":{"start":{"line":88,"column":12},"end":{"line":90,"column":13}},"type":"if","locations":[{"start":{"line":88,"column":12},"end":{"line":90,"column":13}},{"start":{"line":88,"column":12},"end":{"line":90,"column":13}}],"line":88},"5":{"loc":{"start":{"line":96,"column":8},"end":{"line":113,"column":9}},"type":"if","locations":[{"start":{"line":96,"column":8},"end":{"line":113,"column":9}},{"start":{"line":96,"column":8},"end":{"line":113,"column":9}}],"line":96},"6":{"loc":{"start":{"line":98,"column":12},"end":{"line":103,"column":13}},"type":"if","locations":[{"start":{"line":98,"column":12},"end":{"line":103,"column":13}},{"start":{"line":98,"column":12},"end":{"line":103,"column":13}}],"line":98},"7":{"loc":{"start":{"line":107,"column":12},"end":{"line":112,"column":13}},"type":"if","locations":[{"start":{"line":107,"column":12},"end":{"line":112,"column":13}},{"start":{"line":107,"column":12},"end":{"line":112,"column":13}}],"line":107},"8":{"loc":{"start":{"line":117,"column":34},"end":{"line":120,"column":154}},"type":"cond-expr","locations":[{"start":{"line":119,"column":18},"end":{"line":119,"column":136}},{"start":{"line":120,"column":18},"end":{"line":120,"column":154}}],"line":117},"9":{"loc":{"start":{"line":117,"column":34},"end":{"line":118,"column":91}},"type":"binary-expr","locations":[{"start":{"line":117,"column":35},"end":{"line":117,"column":48}},{"start":{"line":117,"column":52},"end":{"line":117,"column":108}},{"start":{"line":118,"column":17},"end":{"line":118,"column":29}},{"start":{"line":118,"column":33},"end":{"line":118,"column":90}}],"line":117},"10":{"loc":{"start":{"line":125,"column":8},"end":{"line":129,"column":9}},"type":"if","locations":[{"start":{"line":125,"column":8},"end":{"line":129,"column":9}},{"start":{"line":125,"column":8},"end":{"line":129,"column":9}}],"line":125},"11":{"loc":{"start":{"line":131,"column":8},"end":{"line":133,"column":9}},"type":"if","locations":[{"start":{"line":131,"column":8},"end":{"line":133,"column":9}},{"start":{"line":131,"column":8},"end":{"line":133,"column":9}}],"line":131},"12":{"loc":{"start":{"line":138,"column":12},"end":{"line":139,"column":29}},"type":"if","locations":[{"start":{"line":138,"column":12},"end":{"line":139,"column":29}},{"start":{"line":138,"column":12},"end":{"line":139,"column":29}}],"line":138},"13":{"loc":{"start":{"line":144,"column":12},"end":{"line":145,"column":37}},"type":"if","locations":[{"start":{"line":144,"column":12},"end":{"line":145,"column":37}},{"start":{"line":144,"column":12},"end":{"line":145,"column":37}}],"line":144},"14":{"loc":{"start":{"line":181,"column":21},"end":{"line":181,"column":72}},"type":"cond-expr","locations":[{"start":{"line":181,"column":46},"end":{"line":181,"column":47}},{"start":{"line":181,"column":50},"end":{"line":181,"column":72}}],"line":181},"15":{"loc":{"start":{"line":212,"column":21},"end":{"line":212,"column":72}},"type":"cond-expr","locations":[{"start":{"line":212,"column":46},"end":{"line":212,"column":47}},{"start":{"line":212,"column":50},"end":{"line":212,"column":72}}],"line":212}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0,0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/TxFactory.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/lightning/TxFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n HashValue,\n LockTime,\n OutPoint,\n Script,\n Sequence,\n TxBuilder,\n TxOut,\n Value,\n} from '@node-dlc/bitcoin';\n\nimport { CommitmentNumber } from './CommitmentNumber';\nimport { Htlc } from './Htlc';\nimport { HtlcDirection } from './HtlcDirection';\nimport { ScriptFactory } from './ScriptFactory';\n\nexport class TxFactory {\n /**\n * Creates a TxOut to attach to a funding transaction. This includes\n * the P2WSH-P2MS script that uses 2-2MS. The open and accept funding\n * pubkeys are sorted lexicographcially to create the script.\n * @param builder\n */\n public static createFundingOutput(\n value: Value,\n openPubKey: Buffer,\n acceptPubKey: Buffer,\n ): TxOut {\n const script = Script.p2wshLock(\n ScriptFactory.fundingScript(openPubKey, acceptPubKey),\n );\n return new TxOut(value, script);\n }\n\n /**\n * Constructs an unsigned commitment transaction according to BOLT3.\n * This method is a low level commitment transaction builder, meaning\n * it accepts primatives and constructs a commitment transaction\n * accordingly. The proper inputs are determiend\n *\n * @param isFunderLocal True when the funding node is local. This\n * is used to determine which output pays fees (to_local/to_remote).\n * @param commitmentNumber The commitment number of the transaction\n * which is used to generate the obscurred commitment number.\n * @param openPaymentBasePoint The basepoint sent in open_channel\n * which is used to generate the obscurred commitment number.\n * @param acceptPaymentBasePoint The basepoitn sent in accept_channel\n * which is used to generate the obscurred commitment number.\n * @param fundingOutPoint The outpoint of the funding transaction\n * which was established in funding_created.\n * @param dustLimitSatoshi The dust limit in sats after which outputs\n * will be prune\n * @param feePerKw The fee rate per kiloweight which will be deducted\n * from the funding node's output\n * @param localDelay The delay applied to the to_local output\n * @param localValue Value paid to the to_local RSMC output\n * @param remoteValue Value paid to the to_emote P2WPKH output\n * @param revocationPubKey The revocation public key used to in the\n * to_local and HTLC outputs\n * @param delayedPubKey The delayed public key used to spend the\n * to_local output\n * @param remotePubKey The public key used to spend the to_remote\n * output\n * @param reverseHtlcs True when the HTLC direction needs to be\n * inverted because the holder of this commitment transaction is\n * our counterparty.\n * @param localHtlcPubKey The public key used to spend HTLC outputs\n * by the commitment holder.\n * @param remoteHtlcPubKey The public key used to spend HTLC outputs\n * by the commitment counterparty.\n * @param htlcs A full list of HTLCs that will be selectively\n * included in the commitment transaction based on the feePerKw.\n */\n public static createCommitment(\n isFunderLocal: boolean,\n commitmentNumber: number,\n openPaymentBasePoint: Buffer,\n acceptPaymentBasePoint: Buffer,\n fundingOutPoint: OutPoint,\n dustLimitSatoshi: Value,\n feePerKw: bigint,\n localDelay: number,\n localValue: Value,\n remoteValue: Value,\n revocationPubKey: Buffer,\n delayedPubKey: Buffer,\n remotePubKey: Buffer,\n reverseHtlcs: boolean,\n localHtlcPubKey?: Buffer,\n remoteHtlcPubKey?: Buffer,\n htlcs: Htlc[] = [],\n ): [TxBuilder, Htlc[]] {\n const obscuredCommitmentNumber = CommitmentNumber.obscure(\n commitmentNumber,\n openPaymentBasePoint,\n acceptPaymentBasePoint,\n );\n\n // 1. add the input as the funding outpoint and set the nSequence\n const tx = new TxBuilder();\n tx.version = 2;\n tx.addInput(\n fundingOutPoint,\n CommitmentNumber.getSequence(obscuredCommitmentNumber),\n );\n\n // 2. set the locktime to the obscurred commitment number\n tx.locktime = CommitmentNumber.getLockTime(obscuredCommitmentNumber);\n\n // 3. find unpruned outputs\n const unprunedHtlcs: Htlc[] = [];\n for (const htlc of htlcs) {\n const valueInSats = htlc.value.sats;\n let feeWeight: bigint;\n\n // HtlcDirection refers to the local nodes perception of the HTLC.\n // When isLocal, offered uses the HTLC-Timeout weight of 663. When\n // remote, the commitment is for the remote counterparty and an\n // offered HTLC is received and will be spent by the remote\n // counterparty using the HTLC-Success transaction with a weight of 703\n if (reverseHtlcs) {\n feeWeight =\n htlc.direction === HtlcDirection.Offered ? BigInt(703) : BigInt(663);\n } else {\n feeWeight =\n htlc.direction === HtlcDirection.Offered ? BigInt(663) : BigInt(703);\n }\n\n // Calculate the HTLC less fees\n const feeInSats = (feeWeight * feePerKw) / BigInt(1000);\n const satsLessFee = valueInSats - feeInSats;\n\n // Only keep HTLCs greater than the dustLimitSatoshi for the tx\n if (satsLessFee >= dustLimitSatoshi.sats) {\n unprunedHtlcs.push(htlc);\n }\n }\n\n // 4. calculate base fee\n const weight = 724 + unprunedHtlcs.length * 172;\n const baseFee = (BigInt(weight) * feePerKw) / BigInt(1000);\n\n // 5. substract base fee from funding node\n if (isFunderLocal) {\n const newValue = localValue.sats - baseFee;\n if (newValue > BigInt(0)) {\n localValue = Value.fromSats(newValue);\n } else {\n localValue = Value.zero();\n }\n } else {\n const newValue = remoteValue.sats - baseFee;\n if (newValue > BigInt(0)) {\n remoteValue = Value.fromSats(newValue);\n } else {\n remoteValue = Value.zero();\n }\n }\n\n // 6/7. add unpruned offered/received HTLCs\n const txouts: Array<[TxOut, Htlc?]> = [];\n for (const htlc of unprunedHtlcs) {\n const witnessScript: Script =\n (!reverseHtlcs && htlc.direction === HtlcDirection.Offered) ||\n (reverseHtlcs && htlc.direction === HtlcDirection.Accepted)\n ? ScriptFactory.offeredHtlcScript(\n htlc.paymentHash,\n revocationPubKey,\n localHtlcPubKey,\n remoteHtlcPubKey,\n )\n : ScriptFactory.receivedHtlcScript(\n htlc.paymentHash,\n htlc.cltvExpiry,\n revocationPubKey,\n localHtlcPubKey,\n remoteHtlcPubKey,\n );\n const txout = new TxOut(htlc.value, Script.p2wshLock(witnessScript));\n txouts.push([txout, htlc]);\n }\n\n // 8. add local if unpruned\n if (localValue.sats >= dustLimitSatoshi.sats) {\n txouts.push([\n new TxOut(\n localValue,\n Script.p2wshLock(\n ScriptFactory.toLocalScript(\n revocationPubKey,\n delayedPubKey,\n localDelay,\n ),\n ),\n ),\n ]);\n }\n\n // 9. add remote if unpruned\n if (remoteValue.sats >= dustLimitSatoshi.sats) {\n txouts.push([new TxOut(remoteValue, Script.p2wpkhLock(remotePubKey))]);\n }\n\n // 10. sort outputs using bip69 and using cltv for htlc tiebreaks\n txouts.sort((a, b) => {\n // compare on value\n const value = Number(a[0].value.sats - b[0].value.sats);\n if (value !== 0) return value;\n\n // compare on script\n const scriptCompare = a[0].scriptPubKey\n .serializeCmds()\n .compare(b[0].scriptPubKey.serializeCmds());\n if (scriptCompare !== 0) return scriptCompare;\n\n // tie-break on htlcs\n return b[1].cltvExpiry - a[1].cltvExpiry;\n });\n\n // add hte outputs in sorted order\n const sortedHtlcs: Htlc[] = [];\n for (const [txout, htlc] of txouts) {\n tx.addOutput(txout);\n sortedHtlcs.push(htlc);\n }\n\n // return the tuple with the sorted htlcs\n return [tx, sortedHtlcs];\n }\n\n /**\n * Constructs an HTLC-Timeout transaction as defined in BOLT3. This\n * transaction spends an offered HTLC from the commitment transaction\n * and outputs the HTLC value less the fee. The output is spendable\n * via an RSMC that is sequence locked for the received by the\n * transaction owner. Finally this transaction has an absolute\n * locktime of the HTLC's cltv expiry.\n * @param commitmentTx\n * @param outputIndex\n * @param localDelay\n * @param revocationPubKey\n * @param delayedPubKey\n * @param feePerKw\n * @param htlc\n */\n public static createHtlcTimeout(\n commitmentTx: HashValue,\n outputIndex: number,\n localDelay: number,\n revocationPubKey: Buffer,\n delayedPubKey: Buffer,\n feePerKw: bigint,\n htlc: Htlc,\n ): TxBuilder {\n const tx = new TxBuilder();\n\n // Input points to the commmitment transaction and the BIP69\n // sorted index of the HTLC. nSequence is set to zero.\n tx.addInput(new OutPoint(commitmentTx, outputIndex), Sequence.zero());\n\n // calc value less fees for this transaction\n const weight = BigInt(663);\n const fees = (weight * feePerKw) / BigInt(1000);\n const sats = fees > htlc.value.sats ? 0 : htlc.value.sats - fees;\n\n // Spends a P2WSH RSMC\n tx.addOutput(\n Value.fromSats(sats),\n Script.p2wshLock(\n ScriptFactory.toLocalScript(\n revocationPubKey,\n delayedPubKey,\n localDelay,\n ),\n ),\n );\n\n // nLocktime is set to the cltvExpiry of the HTLC. This prevents\n // the HTLC-Timeout from being broadcast until after the expiry\n // has been reached.\n tx.locktime = new LockTime(htlc.cltvExpiry);\n\n return tx;\n }\n\n /**\n * Constructs an HTLC-Success transaction as defined in BOLT3. This\n * transaction spends a received HTLC form the commitment transaction\n * and outputs the HTLC value less the fee. The output is spendable\n * via an RSMC that is sequence locked for the received by the\n * transaction owner.\n * @param commitmentTx\n * @param outputIndex\n * @param localDelay\n * @param revocationPubKey\n * @param delayedPubKey\n * @param feePerKw\n * @param htlc\n */\n public static createHtlcSuccess(\n commitmentTx: HashValue,\n outputIndex: number,\n localDelay: number,\n revocationPubKey: Buffer,\n delayedPubKey: Buffer,\n feePerKw: bigint,\n htlc: Htlc,\n ): TxBuilder {\n const tx = new TxBuilder();\n\n // Input points to the commmitment transaction and the BIP69\n // sorted index of the HTLC. nSequence is set to zero.\n tx.addInput(new OutPoint(commitmentTx, outputIndex), Sequence.zero());\n\n // calc value less fees for this transaction\n const weight = BigInt(703);\n const fees = (weight * feePerKw) / BigInt(1000);\n const sats = fees > htlc.value.sats ? 0 : htlc.value.sats - fees;\n\n // Spends a P2WSH RSMC\n tx.addOutput(\n Value.fromSats(sats),\n Script.p2wshLock(\n ScriptFactory.toLocalScript(\n revocationPubKey,\n delayedPubKey,\n localDelay,\n ),\n ),\n );\n\n // nLockTime is zero since the tx owner can immediately spend\n // this transaction if they have the preimage\n tx.locktime = LockTime.zero();\n\n return tx;\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6fb0a811bc9806718a43ea821482d5d9c6784f69","contentHash":"c043219733b7aec7f058b5a32b79dfd36378390a43551925ac03f48635916fde"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CoinSelect.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CoinSelect.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":82}},"2":{"start":{"line":4,"column":20},"end":{"line":4,"column":50}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":6,"column":22},"end":{"line":10,"column":1}},"5":{"start":{"line":11,"column":19},"end":{"line":13,"column":1}},"6":{"start":{"line":12,"column":4},"end":{"line":12,"column":40}},"7":{"start":{"line":14,"column":22},"end":{"line":16,"column":1}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":42}},"9":{"start":{"line":17,"column":0},"end":{"line":17,"column":38}},"10":{"start":{"line":19,"column":18},"end":{"line":21,"column":1}},"11":{"start":{"line":20,"column":4},"end":{"line":20,"column":52}},"12":{"start":{"line":22,"column":17},"end":{"line":30,"column":1}},"13":{"start":{"line":23,"column":18},"end":{"line":23,"column":48}},"14":{"start":{"line":24,"column":4},"end":{"line":24,"column":30}},"15":{"start":{"line":25,"column":4},"end":{"line":25,"column":48}},"16":{"start":{"line":26,"column":20},"end":{"line":26,"column":86}},"17":{"start":{"line":27,"column":24},"end":{"line":27,"column":70}},"18":{"start":{"line":27,"column":64},"end":{"line":27,"column":69}},"19":{"start":{"line":28,"column":25},"end":{"line":28,"column":63}},"20":{"start":{"line":28,"column":57},"end":{"line":28,"column":62}},"21":{"start":{"line":29,"column":4},"end":{"line":29,"column":148}},"22":{"start":{"line":31,"column":0},"end":{"line":31,"column":28}},"23":{"start":{"line":42,"column":30},"end":{"line":75,"column":1}},"24":{"start":{"line":44,"column":4},"end":{"line":44,"column":93}},"25":{"start":{"line":44,"column":38},"end":{"line":44,"column":91}},"26":{"start":{"line":45,"column":18},"end":{"line":45,"column":19}},"27":{"start":{"line":46,"column":19},"end":{"line":46,"column":21}},"28":{"start":{"line":47,"column":21},"end":{"line":48,"column":43}},"29":{"start":{"line":47,"column":54},"end":{"line":47,"column":63}},"30":{"start":{"line":49,"column":4},"end":{"line":70,"column":5}},"31":{"start":{"line":49,"column":17},"end":{"line":49,"column":18}},"32":{"start":{"line":50,"column":21},"end":{"line":50,"column":29}},"33":{"start":{"line":51,"column":26},"end":{"line":51,"column":38}},"34":{"start":{"line":52,"column":24},"end":{"line":52,"column":43}},"35":{"start":{"line":53,"column":26},"end":{"line":53,"column":36}},"36":{"start":{"line":55,"column":8},"end":{"line":62,"column":9}},"37":{"start":{"line":56,"column":12},"end":{"line":60,"column":18}},"38":{"start":{"line":57,"column":16},"end":{"line":60,"column":18}},"39":{"start":{"line":61,"column":12},"end":{"line":61,"column":21}},"40":{"start":{"line":63,"column":8},"end":{"line":63,"column":29}},"41":{"start":{"line":64,"column":8},"end":{"line":64,"column":26}},"42":{"start":{"line":65,"column":20},"end":{"line":65,"column":85}},"43":{"start":{"line":67,"column":8},"end":{"line":68,"column":21}},"44":{"start":{"line":68,"column":12},"end":{"line":68,"column":21}},"45":{"start":{"line":69,"column":8},"end":{"line":69,"column":31}},"46":{"start":{"line":71,"column":4},"end":{"line":74,"column":6}},"47":{"start":{"line":76,"column":0},"end":{"line":76,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":11,"column":19},"end":{"line":11,"column":20}},"loc":{"start":{"line":11,"column":25},"end":{"line":13,"column":1}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":22},"end":{"line":14,"column":23}},"loc":{"start":{"line":14,"column":35},"end":{"line":16,"column":1}},"line":14},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":18},"end":{"line":19,"column":19}},"loc":{"start":{"line":19,"column":34},"end":{"line":21,"column":1}},"line":19},"3":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":17},"end":{"line":22,"column":18}},"loc":{"start":{"line":22,"column":55},"end":{"line":30,"column":1}},"line":22},"4":{"name":"(anonymous_4)","decl":{"start":{"line":27,"column":58},"end":{"line":27,"column":59}},"loc":{"start":{"line":27,"column":64},"end":{"line":27,"column":69}},"line":27},"5":{"name":"(anonymous_5)","decl":{"start":{"line":28,"column":51},"end":{"line":28,"column":52}},"loc":{"start":{"line":28,"column":57},"end":{"line":28,"column":62}},"line":28},"6":{"name":"(anonymous_6)","decl":{"start":{"line":42,"column":30},"end":{"line":42,"column":31}},"loc":{"start":{"line":43,"column":12},"end":{"line":75,"column":1}},"line":43},"7":{"name":"(anonymous_7)","decl":{"start":{"line":44,"column":28},"end":{"line":44,"column":29}},"loc":{"start":{"line":44,"column":38},"end":{"line":44,"column":91}},"line":44},"8":{"name":"(anonymous_8)","decl":{"start":{"line":47,"column":40},"end":{"line":47,"column":41}},"loc":{"start":{"line":47,"column":54},"end":{"line":47,"column":63}},"line":47}},"branchMap":{"0":{"loc":{"start":{"line":55,"column":8},"end":{"line":62,"column":9}},"type":"if","locations":[{"start":{"line":55,"column":8},"end":{"line":62,"column":9}},{"start":{"line":55,"column":8},"end":{"line":62,"column":9}}],"line":55},"1":{"loc":{"start":{"line":56,"column":12},"end":{"line":60,"column":18}},"type":"if","locations":[{"start":{"line":56,"column":12},"end":{"line":60,"column":18}},{"start":{"line":56,"column":12},"end":{"line":60,"column":18}}],"line":56},"2":{"loc":{"start":{"line":67,"column":8},"end":{"line":68,"column":21}},"type":"if","locations":[{"start":{"line":67,"column":8},"end":{"line":68,"column":21}},{"start":{"line":67,"column":8},"end":{"line":68,"column":21}}],"line":67}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":207,"7":1,"8":95,"9":1,"10":1,"11":76,"12":1,"13":35,"14":35,"15":35,"16":35,"17":35,"18":104,"19":35,"20":35,"21":35,"22":1,"23":1,"24":9,"25":38,"26":9,"27":9,"28":9,"29":9,"30":9,"31":9,"32":36,"33":36,"34":36,"35":36,"36":36,"37":6,"38":2,"39":4,"40":30,"41":30,"42":30,"43":30,"44":25,"45":5,"46":2,"47":1},"f":{"0":207,"1":95,"2":76,"3":35,"4":104,"5":35,"6":9,"7":38,"8":9},"b":{"0":[6,30],"1":[2,4],"2":[25,5]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CoinSelect.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/CoinSelect.ts"],"names":[],"mappings":"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","sourcesContent":["import { FundingInput } from '@node-dlc/messaging';\n\nimport { DualFundingTxFinalizer } from './TxFinalizer';\n\nexport interface UTXO {\n txid: string;\n vout: number;\n value: number;\n address: string;\n derivationPath?: string;\n}\n\nconst TX_INPUT_SIZE = {\n LEGACY: 148,\n P2SH: 92,\n BECH32: 69,\n};\n\nconst inputBytes = () => {\n return BigInt(TX_INPUT_SIZE.BECH32);\n};\n\nexport const dustThreshold = (feeRate: bigint): bigint => {\n return BigInt(inputBytes()) * feeRate;\n};\n\n// order by descending value, minus the inputs approximate fee\nconst utxoScore = (x: UTXO, feeRate: bigint): bigint => {\n return BigInt(x.value) - feeRate * inputBytes();\n};\n\nexport const dualFees = (\n feeRate: bigint,\n numInputs: number,\n numContracts: number,\n): bigint => {\n const input = new FundingInput();\n input.maxWitnessLen = 108;\n input.redeemScript = Buffer.from('', 'hex');\n\n const fakeSPK = Buffer.from(\n '0014663117d27e78eb432505180654e603acb30e8a4a',\n 'hex',\n );\n\n const offerInputs = Array.from({ length: numInputs }, () => input);\n const acceptInputs = Array.from({ length: 1 }, () => input);\n\n return new DualFundingTxFinalizer(\n offerInputs,\n fakeSPK,\n fakeSPK,\n acceptInputs,\n fakeSPK,\n fakeSPK,\n feeRate,\n numContracts,\n ).offerFees;\n};\n\n/**\n * Selects UTXOs for dual funding\n * @param utxos - UTXOs to select from\n * @param collaterals - Collaterals to fund (just one for non-batch tx)\n * @param feeRate - Fee rate in satoshis per byte\n * @returns Inputs and fee\n * @description\n * Add inputs until we reach or surpass the target value (or deplete)\n * Worst-case: O(n)\n */\nexport const dualFundingCoinSelect = (\n utxos: UTXO[],\n collaterals: bigint[], // in satoshis\n feeRate: bigint,\n): { inputs: UTXO[]; fee: bigint } => {\n utxos = [...utxos].sort((a, b) =>\n Number(utxoScore(b, feeRate) - utxoScore(a, feeRate)),\n );\n\n let inAccum = 0;\n const inputs: UTXO[] = [];\n const outAccum =\n collaterals.reduce((acc, val) => acc + val, BigInt(0)) +\n dustThreshold(feeRate); // sum of collaterals\n\n for (let i = 0; i < utxos.length; ++i) {\n const utxo = utxos[i];\n const utxoBytes = inputBytes();\n const utxoFee = feeRate * utxoBytes;\n const utxoValue = utxo.value;\n\n // skip detrimental input\n if (utxoFee > utxo.value) {\n if (i === utxos.length - 1)\n return {\n fee: dualFees(feeRate, 1, collaterals.length),\n inputs: [],\n };\n continue;\n }\n\n inAccum += utxoValue;\n inputs.push(utxo);\n\n const fee = dualFees(feeRate, inputs.length, collaterals.length);\n\n // go again?\n if (inAccum < outAccum + fee) continue;\n\n return { inputs, fee };\n }\n\n return {\n fee: dualFees(feeRate, 1, collaterals.length),\n inputs: [],\n };\n};\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a0476a0cb557025b4d39212f9b0877a5cbc6add6","contentHash":"440dc4c8b2821d3387091157a4004cfc2f5081262018ad4b7fb7a82967a74d59"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxFinalizer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxFinalizer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":126}},"2":{"start":{"line":4,"column":20},"end":{"line":4,"column":50}},"3":{"start":{"line":5,"column":21},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":34},"end":{"line":6,"column":36}},"5":{"start":{"line":7,"column":28},"end":{"line":7,"column":30}},"6":{"start":{"line":10,"column":8},"end":{"line":10,"column":39}},"7":{"start":{"line":11,"column":8},"end":{"line":11,"column":45}},"8":{"start":{"line":12,"column":8},"end":{"line":12,"column":45}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":41}},"10":{"start":{"line":14,"column":8},"end":{"line":14,"column":47}},"11":{"start":{"line":15,"column":8},"end":{"line":15,"column":47}},"12":{"start":{"line":16,"column":8},"end":{"line":16,"column":31}},"13":{"start":{"line":17,"column":8},"end":{"line":17,"column":41}},"14":{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},"15":{"start":{"line":22,"column":12},"end":{"line":22,"column":67}},"16":{"start":{"line":24,"column":8},"end":{"line":29,"column":11}},"17":{"start":{"line":25,"column":12},"end":{"line":28,"column":13}},"18":{"start":{"line":26,"column":16},"end":{"line":26,"column":46}},"19":{"start":{"line":27,"column":16},"end":{"line":27,"column":64}},"20":{"start":{"line":30,"column":23},"end":{"line":30,"column":52}},"21":{"start":{"line":30,"column":46},"end":{"line":30,"column":51}},"22":{"start":{"line":32,"column":32},"end":{"line":32,"column":58}},"23":{"start":{"line":33,"column":32},"end":{"line":37,"column":23}},"24":{"start":{"line":38,"column":26},"end":{"line":38,"column":64}},"25":{"start":{"line":40,"column":28},"end":{"line":42,"column":13}},"26":{"start":{"line":41,"column":12},"end":{"line":41,"column":79}},"27":{"start":{"line":43,"column":31},"end":{"line":43,"column":103}},"28":{"start":{"line":44,"column":29},"end":{"line":44,"column":71}},"29":{"start":{"line":45,"column":23},"end":{"line":45,"column":49}},"30":{"start":{"line":46,"column":23},"end":{"line":46,"column":80}},"31":{"start":{"line":47,"column":27},"end":{"line":47,"column":56}},"32":{"start":{"line":48,"column":8},"end":{"line":48,"column":41}},"33":{"start":{"line":51,"column":8},"end":{"line":51,"column":111}},"34":{"start":{"line":54,"column":8},"end":{"line":54,"column":114}},"35":{"start":{"line":57,"column":42},"end":{"line":57,"column":61}},"36":{"start":{"line":58,"column":8},"end":{"line":58,"column":38}},"37":{"start":{"line":61,"column":8},"end":{"line":61,"column":45}},"38":{"start":{"line":64,"column":8},"end":{"line":64,"column":46}},"39":{"start":{"line":67,"column":42},"end":{"line":67,"column":62}},"40":{"start":{"line":68,"column":8},"end":{"line":68,"column":38}},"41":{"start":{"line":71,"column":8},"end":{"line":71,"column":46}},"42":{"start":{"line":74,"column":8},"end":{"line":74,"column":47}},"43":{"start":{"line":77,"column":0},"end":{"line":77,"column":56}},"44":{"start":{"line":80,"column":8},"end":{"line":80,"column":47}},"45":{"start":{"line":81,"column":8},"end":{"line":81,"column":45}},"46":{"start":{"line":82,"column":8},"end":{"line":82,"column":47}},"47":{"start":{"line":83,"column":8},"end":{"line":83,"column":31}},"48":{"start":{"line":86,"column":8},"end":{"line":89,"column":11}},"49":{"start":{"line":87,"column":12},"end":{"line":88,"column":64}},"50":{"start":{"line":88,"column":16},"end":{"line":88,"column":64}},"51":{"start":{"line":90,"column":23},"end":{"line":90,"column":52}},"52":{"start":{"line":90,"column":46},"end":{"line":90,"column":51}},"53":{"start":{"line":92,"column":28},"end":{"line":94,"column":13}},"54":{"start":{"line":93,"column":12},"end":{"line":93,"column":79}},"55":{"start":{"line":95,"column":29},"end":{"line":95,"column":54}},"56":{"start":{"line":96,"column":23},"end":{"line":96,"column":55}},"57":{"start":{"line":97,"column":23},"end":{"line":97,"column":80}},"58":{"start":{"line":98,"column":20},"end":{"line":98,"column":49}},"59":{"start":{"line":99,"column":8},"end":{"line":99,"column":19}},"60":{"start":{"line":102,"column":8},"end":{"line":102,"column":75}},"61":{"start":{"line":105,"column":8},"end":{"line":105,"column":53}},"62":{"start":{"line":108,"column":8},"end":{"line":108,"column":76}},"63":{"start":{"line":111,"column":8},"end":{"line":111,"column":54}},"64":{"start":{"line":114,"column":8},"end":{"line":114,"column":44}},"65":{"start":{"line":117,"column":8},"end":{"line":117,"column":47}},"66":{"start":{"line":120,"column":8},"end":{"line":120,"column":45}},"67":{"start":{"line":123,"column":8},"end":{"line":123,"column":48}},"68":{"start":{"line":126,"column":0},"end":{"line":126,"column":56}},"69":{"start":{"line":127,"column":21},"end":{"line":135,"column":1}},"70":{"start":{"line":128,"column":18},"end":{"line":128,"column":48}},"71":{"start":{"line":129,"column":4},"end":{"line":129,"column":30}},"72":{"start":{"line":130,"column":4},"end":{"line":130,"column":48}},"73":{"start":{"line":131,"column":20},"end":{"line":131,"column":86}},"74":{"start":{"line":132,"column":4},"end":{"line":132,"column":72}},"75":{"start":{"line":132,"column":65},"end":{"line":132,"column":70}},"76":{"start":{"line":133,"column":4},"end":{"line":133,"column":74}},"77":{"start":{"line":133,"column":67},"end":{"line":133,"column":72}},"78":{"start":{"line":134,"column":4},"end":{"line":134,"column":124}},"79":{"start":{"line":136,"column":0},"end":{"line":136,"column":36}},"80":{"start":{"line":137,"column":28},"end":{"line":144,"column":1}},"81":{"start":{"line":138,"column":18},"end":{"line":138,"column":48}},"82":{"start":{"line":139,"column":4},"end":{"line":139,"column":30}},"83":{"start":{"line":140,"column":4},"end":{"line":140,"column":48}},"84":{"start":{"line":141,"column":24},"end":{"line":141,"column":75}},"85":{"start":{"line":141,"column":69},"end":{"line":141,"column":74}},"86":{"start":{"line":142,"column":25},"end":{"line":142,"column":77}},"87":{"start":{"line":142,"column":71},"end":{"line":142,"column":76}},"88":{"start":{"line":143,"column":4},"end":{"line":143,"column":87}},"89":{"start":{"line":145,"column":0},"end":{"line":145,"column":50}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":136},"end":{"line":18,"column":5}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":61},"end":{"line":49,"column":5}},"line":19},"2":{"name":"(anonymous_2)","decl":{"start":{"line":24,"column":24},"end":{"line":24,"column":25}},"loc":{"start":{"line":24,"column":35},"end":{"line":29,"column":9}},"line":24},"3":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":35},"end":{"line":30,"column":36}},"loc":{"start":{"line":30,"column":46},"end":{"line":30,"column":51}},"line":30},"4":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":42},"end":{"line":40,"column":43}},"loc":{"start":{"line":40,"column":60},"end":{"line":42,"column":9}},"line":40},"5":{"name":"(anonymous_5)","decl":{"start":{"line":50,"column":4},"end":{"line":50,"column":5}},"loc":{"start":{"line":50,"column":19},"end":{"line":52,"column":5}},"line":50},"6":{"name":"(anonymous_6)","decl":{"start":{"line":53,"column":4},"end":{"line":53,"column":5}},"loc":{"start":{"line":53,"column":20},"end":{"line":55,"column":5}},"line":53},"7":{"name":"(anonymous_7)","decl":{"start":{"line":56,"column":4},"end":{"line":56,"column":5}},"loc":{"start":{"line":56,"column":20},"end":{"line":59,"column":5}},"line":56},"8":{"name":"(anonymous_8)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":25},"end":{"line":62,"column":5}},"line":60},"9":{"name":"(anonymous_9)","decl":{"start":{"line":63,"column":4},"end":{"line":63,"column":5}},"loc":{"start":{"line":63,"column":26},"end":{"line":65,"column":5}},"line":63},"10":{"name":"(anonymous_10)","decl":{"start":{"line":66,"column":4},"end":{"line":66,"column":5}},"loc":{"start":{"line":66,"column":21},"end":{"line":69,"column":5}},"line":66},"11":{"name":"(anonymous_11)","decl":{"start":{"line":70,"column":4},"end":{"line":70,"column":5}},"loc":{"start":{"line":70,"column":26},"end":{"line":72,"column":5}},"line":70},"12":{"name":"(anonymous_12)","decl":{"start":{"line":73,"column":4},"end":{"line":73,"column":5}},"loc":{"start":{"line":73,"column":27},"end":{"line":75,"column":5}},"line":73},"13":{"name":"(anonymous_13)","decl":{"start":{"line":79,"column":4},"end":{"line":79,"column":5}},"loc":{"start":{"line":79,"column":75},"end":{"line":84,"column":5}},"line":79},"14":{"name":"(anonymous_14)","decl":{"start":{"line":85,"column":4},"end":{"line":85,"column":5}},"loc":{"start":{"line":85,"column":41},"end":{"line":100,"column":5}},"line":85},"15":{"name":"(anonymous_15)","decl":{"start":{"line":86,"column":24},"end":{"line":86,"column":25}},"loc":{"start":{"line":86,"column":35},"end":{"line":89,"column":9}},"line":86},"16":{"name":"(anonymous_16)","decl":{"start":{"line":90,"column":35},"end":{"line":90,"column":36}},"loc":{"start":{"line":90,"column":46},"end":{"line":90,"column":51}},"line":90},"17":{"name":"(anonymous_17)","decl":{"start":{"line":92,"column":42},"end":{"line":92,"column":43}},"loc":{"start":{"line":92,"column":60},"end":{"line":94,"column":9}},"line":92},"18":{"name":"(anonymous_18)","decl":{"start":{"line":101,"column":4},"end":{"line":101,"column":5}},"loc":{"start":{"line":101,"column":28},"end":{"line":103,"column":5}},"line":101},"19":{"name":"(anonymous_19)","decl":{"start":{"line":104,"column":4},"end":{"line":104,"column":5}},"loc":{"start":{"line":104,"column":31},"end":{"line":106,"column":5}},"line":104},"20":{"name":"(anonymous_20)","decl":{"start":{"line":107,"column":4},"end":{"line":107,"column":5}},"loc":{"start":{"line":107,"column":29},"end":{"line":109,"column":5}},"line":107},"21":{"name":"(anonymous_21)","decl":{"start":{"line":110,"column":4},"end":{"line":110,"column":5}},"loc":{"start":{"line":110,"column":32},"end":{"line":112,"column":5}},"line":110},"22":{"name":"(anonymous_22)","decl":{"start":{"line":113,"column":4},"end":{"line":113,"column":5}},"loc":{"start":{"line":113,"column":29},"end":{"line":115,"column":5}},"line":113},"23":{"name":"(anonymous_23)","decl":{"start":{"line":116,"column":4},"end":{"line":116,"column":5}},"loc":{"start":{"line":116,"column":32},"end":{"line":118,"column":5}},"line":116},"24":{"name":"(anonymous_24)","decl":{"start":{"line":119,"column":4},"end":{"line":119,"column":5}},"loc":{"start":{"line":119,"column":30},"end":{"line":121,"column":5}},"line":119},"25":{"name":"(anonymous_25)","decl":{"start":{"line":122,"column":4},"end":{"line":122,"column":5}},"loc":{"start":{"line":122,"column":33},"end":{"line":124,"column":5}},"line":122},"26":{"name":"(anonymous_26)","decl":{"start":{"line":127,"column":21},"end":{"line":127,"column":22}},"loc":{"start":{"line":127,"column":75},"end":{"line":135,"column":1}},"line":127},"27":{"name":"(anonymous_27)","decl":{"start":{"line":132,"column":59},"end":{"line":132,"column":60}},"loc":{"start":{"line":132,"column":65},"end":{"line":132,"column":70}},"line":132},"28":{"name":"(anonymous_28)","decl":{"start":{"line":133,"column":61},"end":{"line":133,"column":62}},"loc":{"start":{"line":133,"column":67},"end":{"line":133,"column":72}},"line":133},"29":{"name":"(anonymous_29)","decl":{"start":{"line":137,"column":28},"end":{"line":137,"column":29}},"loc":{"start":{"line":137,"column":88},"end":{"line":144,"column":1}},"line":137},"30":{"name":"(anonymous_30)","decl":{"start":{"line":141,"column":63},"end":{"line":141,"column":64}},"loc":{"start":{"line":141,"column":69},"end":{"line":141,"column":74}},"line":141},"31":{"name":"(anonymous_31)","decl":{"start":{"line":142,"column":65},"end":{"line":142,"column":66}},"loc":{"start":{"line":142,"column":71},"end":{"line":142,"column":76}},"line":142}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":118},"end":{"line":9,"column":134}},"type":"default-arg","locations":[{"start":{"line":9,"column":133},"end":{"line":9,"column":134}}],"line":9},"1":{"loc":{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},"type":"if","locations":[{"start":{"line":21,"column":8},"end":{"line":23,"column":9}},{"start":{"line":21,"column":8},"end":{"line":23,"column":9}}],"line":21},"2":{"loc":{"start":{"line":25,"column":12},"end":{"line":28,"column":13}},"type":"if","locations":[{"start":{"line":25,"column":12},"end":{"line":28,"column":13}},{"start":{"line":25,"column":12},"end":{"line":28,"column":13}}],"line":25},"3":{"loc":{"start":{"line":85,"column":27},"end":{"line":85,"column":39}},"type":"default-arg","locations":[{"start":{"line":85,"column":37},"end":{"line":85,"column":39}}],"line":85},"4":{"loc":{"start":{"line":87,"column":12},"end":{"line":88,"column":64}},"type":"if","locations":[{"start":{"line":87,"column":12},"end":{"line":88,"column":64}},{"start":{"line":87,"column":12},"end":{"line":88,"column":64}}],"line":87},"5":{"loc":{"start":{"line":132,"column":18},"end":{"line":132,"column":71}},"type":"binary-expr","locations":[{"start":{"line":132,"column":18},"end":{"line":132,"column":29}},{"start":{"line":132,"column":33},"end":{"line":132,"column":71}}],"line":132},"6":{"loc":{"start":{"line":133,"column":19},"end":{"line":133,"column":73}},"type":"binary-expr","locations":[{"start":{"line":133,"column":19},"end":{"line":133,"column":31}},{"start":{"line":133,"column":35},"end":{"line":133,"column":73}}],"line":133}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":149,"7":149,"8":149,"9":149,"10":149,"11":149,"12":149,"13":149,"14":194,"15":8,"16":186,"17":328,"18":0,"19":0,"20":186,"21":328,"22":186,"23":186,"24":186,"25":186,"26":328,"27":186,"28":186,"29":186,"30":186,"31":186,"32":186,"33":170,"34":24,"35":139,"36":139,"37":21,"38":10,"39":13,"40":13,"41":11,"42":0,"43":1,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":1,"69":1,"70":94,"71":94,"72":94,"73":94,"74":94,"75":0,"76":94,"77":0,"78":94,"79":1,"80":1,"81":94,"82":94,"83":94,"84":94,"85":162,"86":94,"87":112,"88":94,"89":1},"f":{"0":149,"1":194,"2":328,"3":328,"4":328,"5":170,"6":24,"7":139,"8":21,"9":10,"10":13,"11":11,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":94,"27":0,"28":0,"29":94,"30":162,"31":112},"b":{"0":[0],"1":[8,186],"2":[0,328],"3":[0],"4":[0,0],"5":[94,0],"6":[94,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxFinalizer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxFinalizer.ts"],"names":[],"mappings":"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","sourcesContent":["import { FundingInput, MessageType } from '@node-dlc/messaging';\nimport { Decimal } from 'decimal.js';\n\nconst BATCH_FUND_TX_BASE_WEIGHT = 42;\nconst FUNDING_OUTPUT_SIZE = 43;\n\nexport class DualFundingTxFinalizer {\n constructor(\n readonly offerInputs: FundingInput[],\n readonly offerPayoutSPK: Buffer,\n readonly offerChangeSPK: Buffer,\n readonly acceptInputs: FundingInput[],\n readonly acceptPayoutSPK: Buffer,\n readonly acceptChangeSPK: Buffer,\n readonly feeRate: bigint,\n readonly numContracts = 1,\n ) {}\n\n private computeFees(\n _inputs: FundingInput[],\n payoutSPK: Buffer,\n changeSPK: Buffer,\n numContracts: number,\n ): IFees {\n // If no inputs, return zero fees (matches C++ layer behavior for single-funded DLCs)\n if (_inputs.length === 0) {\n return { futureFee: BigInt(0), fundingFee: BigInt(0) };\n }\n\n _inputs.forEach((input) => {\n if (input.type !== MessageType.FundingInput) {\n console.error('input', input);\n throw new Error('Input is not a funding input');\n }\n });\n const inputs: FundingInput[] = _inputs.map(\n (input) => input as FundingInput,\n );\n // https://github.com/discreetlogcontracts/dlcspecs/blob/8ee4bbe816c9881c832b1ce320b9f14c72e3506f/Transactions.md#expected-weight-of-the-contract-execution-or-refund-transaction\n const futureFeeWeight = 249 + 4 * payoutSPK.length;\n const futureFeeVBytes = new Decimal(futureFeeWeight)\n .times(numContracts)\n .div(4)\n .ceil()\n .toNumber();\n const futureFee = this.feeRate * BigInt(futureFeeVBytes);\n\n // https://github.com/discreetlogcontracts/dlcspecs/blob/8ee4bbe816c9881c832b1ce320b9f14c72e3506f/Transactions.md#expected-weight-of-the-funding-transaction\n const inputWeight = inputs.reduce((total, input) => {\n return total + 164 + input.maxWitnessLen + input.scriptSigLength();\n }, 0);\n const contractWeight =\n (BATCH_FUND_TX_BASE_WEIGHT + FUNDING_OUTPUT_SIZE * numContracts * 4) / 2;\n const outputWeight = 36 + 4 * changeSPK.length + contractWeight;\n const weight = outputWeight + inputWeight;\n const vbytes = new Decimal(weight).div(4).ceil().toNumber();\n const fundingFee = this.feeRate * BigInt(vbytes);\n\n return { futureFee, fundingFee };\n }\n\n private getOfferFees(): IFees {\n return this.computeFees(\n this.offerInputs,\n this.offerPayoutSPK,\n this.offerChangeSPK,\n this.numContracts,\n );\n }\n\n private getAcceptFees(): IFees {\n return this.computeFees(\n this.acceptInputs,\n this.acceptPayoutSPK,\n this.acceptChangeSPK,\n this.numContracts,\n );\n }\n\n public get offerFees(): bigint {\n const { futureFee, fundingFee } = this.getOfferFees();\n return futureFee + fundingFee;\n }\n\n public get offerFutureFee(): bigint {\n return this.getOfferFees().futureFee;\n }\n\n public get offerFundingFee(): bigint {\n return this.getOfferFees().fundingFee;\n }\n\n public get acceptFees(): bigint {\n const { futureFee, fundingFee } = this.getAcceptFees();\n return futureFee + fundingFee;\n }\n\n public get acceptFutureFee(): bigint {\n return this.getAcceptFees().futureFee;\n }\n\n public get acceptFundingFee(): bigint {\n return this.getAcceptFees().fundingFee;\n }\n}\n\nexport class DualClosingTxFinalizer {\n constructor(\n readonly initiatorInputs: FundingInput[],\n readonly offerPayoutSPK: Buffer,\n readonly acceptPayoutSPK: Buffer,\n readonly feeRate: bigint,\n ) {}\n\n private computeFees(payoutSPK: Buffer, _inputs: FundingInput[] = []): bigint {\n _inputs.forEach((input) => {\n if (input.type !== MessageType.FundingInput)\n throw new Error('Input is not a funding input');\n });\n const inputs: FundingInput[] = _inputs.map(\n (input) => input as FundingInput,\n );\n // https://gist.github.com/matthewjablack/08c36baa513af9377508111405b22e03\n const inputWeight = inputs.reduce((total, input) => {\n return total + 164 + input.maxWitnessLen + input.scriptSigLength();\n }, 0);\n const outputWeight = 36 + 4 * payoutSPK.length;\n const weight = 213 + outputWeight + inputWeight;\n const vbytes = new Decimal(weight).div(4).ceil().toNumber();\n const fee = this.feeRate * BigInt(vbytes);\n\n return fee;\n }\n\n private getOfferInitiatorFees(): bigint {\n return this.computeFees(this.offerPayoutSPK, this.initiatorInputs);\n }\n\n private getOfferReciprocatorFees(): bigint {\n return this.computeFees(this.offerPayoutSPK);\n }\n\n private getAcceptInitiatorFees(): bigint {\n return this.computeFees(this.acceptPayoutSPK, this.initiatorInputs);\n }\n\n private getAcceptReciprocatorFees(): bigint {\n return this.computeFees(this.acceptPayoutSPK);\n }\n\n public get offerInitiatorFees(): bigint {\n return this.getOfferInitiatorFees();\n }\n\n public get offerReciprocatorFees(): bigint {\n return this.getOfferReciprocatorFees();\n }\n\n public get acceptInitiatorFees(): bigint {\n return this.getAcceptInitiatorFees();\n }\n\n public get acceptReciprocatorFees(): bigint {\n return this.getAcceptReciprocatorFees();\n }\n}\n\ninterface IFees {\n futureFee: bigint;\n fundingFee: bigint;\n}\n\nexport const getFinalizer = (\n feeRate: bigint,\n offerInputs?: FundingInput[],\n acceptInputs?: FundingInput[],\n numContracts?: number,\n): DualFundingTxFinalizer => {\n const input = new FundingInput();\n input.maxWitnessLen = 108;\n input.redeemScript = Buffer.from('', 'hex');\n\n const fakeSPK = Buffer.from(\n '0014663117d27e78eb432505180654e603acb30e8a4a',\n 'hex',\n );\n\n offerInputs = offerInputs || Array.from({ length: 1 }, () => input);\n\n acceptInputs = acceptInputs || Array.from({ length: 1 }, () => input);\n\n return new DualFundingTxFinalizer(\n offerInputs,\n fakeSPK,\n fakeSPK,\n acceptInputs,\n fakeSPK,\n fakeSPK,\n feeRate,\n numContracts,\n );\n};\n\nexport const getFinalizerByCount = (\n feeRate: bigint,\n numOfferInputs: number,\n numAcceptInputs: number,\n numContracts: number,\n): DualFundingTxFinalizer => {\n const input = new FundingInput();\n input.maxWitnessLen = 108;\n input.redeemScript = Buffer.from('', 'hex');\n\n const offerInputs = Array.from({ length: numOfferInputs }, () => input);\n const acceptInputs = Array.from({ length: numAcceptInputs }, () => input);\n return getFinalizer(feeRate, offerInputs, acceptInputs, numContracts);\n};\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5385821edcd643c9feb5638d17703eb69d356329","contentHash":"be28ca2456363c39cd3b152aef878f831b4f173e56d5e91cae98f6f6584af130"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PayoutCurve.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PayoutCurve.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PayoutCurve.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PayoutCurve.ts"],"names":[],"mappings":"","sourcesContent":["import BigNumber from 'bignumber.js';\n\nexport default interface PayoutCurve {\n getPayout(x: bigint): BigNumber;\n getOutcomeForPayout(y: BigNumber): bigint;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2113b4b2e105ee8abfa8378353944020033eea2b","contentHash":"34d748fc4da6e0cae50e56546d6d414cc984bdfd117d6d6533567f218920fd35"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PolynomialPayoutCurve.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PolynomialPayoutCurve.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":39}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":20},"end":{"line":9,"column":49}},"7":{"start":{"line":10,"column":24},"end":{"line":10,"column":50}},"8":{"start":{"line":13,"column":8},"end":{"line":14,"column":52}},"9":{"start":{"line":14,"column":12},"end":{"line":14,"column":52}},"10":{"start":{"line":15,"column":8},"end":{"line":15,"column":29}},"11":{"start":{"line":16,"column":8},"end":{"line":16,"column":30}},"12":{"start":{"line":17,"column":8},"end":{"line":17,"column":47}},"13":{"start":{"line":19,"column":8},"end":{"line":21,"column":68}},"14":{"start":{"line":29,"column":32},"end":{"line":29,"column":36}},"15":{"start":{"line":30,"column":18},"end":{"line":30,"column":61}},"16":{"start":{"line":32,"column":23},"end":{"line":32,"column":75}},"17":{"start":{"line":33,"column":8},"end":{"line":33,"column":22}},"18":{"start":{"line":41,"column":39},"end":{"line":41,"column":43}},"19":{"start":{"line":42,"column":18},"end":{"line":42,"column":60}},"20":{"start":{"line":44,"column":8},"end":{"line":55,"column":9}},"21":{"start":{"line":47,"column":12},"end":{"line":54,"column":13}},"22":{"start":{"line":48,"column":16},"end":{"line":48,"column":55}},"23":{"start":{"line":53,"column":16},"end":{"line":53,"column":55}},"24":{"start":{"line":59,"column":24},"end":{"line":63,"column":27}},"25":{"start":{"line":65,"column":31},"end":{"line":65,"column":123}},"26":{"start":{"line":66,"column":8},"end":{"line":66,"column":49}},"27":{"start":{"line":73,"column":27},"end":{"line":73,"column":31}},"28":{"start":{"line":74,"column":22},"end":{"line":74,"column":66}},"29":{"start":{"line":75,"column":8},"end":{"line":80,"column":11}},"30":{"start":{"line":76,"column":33},"end":{"line":76,"column":65}},"31":{"start":{"line":77,"column":34},"end":{"line":77,"column":65}},"32":{"start":{"line":78,"column":35},"end":{"line":78,"column":78}},"33":{"start":{"line":79,"column":12},"end":{"line":79,"column":67}},"34":{"start":{"line":81,"column":8},"end":{"line":81,"column":21}},"35":{"start":{"line":89,"column":8},"end":{"line":93,"column":11}},"36":{"start":{"line":90,"column":31},"end":{"line":90,"column":46}},"37":{"start":{"line":91,"column":12},"end":{"line":92,"column":52}},"38":{"start":{"line":101,"column":23},"end":{"line":105,"column":10}},"39":{"start":{"line":102,"column":28},"end":{"line":102,"column":85}},"40":{"start":{"line":103,"column":27},"end":{"line":103,"column":144}},"41":{"start":{"line":104,"column":12},"end":{"line":104,"column":39}},"42":{"start":{"line":106,"column":8},"end":{"line":106,"column":49}},"43":{"start":{"line":116,"column":8},"end":{"line":117,"column":60}},"44":{"start":{"line":117,"column":12},"end":{"line":117,"column":60}},"45":{"start":{"line":118,"column":8},"end":{"line":123,"column":11}},"46":{"start":{"line":119,"column":12},"end":{"line":122,"column":75}},"47":{"start":{"line":122,"column":16},"end":{"line":122,"column":75}},"48":{"start":{"line":124,"column":21},"end":{"line":124,"column":23}},"49":{"start":{"line":126,"column":37},"end":{"line":126,"column":75}},"50":{"start":{"line":127,"column":22},"end":{"line":127,"column":65}},"51":{"start":{"line":129,"column":27},"end":{"line":129,"column":65}},"52":{"start":{"line":131,"column":28},"end":{"line":131,"column":54}},"53":{"start":{"line":132,"column":34},"end":{"line":132,"column":79}},"54":{"start":{"line":134,"column":8},"end":{"line":139,"column":9}},"55":{"start":{"line":135,"column":12},"end":{"line":138,"column":66}},"56":{"start":{"line":141,"column":8},"end":{"line":145,"column":9}},"57":{"start":{"line":141,"column":21},"end":{"line":141,"column":22}},"58":{"start":{"line":142,"column":41},"end":{"line":142,"column":79}},"59":{"start":{"line":143,"column":26},"end":{"line":143,"column":69}},"60":{"start":{"line":144,"column":12},"end":{"line":144,"column":374}},"61":{"start":{"line":147,"column":8},"end":{"line":168,"column":9}},"62":{"start":{"line":149,"column":35},"end":{"line":149,"column":81}},"63":{"start":{"line":150,"column":30},"end":{"line":150,"column":81}},"64":{"start":{"line":152,"column":12},"end":{"line":167,"column":13}},"65":{"start":{"line":156,"column":35},"end":{"line":165,"column":18}},"66":{"start":{"line":166,"column":16},"end":{"line":166,"column":277}},"67":{"start":{"line":169,"column":8},"end":{"line":169,"column":55}},"68":{"start":{"line":172,"column":0},"end":{"line":172,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":24},"end":{"line":22,"column":5}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":23},"end":{"line":34,"column":5}},"line":28},"3":{"name":"(anonymous_3)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":5}},"loc":{"start":{"line":40,"column":32},"end":{"line":67,"column":5}},"line":40},"4":{"name":"(anonymous_4)","decl":{"start":{"line":72,"column":4},"end":{"line":72,"column":5}},"loc":{"start":{"line":72,"column":25},"end":{"line":82,"column":5}},"line":72},"5":{"name":"(anonymous_5)","decl":{"start":{"line":75,"column":34},"end":{"line":75,"column":35}},"loc":{"start":{"line":75,"column":45},"end":{"line":80,"column":9}},"line":75},"6":{"name":"(anonymous_6)","decl":{"start":{"line":88,"column":4},"end":{"line":88,"column":5}},"loc":{"start":{"line":88,"column":18},"end":{"line":94,"column":5}},"line":88},"7":{"name":"(anonymous_7)","decl":{"start":{"line":89,"column":33},"end":{"line":89,"column":34}},"loc":{"start":{"line":89,"column":47},"end":{"line":93,"column":9}},"line":89},"8":{"name":"(anonymous_8)","decl":{"start":{"line":100,"column":4},"end":{"line":100,"column":5}},"loc":{"start":{"line":100,"column":39},"end":{"line":107,"column":5}},"line":100},"9":{"name":"(anonymous_9)","decl":{"start":{"line":101,"column":40},"end":{"line":101,"column":41}},"loc":{"start":{"line":101,"column":51},"end":{"line":105,"column":9}},"line":101},"10":{"name":"(anonymous_10)","decl":{"start":{"line":115,"column":4},"end":{"line":115,"column":5}},"loc":{"start":{"line":115,"column":78},"end":{"line":170,"column":5}},"line":115},"11":{"name":"(anonymous_11)","decl":{"start":{"line":118,"column":52},"end":{"line":118,"column":53}},"loc":{"start":{"line":118,"column":63},"end":{"line":123,"column":9}},"line":118}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":13,"column":8},"end":{"line":14,"column":52}},"type":"if","locations":[{"start":{"line":13,"column":8},"end":{"line":14,"column":52}},{"start":{"line":13,"column":8},"end":{"line":14,"column":52}}],"line":13},"4":{"loc":{"start":{"line":44,"column":8},"end":{"line":55,"column":9}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":55,"column":9}},{"start":{"line":44,"column":8},"end":{"line":55,"column":9}}],"line":44},"5":{"loc":{"start":{"line":47,"column":12},"end":{"line":54,"column":13}},"type":"if","locations":[{"start":{"line":47,"column":12},"end":{"line":54,"column":13}},{"start":{"line":47,"column":12},"end":{"line":54,"column":13}}],"line":47},"6":{"loc":{"start":{"line":91,"column":20},"end":{"line":92,"column":50}},"type":"binary-expr","locations":[{"start":{"line":91,"column":20},"end":{"line":91,"column":56}},{"start":{"line":92,"column":16},"end":{"line":92,"column":50}}],"line":91},"7":{"loc":{"start":{"line":116,"column":8},"end":{"line":117,"column":60}},"type":"if","locations":[{"start":{"line":116,"column":8},"end":{"line":117,"column":60}},{"start":{"line":116,"column":8},"end":{"line":117,"column":60}}],"line":116},"8":{"loc":{"start":{"line":119,"column":12},"end":{"line":122,"column":75}},"type":"if","locations":[{"start":{"line":119,"column":12},"end":{"line":122,"column":75}},{"start":{"line":119,"column":12},"end":{"line":122,"column":75}}],"line":119},"9":{"loc":{"start":{"line":119,"column":16},"end":{"line":121,"column":98}},"type":"binary-expr","locations":[{"start":{"line":119,"column":16},"end":{"line":120,"column":59}},{"start":{"line":121,"column":16},"end":{"line":121,"column":98}}],"line":119},"10":{"loc":{"start":{"line":134,"column":8},"end":{"line":139,"column":9}},"type":"if","locations":[{"start":{"line":134,"column":8},"end":{"line":139,"column":9}},{"start":{"line":134,"column":8},"end":{"line":139,"column":9}}],"line":134},"11":{"loc":{"start":{"line":147,"column":8},"end":{"line":168,"column":9}},"type":"if","locations":[{"start":{"line":147,"column":8},"end":{"line":168,"column":9}},{"start":{"line":147,"column":8},"end":{"line":168,"column":9}}],"line":147},"12":{"loc":{"start":{"line":147,"column":12},"end":{"line":148,"column":58}},"type":"binary-expr","locations":[{"start":{"line":147,"column":12},"end":{"line":147,"column":39}},{"start":{"line":148,"column":12},"end":{"line":148,"column":58}}],"line":147},"13":{"loc":{"start":{"line":152,"column":12},"end":{"line":167,"column":13}},"type":"if","locations":[{"start":{"line":152,"column":12},"end":{"line":167,"column":13}},{"start":{"line":152,"column":12},"end":{"line":167,"column":13}}],"line":152}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":288,"9":1,"10":287,"11":287,"12":287,"13":287,"14":36,"15":36,"16":36,"17":36,"18":58,"19":58,"20":58,"21":0,"22":0,"23":0,"24":58,"25":58,"26":58,"27":271,"28":271,"29":271,"30":542,"31":542,"32":542,"33":542,"34":271,"35":2,"36":4,"37":4,"38":7,"39":14,"40":14,"41":14,"42":7,"43":4,"44":1,"45":3,"46":7,"47":1,"48":2,"49":2,"50":2,"51":2,"52":2,"53":2,"54":2,"55":2,"56":2,"57":2,"58":4,"59":4,"60":4,"61":2,"62":2,"63":2,"64":2,"65":0,"66":0,"67":2,"68":1},"f":{"0":1,"1":288,"2":36,"3":58,"4":271,"5":542,"6":2,"7":4,"8":7,"9":14,"10":4,"11":7},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[1,287],"4":[0,58],"5":[0,0],"6":[4,3],"7":[1,3],"8":[1,6],"9":[7,1],"10":[2,0],"11":[2,0],"12":[2,2],"13":[0,2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PolynomialPayoutCurve.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/PolynomialPayoutCurve.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n MessageType,\n PayoutCurvePieceType,\n PayoutFunction,\n PolynomialPayoutCurvePiece,\n RoundingIntervals,\n} from '@node-dlc/messaging';\nimport BigNumber from 'bignumber.js';\n\nimport { fromPrecision, getPrecision } from '../utils/Precision';\nimport { CETPayout, mergePayouts, splitIntoRanges } from './CETCalculator';\n\ninterface DlcPoint {\n outcome: BigNumber;\n payout: BigNumber;\n}\n\nexport class PolynomialPayoutCurve {\n private readonly points: DlcPoint[];\n private readonly slope: BigNumber;\n private readonly left: DlcPoint;\n private readonly right: DlcPoint;\n\n constructor(points: DlcPoint[]) {\n if (points.length !== 2) throw new Error('Must have two points');\n this.points = points;\n this.left = points[0];\n this.right = points[points.length - 1];\n\n // m = (y2 - y1) / (x2 - x1)\n this.slope = this.right.payout\n .minus(this.left.payout)\n .dividedBy(this.right.outcome.minus(this.left.outcome));\n }\n\n /**\n * Get the payout for a given outcome\n * @param outcome The outcome to get the payout for\n * @returns The payout for the outcome\n */\n getPayout(outcome: bigint): BigNumber {\n const { left, slope } = this;\n\n const x = new BigNumber(Number(outcome));\n\n // y = mx + b\n const payout = slope.times(x.minus(left.outcome)).plus(left.payout);\n\n return payout;\n }\n\n /**\n * Get the outcome for a given payout\n * @param payout The payout to get the outcome for\n * @returns The outcome for the payout\n */\n getOutcomeForPayout(payout: BigNumber): bigint {\n const { left, right, slope } = this;\n const y = new BigNumber(Number(payout));\n\n // Handle constant payout curve (slope = 0)\n if (slope.isZero()) {\n // For constant curves, if the payout matches, return any outcome in the range\n // If it doesn't match, this is an invalid request\n if (y.eq(left.payout)) {\n return BigInt(left.outcome.toString());\n } else {\n // For constant curves, if payout doesn't match, return left outcome\n // This prevents Infinity errors in calculations\n return BigInt(left.outcome.toString());\n }\n }\n\n // Find the x value for the given y\n // slope = (y2 - y1) / (x2 - x1)\n // x1 = (y2 - y1) / slope + x2\n const outcome = y\n .minus(left.payout)\n .dividedBy(slope)\n .plus(left.outcome)\n .integerValue();\n\n // Clamp the outcome to the valid range\n const clampedOutcome = BigNumber.max(\n left.outcome,\n BigNumber.min(outcome, right.outcome),\n );\n\n return BigInt(clampedOutcome.toString());\n }\n\n /**\n * Serializes PolynomialPayoutCurve to a PolynomialPayoutCurvePiece (for transport)\n * @returns A PolynomialPayoutCurvePiece\n */\n toPayoutCurvePiece(): PolynomialPayoutCurvePiece {\n const { points } = this;\n\n const piece = new PolynomialPayoutCurvePiece();\n\n piece.points = points.map((point) => {\n const eventOutcome = BigInt(point.outcome.toString());\n const outcomePayout = BigInt(point.payout.toString());\n const extraPrecision = getPrecision(point.payout);\n return { eventOutcome, outcomePayout, extraPrecision };\n });\n\n return piece;\n }\n\n /**\n * Determine if the payout curve is equal to another\n * @param curve A PolynomialPayoutCurve\n * @returns True if the curves are the same\n */\n equals(curve: PolynomialPayoutCurve): boolean {\n return this.points.every((point, i) => {\n const otherPoint = curve.points[i];\n return (\n point.outcome.eq(otherPoint.outcome) &&\n point.payout.eq(otherPoint.payout)\n );\n });\n }\n\n /**\n * Creates a PolynomialPayoutCurve from a PolynomialPayoutCurvePiece\n * @param piece\n * @returns A PolynomialPayoutCurve\n */\n static fromPayoutCurvePiece(\n piece: PolynomialPayoutCurvePiece,\n ): PolynomialPayoutCurve {\n const points = piece.points.map((point) => {\n const outcome = new BigNumber(point.eventOutcome.toString());\n const payout = new BigNumber(point.outcomePayout.toString()).plus(\n fromPrecision(point.extraPrecision),\n );\n return { outcome, payout };\n });\n return new PolynomialPayoutCurve(points);\n }\n\n /**\n * Computes all CETs for a given payout curve\n * @param payoutFunction The payout function\n * @param totalCollateral The total collateral\n * @param roundingIntervals The rounding intervals\n * @returns A list of CETs\n */\n static computePayouts(\n payoutFunction: PayoutFunction,\n totalCollateral: bigint,\n roundingIntervals: RoundingIntervals,\n ): CETPayout[] {\n if (payoutFunction.payoutFunctionPieces.length < 1)\n throw new Error('Must have at least one piece');\n\n payoutFunction.payoutFunctionPieces.forEach((piece) => {\n if (\n piece.payoutCurvePiece.payoutCurvePieceType !==\n PayoutCurvePieceType.Polynomial &&\n piece.payoutCurvePiece.type !== MessageType.PolynomialPayoutCurvePiece\n )\n throw new Error('Payout curve piece must be a polynomial');\n });\n\n const CETS: CETPayout[] = [];\n\n // 1. Add the first piece to the list\n const { payoutCurvePiece } = payoutFunction.payoutFunctionPieces[0];\n\n const curve = this.fromPayoutCurvePiece(\n payoutCurvePiece as PolynomialPayoutCurvePiece,\n );\n\n // For the first piece, start from 0 and go to the first endpoint\n const firstPiece = payoutFunction.payoutFunctionPieces[0];\n\n // Calculate the start payout by evaluating the curve at outcome 0\n const startPayout = curve.getPayout(BigInt(0));\n const startPayoutBigInt = BigInt(startPayout.integerValue().toString());\n\n // Only add ranges if there's actually a range to cover\n if (firstPiece.endPoint.eventOutcome > 0) {\n CETS.push(\n ...splitIntoRanges(\n BigInt(0), // Start from 0\n firstPiece.endPoint.eventOutcome,\n startPayoutBigInt, // Start payout calculated from curve\n firstPiece.endPoint.outcomePayout, // End payout from endpoint\n totalCollateral,\n curve,\n roundingIntervals.intervals,\n ),\n );\n }\n\n // 2. If there are subsequent pieces, add them to the list\n for (let i = 1; i < payoutFunction.payoutFunctionPieces.length; i++) {\n const { payoutCurvePiece } = payoutFunction.payoutFunctionPieces[i];\n\n const curve = this.fromPayoutCurvePiece(\n payoutCurvePiece as PolynomialPayoutCurvePiece,\n );\n\n CETS.push(\n ...splitIntoRanges(\n payoutFunction.payoutFunctionPieces[i - 1].endPoint.eventOutcome,\n payoutFunction.payoutFunctionPieces[i].endPoint.eventOutcome,\n payoutFunction.payoutFunctionPieces[i - 1].endPoint.outcomePayout,\n payoutFunction.payoutFunctionPieces[i].endPoint.outcomePayout,\n totalCollateral,\n curve,\n roundingIntervals.intervals,\n ),\n );\n }\n\n // 3. Handle the final range from the last piece to lastEndpoint if it exists\n if (\n payoutFunction.lastEndpoint &&\n payoutFunction.payoutFunctionPieces.length > 0\n ) {\n const lastPieceIndex = payoutFunction.payoutFunctionPieces.length - 1;\n const lastPiece = payoutFunction.payoutFunctionPieces[lastPieceIndex];\n\n // Check if there's a range to cover\n if (\n payoutFunction.lastEndpoint.eventOutcome >\n lastPiece.endPoint.eventOutcome\n ) {\n // For the final range, we'll assume a constant payout from the last piece endpoint to lastEndpoint\n // This is a common pattern for DLC payout functions\n const finalCurve = new PolynomialPayoutCurve([\n {\n outcome: new BigNumber(lastPiece.endPoint.eventOutcome.toString()),\n payout: new BigNumber(lastPiece.endPoint.outcomePayout.toString()),\n },\n {\n outcome: new BigNumber(\n payoutFunction.lastEndpoint.eventOutcome.toString(),\n ),\n payout: new BigNumber(\n payoutFunction.lastEndpoint.outcomePayout.toString(),\n ),\n },\n ]);\n\n CETS.push(\n ...splitIntoRanges(\n lastPiece.endPoint.eventOutcome,\n payoutFunction.lastEndpoint.eventOutcome,\n lastPiece.endPoint.outcomePayout,\n payoutFunction.lastEndpoint.outcomePayout,\n totalCollateral,\n finalCurve,\n roundingIntervals.intervals,\n ),\n );\n }\n }\n\n return mergePayouts(CETS);\n }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4cf2833658a5fdb9194975df9197083941f568a0","contentHash":"be35917d5e73e8685a49e77fd45ab9aedb64b3e848734ff0bd19e0fbb04dd5b9"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/Precision.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/Precision.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"4":{"start":{"line":7,"column":23},"end":{"line":7,"column":63}},"5":{"start":{"line":15,"column":21},"end":{"line":15,"column":92}},"6":{"start":{"line":15,"column":30},"end":{"line":15,"column":92}},"7":{"start":{"line":16,"column":0},"end":{"line":16,"column":36}},"8":{"start":{"line":22,"column":22},"end":{"line":26,"column":1}},"9":{"start":{"line":23,"column":4},"end":{"line":24,"column":50}},"10":{"start":{"line":24,"column":8},"end":{"line":24,"column":50}},"11":{"start":{"line":25,"column":4},"end":{"line":25,"column":64}},"12":{"start":{"line":27,"column":0},"end":{"line":27,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":21},"end":{"line":15,"column":22}},"loc":{"start":{"line":15,"column":30},"end":{"line":15,"column":92}},"line":15},"2":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":22},"end":{"line":22,"column":23}},"loc":{"start":{"line":22,"column":37},"end":{"line":26,"column":1}},"line":22}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":23,"column":4},"end":{"line":24,"column":50}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":24,"column":50}},{"start":{"line":23,"column":4},"end":{"line":24,"column":50}}],"line":23}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":545,"7":1,"8":1,"9":19,"10":1,"11":18,"12":1},"f":{"0":1,"1":545,"2":19},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[1,18]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/Precision.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/utils/Precision.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AAErC,oEAAoE;AACpE,iHAAiH;AAEjH;;;;GAIG;AACI,MAAM,YAAY,GAAG,CAAC,GAAc,EAAU,EAAE,CACrD,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AADpD,QAAA,YAAY,gBACwC;AAEjE;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAa,EAAE;IAC5D,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,OAAO,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB","sourcesContent":["import BigNumber from 'bignumber.js';\n\n// Precision refers to the number of digits after the decimal point.\n// Refer to https://github.com/discreetlogcontracts/dlcspecs/blob/master/PayoutCurve.md#version-0-payout_function\n\n/**\n * Extract the precision of a number\n * @param num\n * @returns The precision of the number\n */\nexport const getPrecision = (num: BigNumber): number =>\n num.decimalPlaces(16).abs().modulo(1).shiftedBy(16).toNumber();\n\n/**\n * Creates a precise number from a precision\n * @param precision\n * @returns The number with the given precision\n */\nexport const fromPrecision = (precision: number): BigNumber => {\n if (precision.toString().length > 16)\n throw new Error('Precision is too large');\n return new BigNumber(precision).shiftedBy(-16);\n};\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5eb253d11488aac3058964311aa8d1bee2d44306","contentHash":"e8e219e7f755c819cfeef63f3efb2871da3b885a49cf18d9b3f2acbf677e6114"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxBuilder.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxBuilder.ts","statementMap":{"0":{"start":{"line":13,"column":22},"end":{"line":15,"column":1}},"1":{"start":{"line":14,"column":4},"end":{"line":14,"column":62}},"2":{"start":{"line":16,"column":0},"end":{"line":16,"column":62}},"3":{"start":{"line":17,"column":0},"end":{"line":17,"column":79}},"4":{"start":{"line":18,"column":18},"end":{"line":18,"column":46}},"5":{"start":{"line":19,"column":20},"end":{"line":19,"column":50}},"6":{"start":{"line":20,"column":21},"end":{"line":20,"column":59}},"7":{"start":{"line":21,"column":22},"end":{"line":21,"column":46}},"8":{"start":{"line":23,"column":0},"end":{"line":23,"column":34}},"9":{"start":{"line":26,"column":8},"end":{"line":26,"column":33}},"10":{"start":{"line":27,"column":8},"end":{"line":27,"column":35}},"11":{"start":{"line":30,"column":26},"end":{"line":30,"column":82}},"12":{"start":{"line":31,"column":8},"end":{"line":31,"column":51}},"13":{"start":{"line":34,"column":0},"end":{"line":34,"column":36}},"14":{"start":{"line":37,"column":8},"end":{"line":37,"column":35}},"15":{"start":{"line":38,"column":8},"end":{"line":38,"column":37}},"16":{"start":{"line":68,"column":32},"end":{"line":70,"column":21}},"17":{"start":{"line":69,"column":12},"end":{"line":69,"column":77}},"18":{"start":{"line":72,"column":24},"end":{"line":72,"column":90}},"19":{"start":{"line":73,"column":26},"end":{"line":74,"column":53}},"20":{"start":{"line":78,"column":26},"end":{"line":78,"column":50}},"21":{"start":{"line":79,"column":27},"end":{"line":79,"column":52}},"22":{"start":{"line":81,"column":30},"end":{"line":81,"column":70}},"23":{"start":{"line":83,"column":8},"end":{"line":83,"column":69}},"24":{"start":{"line":86,"column":19},"end":{"line":86,"column":44}},"25":{"start":{"line":87,"column":8},"end":{"line":87,"column":23}},"26":{"start":{"line":88,"column":8},"end":{"line":88,"column":48}},"27":{"start":{"line":89,"column":8},"end":{"line":90,"column":76}},"28":{"start":{"line":90,"column":12},"end":{"line":90,"column":76}},"29":{"start":{"line":91,"column":8},"end":{"line":92,"column":55}},"30":{"start":{"line":92,"column":12},"end":{"line":92,"column":55}},"31":{"start":{"line":93,"column":8},"end":{"line":94,"column":56}},"32":{"start":{"line":94,"column":12},"end":{"line":94,"column":56}},"33":{"start":{"line":96,"column":8},"end":{"line":96,"column":39}},"34":{"start":{"line":97,"column":32},"end":{"line":97,"column":34}},"35":{"start":{"line":98,"column":8},"end":{"line":104,"column":9}},"36":{"start":{"line":98,"column":21},"end":{"line":98,"column":22}},"37":{"start":{"line":99,"column":26},"end":{"line":99,"column":43}},"38":{"start":{"line":100,"column":27},"end":{"line":100,"column":45}},"39":{"start":{"line":101,"column":12},"end":{"line":103,"column":91}},"40":{"start":{"line":105,"column":27},"end":{"line":105,"column":110}},"41":{"start":{"line":105,"column":67},"end":{"line":105,"column":109}},"42":{"start":{"line":106,"column":26},"end":{"line":106,"column":306}},"43":{"start":{"line":107,"column":8},"end":{"line":110,"column":11}},"44":{"start":{"line":108,"column":12},"end":{"line":109,"column":64}},"45":{"start":{"line":109,"column":16},"end":{"line":109,"column":64}},"46":{"start":{"line":111,"column":35},"end":{"line":111,"column":88}},"47":{"start":{"line":111,"column":82},"end":{"line":111,"column":87}},"48":{"start":{"line":112,"column":34},"end":{"line":114,"column":21}},"49":{"start":{"line":113,"column":12},"end":{"line":113,"column":77}},"50":{"start":{"line":115,"column":35},"end":{"line":117,"column":21}},"51":{"start":{"line":116,"column":12},"end":{"line":116,"column":77}},"52":{"start":{"line":118,"column":30},"end":{"line":121,"column":9}},"53":{"start":{"line":122,"column":8},"end":{"line":122,"column":88}},"54":{"start":{"line":122,"column":37},"end":{"line":122,"column":86}},"55":{"start":{"line":123,"column":8},"end":{"line":125,"column":11}},"56":{"start":{"line":124,"column":12},"end":{"line":124,"column":110}},"57":{"start":{"line":126,"column":27},"end":{"line":126,"column":108}},"58":{"start":{"line":126,"column":67},"end":{"line":126,"column":96}},"59":{"start":{"line":127,"column":28},"end":{"line":127,"column":113}},"60":{"start":{"line":127,"column":70},"end":{"line":127,"column":101}},"61":{"start":{"line":128,"column":28},"end":{"line":132,"column":10}},"62":{"start":{"line":129,"column":31},"end":{"line":129,"column":52}},"63":{"start":{"line":130,"column":32},"end":{"line":130,"column":67}},"64":{"start":{"line":131,"column":12},"end":{"line":131,"column":44}},"65":{"start":{"line":133,"column":30},"end":{"line":145,"column":10}},"66":{"start":{"line":134,"column":43},"end":{"line":137,"column":27}},"67":{"start":{"line":138,"column":45},"end":{"line":141,"column":27}},"68":{"start":{"line":142,"column":12},"end":{"line":144,"column":73}},"69":{"start":{"line":146,"column":33},"end":{"line":146,"column":85}},"70":{"start":{"line":147,"column":34},"end":{"line":147,"column":89}},"71":{"start":{"line":149,"column":8},"end":{"line":151,"column":9}},"72":{"start":{"line":150,"column":12},"end":{"line":150,"column":141}},"73":{"start":{"line":154,"column":8},"end":{"line":156,"column":9}},"74":{"start":{"line":155,"column":12},"end":{"line":155,"column":145}},"75":{"start":{"line":157,"column":24},"end":{"line":157,"column":26}},"76":{"start":{"line":158,"column":8},"end":{"line":164,"column":11}},"77":{"start":{"line":159,"column":12},"end":{"line":163,"column":15}},"78":{"start":{"line":168,"column":8},"end":{"line":174,"column":9}},"79":{"start":{"line":169,"column":12},"end":{"line":173,"column":15}},"80":{"start":{"line":175,"column":8},"end":{"line":181,"column":9}},"81":{"start":{"line":176,"column":12},"end":{"line":180,"column":15}},"82":{"start":{"line":182,"column":8},"end":{"line":182,"column":72}},"83":{"start":{"line":182,"column":31},"end":{"line":182,"column":70}},"84":{"start":{"line":183,"column":8},"end":{"line":185,"column":11}},"85":{"start":{"line":184,"column":12},"end":{"line":184,"column":54}},"86":{"start":{"line":186,"column":8},"end":{"line":186,"column":25}},"87":{"start":{"line":190,"column":37},"end":{"line":190,"column":118}},"88":{"start":{"line":190,"column":84},"end":{"line":190,"column":117}},"89":{"start":{"line":191,"column":8},"end":{"line":196,"column":9}},"90":{"start":{"line":191,"column":21},"end":{"line":191,"column":22}},"91":{"start":{"line":192,"column":34},"end":{"line":192,"column":115}},"92":{"start":{"line":192,"column":81},"end":{"line":192,"column":114}},"93":{"start":{"line":193,"column":12},"end":{"line":195,"column":13}},"94":{"start":{"line":194,"column":16},"end":{"line":194,"column":112}},"95":{"start":{"line":198,"column":38},"end":{"line":198,"column":120}},"96":{"start":{"line":198,"column":86},"end":{"line":198,"column":119}},"97":{"start":{"line":199,"column":8},"end":{"line":204,"column":9}},"98":{"start":{"line":199,"column":21},"end":{"line":199,"column":22}},"99":{"start":{"line":200,"column":34},"end":{"line":200,"column":116}},"100":{"start":{"line":200,"column":82},"end":{"line":200,"column":115}},"101":{"start":{"line":201,"column":12},"end":{"line":203,"column":13}},"102":{"start":{"line":202,"column":16},"end":{"line":202,"column":114}},"103":{"start":{"line":207,"column":8},"end":{"line":208,"column":25}},"104":{"start":{"line":208,"column":12},"end":{"line":208,"column":25}},"105":{"start":{"line":209,"column":8},"end":{"line":212,"column":9}},"106":{"start":{"line":209,"column":21},"end":{"line":209,"column":22}},"107":{"start":{"line":210,"column":12},"end":{"line":211,"column":29}},"108":{"start":{"line":211,"column":16},"end":{"line":211,"column":29}},"109":{"start":{"line":213,"column":8},"end":{"line":213,"column":20}},"110":{"start":{"line":216,"column":0},"end":{"line":216,"column":46}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":13,"column":56},"end":{"line":13,"column":57}},"loc":{"start":{"line":13,"column":71},"end":{"line":15,"column":1}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":25,"column":4},"end":{"line":25,"column":5}},"loc":{"start":{"line":25,"column":37},"end":{"line":28,"column":5}},"line":25},"2":{"name":"(anonymous_2)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":30},"end":{"line":32,"column":5}},"line":29},"3":{"name":"(anonymous_3)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":5}},"loc":{"start":{"line":36,"column":39},"end":{"line":39,"column":5}},"line":36},"4":{"name":"(anonymous_4)","decl":{"start":{"line":66,"column":4},"end":{"line":66,"column":5}},"loc":{"start":{"line":66,"column":81},"end":{"line":84,"column":5}},"line":66},"5":{"name":"(anonymous_5)","decl":{"start":{"line":68,"column":53},"end":{"line":68,"column":54}},"loc":{"start":{"line":68,"column":71},"end":{"line":70,"column":9}},"line":68},"6":{"name":"(anonymous_6)","decl":{"start":{"line":85,"column":4},"end":{"line":85,"column":5}},"loc":{"start":{"line":85,"column":30},"end":{"line":187,"column":5}},"line":85},"7":{"name":"(anonymous_7)","decl":{"start":{"line":105,"column":47},"end":{"line":105,"column":48}},"loc":{"start":{"line":105,"column":67},"end":{"line":105,"column":109}},"line":105},"8":{"name":"(anonymous_8)","decl":{"start":{"line":107,"column":48},"end":{"line":107,"column":49}},"loc":{"start":{"line":107,"column":59},"end":{"line":110,"column":9}},"line":107},"9":{"name":"(anonymous_9)","decl":{"start":{"line":111,"column":71},"end":{"line":111,"column":72}},"loc":{"start":{"line":111,"column":82},"end":{"line":111,"column":87}},"line":111},"10":{"name":"(anonymous_10)","decl":{"start":{"line":112,"column":60},"end":{"line":112,"column":61}},"loc":{"start":{"line":112,"column":78},"end":{"line":114,"column":9}},"line":112},"11":{"name":"(anonymous_11)","decl":{"start":{"line":115,"column":75},"end":{"line":115,"column":76}},"loc":{"start":{"line":115,"column":93},"end":{"line":117,"column":9}},"line":115},"12":{"name":"(anonymous_12)","decl":{"start":{"line":122,"column":27},"end":{"line":122,"column":28}},"loc":{"start":{"line":122,"column":37},"end":{"line":122,"column":86}},"line":122},"13":{"name":"(anonymous_13)","decl":{"start":{"line":123,"column":30},"end":{"line":123,"column":31}},"loc":{"start":{"line":123,"column":41},"end":{"line":125,"column":9}},"line":123},"14":{"name":"(anonymous_14)","decl":{"start":{"line":126,"column":49},"end":{"line":126,"column":50}},"loc":{"start":{"line":126,"column":67},"end":{"line":126,"column":96}},"line":126},"15":{"name":"(anonymous_15)","decl":{"start":{"line":127,"column":51},"end":{"line":127,"column":52}},"loc":{"start":{"line":127,"column":70},"end":{"line":127,"column":101}},"line":127},"16":{"name":"(anonymous_16)","decl":{"start":{"line":128,"column":47},"end":{"line":128,"column":48}},"loc":{"start":{"line":128,"column":61},"end":{"line":132,"column":9}},"line":128},"17":{"name":"(anonymous_17)","decl":{"start":{"line":133,"column":46},"end":{"line":133,"column":47}},"loc":{"start":{"line":133,"column":62},"end":{"line":145,"column":9}},"line":133},"18":{"name":"(anonymous_18)","decl":{"start":{"line":158,"column":27},"end":{"line":158,"column":28}},"loc":{"start":{"line":158,"column":45},"end":{"line":164,"column":9}},"line":158},"19":{"name":"(anonymous_19)","decl":{"start":{"line":182,"column":21},"end":{"line":182,"column":22}},"loc":{"start":{"line":182,"column":31},"end":{"line":182,"column":70}},"line":182},"20":{"name":"(anonymous_20)","decl":{"start":{"line":183,"column":24},"end":{"line":183,"column":25}},"loc":{"start":{"line":183,"column":36},"end":{"line":185,"column":9}},"line":183},"21":{"name":"(anonymous_21)","decl":{"start":{"line":188,"column":4},"end":{"line":188,"column":5}},"loc":{"start":{"line":188,"column":30},"end":{"line":205,"column":5}},"line":188},"22":{"name":"(anonymous_22)","decl":{"start":{"line":190,"column":73},"end":{"line":190,"column":74}},"loc":{"start":{"line":190,"column":84},"end":{"line":190,"column":117}},"line":190},"23":{"name":"(anonymous_23)","decl":{"start":{"line":192,"column":70},"end":{"line":192,"column":71}},"loc":{"start":{"line":192,"column":81},"end":{"line":192,"column":114}},"line":192},"24":{"name":"(anonymous_24)","decl":{"start":{"line":198,"column":75},"end":{"line":198,"column":76}},"loc":{"start":{"line":198,"column":86},"end":{"line":198,"column":119}},"line":198},"25":{"name":"(anonymous_25)","decl":{"start":{"line":200,"column":71},"end":{"line":200,"column":72}},"loc":{"start":{"line":200,"column":82},"end":{"line":200,"column":115}},"line":200},"26":{"name":"(anonymous_26)","decl":{"start":{"line":206,"column":4},"end":{"line":206,"column":5}},"loc":{"start":{"line":206,"column":28},"end":{"line":214,"column":5}},"line":206}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":22},"end":{"line":15,"column":1}},"type":"binary-expr","locations":[{"start":{"line":13,"column":23},"end":{"line":13,"column":27}},{"start":{"line":13,"column":31},"end":{"line":13,"column":51}},{"start":{"line":13,"column":56},"end":{"line":15,"column":1}}],"line":13},"1":{"loc":{"start":{"line":14,"column":11},"end":{"line":14,"column":61}},"type":"cond-expr","locations":[{"start":{"line":14,"column":37},"end":{"line":14,"column":40}},{"start":{"line":14,"column":43},"end":{"line":14,"column":61}}],"line":14},"2":{"loc":{"start":{"line":14,"column":12},"end":{"line":14,"column":33}},"type":"binary-expr","locations":[{"start":{"line":14,"column":12},"end":{"line":14,"column":15}},{"start":{"line":14,"column":19},"end":{"line":14,"column":33}}],"line":14},"3":{"loc":{"start":{"line":66,"column":63},"end":{"line":66,"column":79}},"type":"default-arg","locations":[{"start":{"line":66,"column":78},"end":{"line":66,"column":79}}],"line":66},"4":{"loc":{"start":{"line":83,"column":15},"end":{"line":83,"column":68}},"type":"cond-expr","locations":[{"start":{"line":83,"column":43},"end":{"line":83,"column":56}},{"start":{"line":83,"column":59},"end":{"line":83,"column":68}}],"line":83},"5":{"loc":{"start":{"line":89,"column":8},"end":{"line":90,"column":76}},"type":"if","locations":[{"start":{"line":89,"column":8},"end":{"line":90,"column":76}},{"start":{"line":89,"column":8},"end":{"line":90,"column":76}}],"line":89},"6":{"loc":{"start":{"line":91,"column":8},"end":{"line":92,"column":55}},"type":"if","locations":[{"start":{"line":91,"column":8},"end":{"line":92,"column":55}},{"start":{"line":91,"column":8},"end":{"line":92,"column":55}}],"line":91},"7":{"loc":{"start":{"line":93,"column":8},"end":{"line":94,"column":56}},"type":"if","locations":[{"start":{"line":93,"column":8},"end":{"line":94,"column":56}},{"start":{"line":93,"column":8},"end":{"line":94,"column":56}}],"line":93},"8":{"loc":{"start":{"line":101,"column":33},"end":{"line":103,"column":89}},"type":"cond-expr","locations":[{"start":{"line":102,"column":18},"end":{"line":102,"column":89}},{"start":{"line":103,"column":18},"end":{"line":103,"column":89}}],"line":101},"9":{"loc":{"start":{"line":108,"column":12},"end":{"line":109,"column":64}},"type":"if","locations":[{"start":{"line":108,"column":12},"end":{"line":109,"column":64}},{"start":{"line":108,"column":12},"end":{"line":109,"column":64}}],"line":108},"10":{"loc":{"start":{"line":149,"column":8},"end":{"line":151,"column":9}},"type":"if","locations":[{"start":{"line":149,"column":8},"end":{"line":151,"column":9}},{"start":{"line":149,"column":8},"end":{"line":151,"column":9}}],"line":149},"11":{"loc":{"start":{"line":154,"column":8},"end":{"line":156,"column":9}},"type":"if","locations":[{"start":{"line":154,"column":8},"end":{"line":156,"column":9}},{"start":{"line":154,"column":8},"end":{"line":156,"column":9}}],"line":154},"12":{"loc":{"start":{"line":154,"column":12},"end":{"line":154,"column":75}},"type":"binary-expr","locations":[{"start":{"line":154,"column":12},"end":{"line":154,"column":41}},{"start":{"line":154,"column":45},"end":{"line":154,"column":75}}],"line":154},"13":{"loc":{"start":{"line":168,"column":8},"end":{"line":174,"column":9}},"type":"if","locations":[{"start":{"line":168,"column":8},"end":{"line":174,"column":9}},{"start":{"line":168,"column":8},"end":{"line":174,"column":9}}],"line":168},"14":{"loc":{"start":{"line":175,"column":8},"end":{"line":181,"column":9}},"type":"if","locations":[{"start":{"line":175,"column":8},"end":{"line":181,"column":9}},{"start":{"line":175,"column":8},"end":{"line":181,"column":9}}],"line":175},"15":{"loc":{"start":{"line":193,"column":12},"end":{"line":195,"column":13}},"type":"if","locations":[{"start":{"line":193,"column":12},"end":{"line":195,"column":13}},{"start":{"line":193,"column":12},"end":{"line":195,"column":13}}],"line":193},"16":{"loc":{"start":{"line":201,"column":12},"end":{"line":203,"column":13}},"type":"if","locations":[{"start":{"line":201,"column":12},"end":{"line":203,"column":13}},{"start":{"line":201,"column":12},"end":{"line":203,"column":13}}],"line":201},"17":{"loc":{"start":{"line":207,"column":8},"end":{"line":208,"column":25}},"type":"if","locations":[{"start":{"line":207,"column":8},"end":{"line":208,"column":25}},{"start":{"line":207,"column":8},"end":{"line":208,"column":25}}],"line":207},"18":{"loc":{"start":{"line":210,"column":12},"end":{"line":211,"column":29}},"type":"if","locations":[{"start":{"line":210,"column":12},"end":{"line":211,"column":29}},{"start":{"line":210,"column":12},"end":{"line":211,"column":29}}],"line":210}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":10,"15":10,"16":10,"17":11,"18":10,"19":10,"20":10,"21":10,"22":10,"23":10,"24":10,"25":10,"26":10,"27":10,"28":0,"29":10,"30":0,"31":10,"32":0,"33":10,"34":10,"35":10,"36":10,"37":11,"38":11,"39":11,"40":10,"41":11,"42":10,"43":10,"44":12,"45":0,"46":10,"47":12,"48":10,"49":12,"50":10,"51":7,"52":10,"53":10,"54":9,"55":10,"56":19,"57":10,"58":11,"59":10,"60":11,"61":10,"62":11,"63":11,"64":11,"65":10,"66":11,"67":11,"68":11,"69":10,"70":10,"71":10,"72":2,"73":8,"74":1,"75":7,"76":7,"77":8,"78":7,"79":4,"80":7,"81":3,"82":7,"83":8,"84":7,"85":15,"86":7,"87":10,"88":12,"89":10,"90":10,"91":1,"92":2,"93":1,"94":0,"95":10,"96":7,"97":10,"98":10,"99":1,"100":1,"101":1,"102":0,"103":2,"104":0,"105":2,"106":2,"107":3,"108":0,"109":2,"110":1},"f":{"0":1,"1":1,"2":1,"3":10,"4":10,"5":11,"6":10,"7":11,"8":12,"9":12,"10":12,"11":7,"12":9,"13":19,"14":11,"15":11,"16":11,"17":11,"18":8,"19":8,"20":15,"21":10,"22":12,"23":2,"24":7,"25":1,"26":2},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[0],"4":[8,2],"5":[0,10],"6":[0,10],"7":[0,10],"8":[11,0],"9":[0,12],"10":[2,8],"11":[1,7],"12":[8,1],"13":[4,3],"14":[3,4],"15":[0,1],"16":[0,1],"17":[0,2],"18":[0,3]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxBuilder.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/TxBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DLC Transaction Builder with support for \"exact amount\" DLC scenarios.\n *\n * Key improvements:\n * - Dust filtering: Only creates change outputs above DUST_LIMIT (1000 sats)\n * - No-change support: Enables splicing with exact UTXO amounts\n * - Max collateral calculation: Helper for determining exact amounts\n *\n * This matches the C++ layer behavior and fixes issues with DLC splicing\n * where users want to use exact UTXO amounts without change outputs.\n */\n\nimport {\n LockTime,\n OutPoint,\n Script,\n Tx,\n TxBuilder,\n Value,\n} from '@node-dlc/bitcoin';\nimport {\n DlcAcceptWithoutSigs,\n DlcOffer,\n FundingInput,\n MessageType,\n} from '@node-dlc/messaging';\nimport Decimal from 'decimal.js';\n\nimport { DualFundingTxFinalizer } from './TxFinalizer';\n\n// Dust limit matching C++ implementation (1000 satoshis)\nexport const DUST_LIMIT = BigInt(1000);\n\nexport class DlcTxBuilder {\n constructor(\n readonly dlcOffer: DlcOffer,\n readonly dlcAccept: DlcAcceptWithoutSigs,\n ) {}\n\n public buildFundingTransaction(): Tx {\n const txBuilder = new BatchDlcTxBuilder([this.dlcOffer], [this.dlcAccept]);\n return txBuilder.buildFundingTransaction();\n }\n}\n\nexport class BatchDlcTxBuilder {\n constructor(\n readonly dlcOffers: DlcOffer[],\n readonly dlcAccepts: DlcAcceptWithoutSigs[],\n ) {}\n\n /**\n * Calculates the maximum collateral that can be used given a set of funding inputs\n * for exact-amount DLC scenarios (no change outputs).\n *\n * @param fundingInputs The inputs to be used for funding\n * @param feeRatePerVb Fee rate in satoshis per virtual byte\n * @param numContracts Number of DLC contracts being created (default: 1)\n * @returns Maximum collateral amount in satoshis\n *\n * @example\n * ```typescript\n * // Calculate max collateral for DLC splicing scenario\n * const dlcFundingInput = getDlcFundingInput(); // 970,332 sats\n * const additionalInput = getAdditionalInput(); // 100,000 sats\n * const inputs = [dlcFundingInput, additionalInput];\n *\n * const maxCollateral = BatchDlcTxBuilder.calculateMaxCollateral(\n * inputs,\n * BigInt(1), // 1 sat/vB fee rate\n * 1 // Single DLC contract\n * );\n *\n * // Use maxCollateral in DLC offer to ensure exact amount with no change\n * const dlcOffer = createDlcOffer(contractInfo, maxCollateral, ...);\n * ```\n */\n public static calculateMaxCollateral(\n fundingInputs: FundingInput[],\n feeRatePerVb: bigint,\n numContracts = 1,\n ): bigint {\n // Calculate total input value\n const totalInputValue = fundingInputs.reduce((total, input) => {\n return total + input.prevTx.outputs[input.prevTxVout].value.sats;\n }, BigInt(0));\n\n // Create a temporary finalizer to calculate fees\n const fakeSPK = Buffer.from(\n '0014663117d27e78eb432505180654e603acb30e8a4a',\n 'hex',\n );\n const finalizer = new DualFundingTxFinalizer(\n fundingInputs,\n fakeSPK,\n fakeSPK,\n [], // No accepter inputs for single-funded scenario\n fakeSPK,\n fakeSPK,\n feeRatePerVb,\n numContracts,\n );\n\n // For exact-amount scenarios, we need to account for:\n // 1. Future fees (for CET/refund transactions)\n // 2. Funding transaction fees\n const futureFee = finalizer.offerFutureFee;\n const fundingFee = finalizer.offerFundingFee;\n\n // Maximum collateral is input value minus all fees\n const maxCollateral = totalInputValue - futureFee - fundingFee;\n\n // Ensure we don't return negative values\n return maxCollateral > BigInt(0) ? maxCollateral : BigInt(0);\n }\n\n public buildFundingTransaction(): Tx {\n const tx = new TxBuilder();\n tx.version = 2;\n tx.locktime = LockTime.zero();\n\n if (this.dlcOffers.length !== this.dlcAccepts.length)\n throw Error('DlcOffers and DlcAccepts must be the same length');\n if (this.dlcOffers.length === 0) throw Error('DlcOffers must not be empty');\n if (this.dlcAccepts.length === 0)\n throw Error('DlcAccepts must not be empty');\n\n // Ensure all DLC offers and accepts have the same funding inputs\n this.ensureSameFundingInputs();\n\n const multisigScripts: Script[] = [];\n for (let i = 0; i < this.dlcOffers.length; i++) {\n const offer = this.dlcOffers[i];\n const accept = this.dlcAccepts[i];\n\n multisigScripts.push(\n Buffer.compare(offer.fundingPubkey, accept.fundingPubkey) === -1\n ? Script.p2msLock(2, offer.fundingPubkey, accept.fundingPubkey)\n : Script.p2msLock(2, accept.fundingPubkey, offer.fundingPubkey),\n );\n }\n\n const witScripts = multisigScripts.map((multisigScript) =>\n Script.p2wshLock(multisigScript),\n );\n\n const finalizer = new DualFundingTxFinalizer(\n this.dlcOffers[0].fundingInputs,\n this.dlcOffers[0].payoutSpk,\n this.dlcOffers[0].changeSpk,\n this.dlcAccepts[0].fundingInputs,\n this.dlcAccepts[0].payoutSpk,\n this.dlcAccepts[0].changeSpk,\n this.dlcOffers[0].feeRatePerVb,\n this.dlcOffers.length,\n );\n\n this.dlcOffers[0].fundingInputs.forEach((input) => {\n if (input.type !== MessageType.FundingInput)\n throw new Error('Input is not a funding input');\n });\n const offerFundingInputs: FundingInput[] = this.dlcOffers[0].fundingInputs.map(\n (input) => input as FundingInput,\n );\n\n const offerTotalFunding = offerFundingInputs.reduce((total, input) => {\n return total + input.prevTx.outputs[input.prevTxVout].value.sats;\n }, BigInt(0));\n\n const acceptTotalFunding = this.dlcAccepts[0].fundingInputs.reduce(\n (total, input) => {\n return total + input.prevTx.outputs[input.prevTxVout].value.sats;\n },\n BigInt(0),\n );\n\n const fundingInputs: FundingInput[] = [\n ...offerFundingInputs,\n ...this.dlcAccepts[0].fundingInputs,\n ];\n\n fundingInputs.sort(\n (a, b) => Number(a.inputSerialId) - Number(b.inputSerialId),\n );\n\n fundingInputs.forEach((input) => {\n tx.addInput(\n OutPoint.fromString(\n `${input.prevTx.txId.toString()}:${input.prevTxVout}`,\n ),\n );\n });\n\n const offerInput = this.dlcOffers.reduce(\n (total, offer) => total + offer.offerCollateral,\n BigInt(0),\n );\n const acceptInput = this.dlcAccepts.reduce(\n (total, accept) => total + accept.acceptCollateral,\n BigInt(0),\n );\n\n const totalInputs = this.dlcOffers.map((offer, i) => {\n const offerInput = offer.offerCollateral;\n const acceptInput = this.dlcAccepts[i].acceptCollateral;\n return offerInput + acceptInput;\n });\n\n const fundingValues = totalInputs.map((totalInput) => {\n const offerFutureFeePerOffer = new Decimal(\n finalizer.offerFutureFee.toString(),\n )\n .div(this.dlcOffers.length)\n .ceil()\n .toNumber();\n const acceptFutureFeePerAccept = new Decimal(\n finalizer.acceptFutureFee.toString(),\n )\n .div(this.dlcAccepts.length)\n .ceil()\n .toNumber();\n\n return (\n totalInput +\n Value.fromSats(offerFutureFeePerOffer).sats +\n Value.fromSats(acceptFutureFeePerAccept).sats\n );\n });\n\n const offerChangeValue =\n offerTotalFunding - offerInput - finalizer.offerFees;\n const acceptChangeValue =\n acceptTotalFunding - acceptInput - finalizer.acceptFees;\n\n // Validate that we have sufficient funds\n if (offerChangeValue < BigInt(0)) {\n throw new Error(\n `Insufficient funds for offerer: need ${\n offerInput + finalizer.offerFees\n } sats, have ${offerTotalFunding} sats`,\n );\n }\n\n // In single-funded DLCs, if accepter has no inputs, they don't pay fees\n // This matches the C++ layer behavior where parties with no inputs have zero fees\n if (acceptChangeValue < BigInt(0) && acceptTotalFunding > BigInt(0)) {\n throw new Error(\n `Insufficient funds for accepter: need ${\n acceptInput + finalizer.acceptFees\n } sats, have ${acceptTotalFunding} sats`,\n );\n }\n\n const outputs: Output[] = [];\n witScripts.forEach((witScript, i) => {\n outputs.push({\n value: Value.fromSats(Number(fundingValues[i])),\n script: witScript,\n serialId: this.dlcOffers[i].fundOutputSerialId,\n });\n });\n\n // Dust filtering: Only create change outputs if they're above dust threshold\n // This matches the C++ implementation and enables \"exact amount\" DLC scenarios\n // where all input value goes into the DLC funding output with no change\n if (offerChangeValue >= DUST_LIMIT) {\n outputs.push({\n value: Value.fromSats(Number(offerChangeValue)),\n script: Script.p2wpkhLock(this.dlcOffers[0].changeSpk.slice(2)),\n serialId: this.dlcOffers[0].changeSerialId,\n });\n }\n\n if (acceptChangeValue >= DUST_LIMIT) {\n outputs.push({\n value: Value.fromSats(Number(acceptChangeValue)),\n script: Script.p2wpkhLock(this.dlcAccepts[0].changeSpk.slice(2)),\n serialId: this.dlcAccepts[0].changeSerialId,\n });\n }\n\n outputs.sort((a, b) => Number(a.serialId) - Number(b.serialId));\n\n outputs.forEach((output) => {\n tx.addOutput(output.value, output.script);\n });\n\n return tx.toTx();\n }\n\n private ensureSameFundingInputs(): void {\n // Check for offers\n const referenceOfferInputs = this.dlcOffers[0].fundingInputs.map((input) =>\n input.serialize().toString('hex'),\n );\n for (let i = 1; i < this.dlcOffers.length; i++) {\n const currentInputs = this.dlcOffers[i].fundingInputs.map((input) =>\n input.serialize().toString('hex'),\n );\n if (!this.arraysEqual(referenceOfferInputs, currentInputs)) {\n throw new Error(\n `Funding inputs for offer ${i} do not match the first offer's funding inputs.`,\n );\n }\n }\n\n // Check for accepts\n const referenceAcceptInputs = this.dlcAccepts[0].fundingInputs.map(\n (input) => input.serialize().toString('hex'),\n );\n for (let i = 1; i < this.dlcAccepts.length; i++) {\n const currentInputs = this.dlcAccepts[i].fundingInputs.map((input) =>\n input.serialize().toString('hex'),\n );\n if (!this.arraysEqual(referenceAcceptInputs, currentInputs)) {\n throw new Error(\n `Funding inputs for accept ${i} do not match the first accept's funding inputs.`,\n );\n }\n }\n }\n\n private arraysEqual(arr1: string[], arr2: string[]): boolean {\n if (arr1.length !== arr2.length) return false;\n for (let i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) return false;\n }\n return true;\n }\n}\n\ninterface Output {\n value: Value;\n script: Script;\n serialId: bigint;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"96e2e1a7c625e2a90aeee23912fb5bfc9e726142","contentHash":"9fd217af71abf8611f9f994c7a9fba569cd4556a3499f9b4b706c3d691ea2e21"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/Builder.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/Builder.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":538}},"4":{"start":{"line":7,"column":18},"end":{"line":7,"column":46}},"5":{"start":{"line":8,"column":20},"end":{"line":8,"column":50}},"6":{"start":{"line":9,"column":27},"end":{"line":9,"column":54}},"7":{"start":{"line":10,"column":21},"end":{"line":10,"column":59}},"8":{"start":{"line":11,"column":21},"end":{"line":11,"column":45}},"9":{"start":{"line":12,"column":22},"end":{"line":12,"column":47}},"10":{"start":{"line":13,"column":22},"end":{"line":13,"column":46}},"11":{"start":{"line":14,"column":23},"end":{"line":14,"column":48}},"12":{"start":{"line":15,"column":19},"end":{"line":15,"column":40}},"13":{"start":{"line":16,"column":18},"end":{"line":16,"column":38}},"14":{"start":{"line":17,"column":19},"end":{"line":17,"column":40}},"15":{"start":{"line":18,"column":0},"end":{"line":21,"column":2}},"16":{"start":{"line":38,"column":33},"end":{"line":38,"column":85}},"17":{"start":{"line":38,"column":54},"end":{"line":38,"column":85}},"18":{"start":{"line":39,"column":0},"end":{"line":39,"column":60}},"19":{"start":{"line":56,"column":35},"end":{"line":56,"column":114}},"20":{"start":{"line":56,"column":56},"end":{"line":56,"column":114}},"21":{"start":{"line":57,"column":0},"end":{"line":57,"column":64}},"22":{"start":{"line":58,"column":37},"end":{"line":58,"column":82}},"23":{"start":{"line":58,"column":58},"end":{"line":58,"column":82}},"24":{"start":{"line":59,"column":0},"end":{"line":59,"column":68}},"25":{"start":{"line":67,"column":31},"end":{"line":79,"column":1}},"26":{"start":{"line":68,"column":27},"end":{"line":72,"column":22}},"27":{"start":{"line":73,"column":31},"end":{"line":77,"column":26}},"28":{"start":{"line":78,"column":4},"end":{"line":78,"column":63}},"29":{"start":{"line":80,"column":0},"end":{"line":80,"column":56}},"30":{"start":{"line":87,"column":45},"end":{"line":94,"column":1}},"31":{"start":{"line":88,"column":4},"end":{"line":90,"column":84}},"32":{"start":{"line":90,"column":8},"end":{"line":90,"column":84}},"33":{"start":{"line":91,"column":28},"end":{"line":92,"column":24}},"34":{"start":{"line":93,"column":4},"end":{"line":93,"column":27}},"35":{"start":{"line":95,"column":0},"end":{"line":95,"column":84}},"36":{"start":{"line":108,"column":24},"end":{"line":133,"column":1}},"37":{"start":{"line":109,"column":28},"end":{"line":109,"column":91}},"38":{"start":{"line":110,"column":31},"end":{"line":110,"column":68}},"39":{"start":{"line":111,"column":4},"end":{"line":111,"column":60}},"40":{"start":{"line":112,"column":4},"end":{"line":112,"column":55}},"41":{"start":{"line":113,"column":4},"end":{"line":113,"column":61}},"42":{"start":{"line":114,"column":23},"end":{"line":114,"column":57}},"43":{"start":{"line":115,"column":4},"end":{"line":115,"column":43}},"44":{"start":{"line":116,"column":25},"end":{"line":116,"column":61}},"45":{"start":{"line":117,"column":4},"end":{"line":117,"column":51}},"46":{"start":{"line":118,"column":4},"end":{"line":118,"column":57}},"47":{"start":{"line":119,"column":4},"end":{"line":119,"column":41}},"48":{"start":{"line":120,"column":23},"end":{"line":120,"column":51}},"49":{"start":{"line":122,"column":4},"end":{"line":122,"column":56}},"50":{"start":{"line":124,"column":4},"end":{"line":124,"column":116}},"51":{"start":{"line":124,"column":82},"end":{"line":124,"column":113}},"52":{"start":{"line":125,"column":4},"end":{"line":125,"column":117}},"53":{"start":{"line":126,"column":4},"end":{"line":126,"column":43}},"54":{"start":{"line":127,"column":4},"end":{"line":127,"column":49}},"55":{"start":{"line":128,"column":4},"end":{"line":128,"column":41}},"56":{"start":{"line":129,"column":4},"end":{"line":129,"column":69}},"57":{"start":{"line":130,"column":4},"end":{"line":131,"column":62}},"58":{"start":{"line":132,"column":4},"end":{"line":132,"column":22}},"59":{"start":{"line":134,"column":0},"end":{"line":134,"column":42}},"60":{"start":{"line":149,"column":30},"end":{"line":217,"column":1}},"61":{"start":{"line":150,"column":28},"end":{"line":150,"column":91}},"62":{"start":{"line":153,"column":30},"end":{"line":153,"column":65}},"63":{"start":{"line":154,"column":24},"end":{"line":154,"column":83}},"64":{"start":{"line":155,"column":4},"end":{"line":213,"column":5}},"65":{"start":{"line":156,"column":8},"end":{"line":183,"column":9}},"66":{"start":{"line":157,"column":12},"end":{"line":157,"column":167}},"67":{"start":{"line":158,"column":12},"end":{"line":158,"column":65}},"68":{"start":{"line":159,"column":12},"end":{"line":168,"column":14}},"69":{"start":{"line":171,"column":12},"end":{"line":171,"column":184}},"70":{"start":{"line":172,"column":12},"end":{"line":172,"column":52}},"71":{"start":{"line":173,"column":12},"end":{"line":182,"column":14}},"72":{"start":{"line":186,"column":8},"end":{"line":186,"column":48}},"73":{"start":{"line":187,"column":8},"end":{"line":212,"column":9}},"74":{"start":{"line":188,"column":12},"end":{"line":188,"column":178}},"75":{"start":{"line":189,"column":12},"end":{"line":198,"column":14}},"76":{"start":{"line":201,"column":12},"end":{"line":201,"column":176}},"77":{"start":{"line":202,"column":12},"end":{"line":211,"column":14}},"78":{"start":{"line":214,"column":27},"end":{"line":214,"column":60}},"79":{"start":{"line":215,"column":28},"end":{"line":215,"column":97}},"80":{"start":{"line":216,"column":4},"end":{"line":216,"column":152}},"81":{"start":{"line":218,"column":0},"end":{"line":218,"column":54}},"82":{"start":{"line":231,"column":35},"end":{"line":233,"column":1}},"83":{"start":{"line":232,"column":4},"end":{"line":232,"column":144}},"84":{"start":{"line":234,"column":0},"end":{"line":234,"column":64}},"85":{"start":{"line":248,"column":32},"end":{"line":250,"column":1}},"86":{"start":{"line":249,"column":4},"end":{"line":249,"column":160}},"87":{"start":{"line":251,"column":0},"end":{"line":251,"column":58}},"88":{"start":{"line":265,"column":32},"end":{"line":267,"column":1}},"89":{"start":{"line":266,"column":4},"end":{"line":266,"column":152}},"90":{"start":{"line":268,"column":0},"end":{"line":268,"column":58}},"91":{"start":{"line":282,"column":31},"end":{"line":284,"column":1}},"92":{"start":{"line":283,"column":4},"end":{"line":283,"column":151}},"93":{"start":{"line":285,"column":0},"end":{"line":285,"column":56}},"94":{"start":{"line":302,"column":30},"end":{"line":316,"column":1}},"95":{"start":{"line":303,"column":4},"end":{"line":304,"column":64}},"96":{"start":{"line":304,"column":8},"end":{"line":304,"column":64}},"97":{"start":{"line":305,"column":4},"end":{"line":306,"column":68}},"98":{"start":{"line":306,"column":8},"end":{"line":306,"column":68}},"99":{"start":{"line":307,"column":28},"end":{"line":307,"column":91}},"100":{"start":{"line":308,"column":28},"end":{"line":308,"column":42}},"101":{"start":{"line":309,"column":31},"end":{"line":309,"column":184}},"102":{"start":{"line":310,"column":23},"end":{"line":310,"column":165}},"103":{"start":{"line":311,"column":25},"end":{"line":311,"column":60}},"104":{"start":{"line":312,"column":4},"end":{"line":312,"column":45}},"105":{"start":{"line":313,"column":4},"end":{"line":313,"column":75}},"106":{"start":{"line":314,"column":4},"end":{"line":314,"column":43}},"107":{"start":{"line":315,"column":4},"end":{"line":315,"column":22}},"108":{"start":{"line":317,"column":0},"end":{"line":317,"column":54}},"109":{"start":{"line":346,"column":38},"end":{"line":408,"column":1}},"110":{"start":{"line":348,"column":4},"end":{"line":350,"column":5}},"111":{"start":{"line":349,"column":8},"end":{"line":349,"column":59}},"112":{"start":{"line":351,"column":4},"end":{"line":353,"column":5}},"113":{"start":{"line":352,"column":8},"end":{"line":352,"column":42}},"114":{"start":{"line":354,"column":28},"end":{"line":354,"column":91}},"115":{"start":{"line":355,"column":17},"end":{"line":355,"column":37}},"116":{"start":{"line":356,"column":17},"end":{"line":356,"column":130}},"117":{"start":{"line":357,"column":22},"end":{"line":357,"column":105}},"118":{"start":{"line":358,"column":22},"end":{"line":358,"column":67}},"119":{"start":{"line":361,"column":39},"end":{"line":361,"column":132}},"120":{"start":{"line":362,"column":38},"end":{"line":362,"column":189}},"121":{"start":{"line":363,"column":35},"end":{"line":363,"column":213}},"122":{"start":{"line":364,"column":39},"end":{"line":364,"column":217}},"123":{"start":{"line":365,"column":35},"end":{"line":365,"column":57}},"124":{"start":{"line":366,"column":4},"end":{"line":371,"column":5}},"125":{"start":{"line":367,"column":8},"end":{"line":367,"column":62}},"126":{"start":{"line":370,"column":8},"end":{"line":370,"column":63}},"127":{"start":{"line":372,"column":28},"end":{"line":372,"column":209}},"128":{"start":{"line":373,"column":25},"end":{"line":373,"column":188}},"129":{"start":{"line":374,"column":22},"end":{"line":374,"column":40}},"130":{"start":{"line":375,"column":4},"end":{"line":377,"column":5}},"131":{"start":{"line":376,"column":8},"end":{"line":376,"column":87}},"132":{"start":{"line":378,"column":4},"end":{"line":378,"column":42}},"133":{"start":{"line":379,"column":4},"end":{"line":379,"column":42}},"134":{"start":{"line":380,"column":22},"end":{"line":380,"column":40}},"135":{"start":{"line":381,"column":30},"end":{"line":381,"column":60}},"136":{"start":{"line":382,"column":4},"end":{"line":382,"column":45}},"137":{"start":{"line":383,"column":28},"end":{"line":383,"column":58}},"138":{"start":{"line":384,"column":4},"end":{"line":384,"column":41}},"139":{"start":{"line":385,"column":4},"end":{"line":392,"column":5}},"140":{"start":{"line":386,"column":8},"end":{"line":386,"column":44}},"141":{"start":{"line":387,"column":8},"end":{"line":387,"column":42}},"142":{"start":{"line":389,"column":9},"end":{"line":392,"column":5}},"143":{"start":{"line":390,"column":8},"end":{"line":390,"column":44}},"144":{"start":{"line":391,"column":8},"end":{"line":391,"column":42}},"145":{"start":{"line":393,"column":25},"end":{"line":393,"column":101}},"146":{"start":{"line":394,"column":23},"end":{"line":394,"column":97}},"147":{"start":{"line":395,"column":28},"end":{"line":395,"column":46}},"148":{"start":{"line":396,"column":4},"end":{"line":398,"column":5}},"149":{"start":{"line":397,"column":8},"end":{"line":397,"column":93}},"150":{"start":{"line":399,"column":4},"end":{"line":399,"column":48}},"151":{"start":{"line":400,"column":23},"end":{"line":400,"column":196}},"152":{"start":{"line":401,"column":4},"end":{"line":402,"column":26}},"153":{"start":{"line":403,"column":4},"end":{"line":404,"column":53}},"154":{"start":{"line":405,"column":4},"end":{"line":406,"column":30}},"155":{"start":{"line":406,"column":8},"end":{"line":406,"column":30}},"156":{"start":{"line":407,"column":4},"end":{"line":407,"column":22}},"157":{"start":{"line":409,"column":0},"end":{"line":409,"column":70}},"158":{"start":{"line":410,"column":44},"end":{"line":420,"column":1}},"159":{"start":{"line":411,"column":30},"end":{"line":411,"column":65}},"160":{"start":{"line":412,"column":4},"end":{"line":418,"column":7}},"161":{"start":{"line":413,"column":28},"end":{"line":413,"column":96}},"162":{"start":{"line":414,"column":8},"end":{"line":417,"column":10}},"163":{"start":{"line":419,"column":4},"end":{"line":419,"column":29}},"164":{"start":{"line":421,"column":0},"end":{"line":421,"column":82}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":38,"column":33},"end":{"line":38,"column":34}},"loc":{"start":{"line":38,"column":54},"end":{"line":38,"column":85}},"line":38},"2":{"name":"(anonymous_2)","decl":{"start":{"line":56,"column":35},"end":{"line":56,"column":36}},"loc":{"start":{"line":56,"column":56},"end":{"line":56,"column":114}},"line":56},"3":{"name":"(anonymous_3)","decl":{"start":{"line":58,"column":37},"end":{"line":58,"column":38}},"loc":{"start":{"line":58,"column":58},"end":{"line":58,"column":82}},"line":58},"4":{"name":"(anonymous_4)","decl":{"start":{"line":67,"column":31},"end":{"line":67,"column":32}},"loc":{"start":{"line":67,"column":59},"end":{"line":79,"column":1}},"line":67},"5":{"name":"(anonymous_5)","decl":{"start":{"line":87,"column":45},"end":{"line":87,"column":46}},"loc":{"start":{"line":87,"column":63},"end":{"line":94,"column":1}},"line":87},"6":{"name":"(anonymous_6)","decl":{"start":{"line":108,"column":24},"end":{"line":108,"column":25}},"loc":{"start":{"line":108,"column":132},"end":{"line":133,"column":1}},"line":108},"7":{"name":"(anonymous_7)","decl":{"start":{"line":124,"column":76},"end":{"line":124,"column":77}},"loc":{"start":{"line":124,"column":82},"end":{"line":124,"column":113}},"line":124},"8":{"name":"(anonymous_8)","decl":{"start":{"line":149,"column":30},"end":{"line":149,"column":31}},"loc":{"start":{"line":149,"column":150},"end":{"line":217,"column":1}},"line":149},"9":{"name":"(anonymous_9)","decl":{"start":{"line":231,"column":35},"end":{"line":231,"column":36}},"loc":{"start":{"line":231,"column":120},"end":{"line":233,"column":1}},"line":231},"10":{"name":"(anonymous_10)","decl":{"start":{"line":248,"column":32},"end":{"line":248,"column":33}},"loc":{"start":{"line":248,"column":134},"end":{"line":250,"column":1}},"line":248},"11":{"name":"(anonymous_11)","decl":{"start":{"line":265,"column":32},"end":{"line":265,"column":33}},"loc":{"start":{"line":265,"column":126},"end":{"line":267,"column":1}},"line":265},"12":{"name":"(anonymous_12)","decl":{"start":{"line":282,"column":31},"end":{"line":282,"column":32}},"loc":{"start":{"line":282,"column":125},"end":{"line":284,"column":1}},"line":282},"13":{"name":"(anonymous_13)","decl":{"start":{"line":302,"column":30},"end":{"line":302,"column":31}},"loc":{"start":{"line":302,"column":215},"end":{"line":316,"column":1}},"line":302},"14":{"name":"(anonymous_14)","decl":{"start":{"line":346,"column":38},"end":{"line":346,"column":39}},"loc":{"start":{"line":347,"column":107},"end":{"line":408,"column":1}},"line":347},"15":{"name":"(anonymous_15)","decl":{"start":{"line":410,"column":44},"end":{"line":410,"column":45}},"loc":{"start":{"line":410,"column":73},"end":{"line":420,"column":1}},"line":410},"16":{"name":"(anonymous_16)","decl":{"start":{"line":412,"column":48},"end":{"line":412,"column":49}},"loc":{"start":{"line":412,"column":62},"end":{"line":418,"column":5}},"line":412}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":68,"column":27},"end":{"line":72,"column":22}},"type":"cond-expr","locations":[{"start":{"line":69,"column":10},"end":{"line":69,"column":23}},{"start":{"line":70,"column":10},"end":{"line":72,"column":22}}],"line":68},"4":{"loc":{"start":{"line":70,"column":10},"end":{"line":72,"column":22}},"type":"cond-expr","locations":[{"start":{"line":71,"column":14},"end":{"line":71,"column":48}},{"start":{"line":72,"column":14},"end":{"line":72,"column":22}}],"line":70},"5":{"loc":{"start":{"line":73,"column":31},"end":{"line":77,"column":26}},"type":"cond-expr","locations":[{"start":{"line":74,"column":10},"end":{"line":74,"column":27}},{"start":{"line":75,"column":10},"end":{"line":77,"column":26}}],"line":73},"6":{"loc":{"start":{"line":75,"column":10},"end":{"line":77,"column":26}},"type":"cond-expr","locations":[{"start":{"line":76,"column":14},"end":{"line":76,"column":52}},{"start":{"line":77,"column":14},"end":{"line":77,"column":26}}],"line":75},"7":{"loc":{"start":{"line":88,"column":4},"end":{"line":90,"column":84}},"type":"if","locations":[{"start":{"line":88,"column":4},"end":{"line":90,"column":84}},{"start":{"line":88,"column":4},"end":{"line":90,"column":84}}],"line":88},"8":{"loc":{"start":{"line":155,"column":4},"end":{"line":213,"column":5}},"type":"if","locations":[{"start":{"line":155,"column":4},"end":{"line":213,"column":5}},{"start":{"line":155,"column":4},"end":{"line":213,"column":5}}],"line":155},"9":{"loc":{"start":{"line":156,"column":8},"end":{"line":183,"column":9}},"type":"if","locations":[{"start":{"line":156,"column":8},"end":{"line":183,"column":9}},{"start":{"line":156,"column":8},"end":{"line":183,"column":9}}],"line":156},"10":{"loc":{"start":{"line":187,"column":8},"end":{"line":212,"column":9}},"type":"if","locations":[{"start":{"line":187,"column":8},"end":{"line":212,"column":9}},{"start":{"line":187,"column":8},"end":{"line":212,"column":9}}],"line":187},"11":{"loc":{"start":{"line":215,"column":28},"end":{"line":215,"column":97}},"type":"cond-expr","locations":[{"start":{"line":215,"column":52},"end":{"line":215,"column":82}},{"start":{"line":215,"column":85},"end":{"line":215,"column":97}}],"line":215},"12":{"loc":{"start":{"line":302,"column":150},"end":{"line":302,"column":174}},"type":"default-arg","locations":[{"start":{"line":302,"column":165},"end":{"line":302,"column":174}}],"line":302},"13":{"loc":{"start":{"line":302,"column":176},"end":{"line":302,"column":210}},"type":"default-arg","locations":[{"start":{"line":302,"column":183},"end":{"line":302,"column":210}}],"line":302},"14":{"loc":{"start":{"line":303,"column":4},"end":{"line":304,"column":64}},"type":"if","locations":[{"start":{"line":303,"column":4},"end":{"line":304,"column":64}},{"start":{"line":303,"column":4},"end":{"line":304,"column":64}}],"line":303},"15":{"loc":{"start":{"line":305,"column":4},"end":{"line":306,"column":68}},"type":"if","locations":[{"start":{"line":305,"column":4},"end":{"line":306,"column":68}},{"start":{"line":305,"column":4},"end":{"line":306,"column":68}}],"line":305},"16":{"loc":{"start":{"line":313,"column":24},"end":{"line":313,"column":74}},"type":"cond-expr","locations":[{"start":{"line":313,"column":53},"end":{"line":313,"column":62}},{"start":{"line":313,"column":65},"end":{"line":313,"column":74}}],"line":313},"17":{"loc":{"start":{"line":346,"column":145},"end":{"line":346,"column":169}},"type":"default-arg","locations":[{"start":{"line":346,"column":160},"end":{"line":346,"column":169}}],"line":346},"18":{"loc":{"start":{"line":346,"column":171},"end":{"line":346,"column":206}},"type":"default-arg","locations":[{"start":{"line":346,"column":179},"end":{"line":346,"column":206}}],"line":346},"19":{"loc":{"start":{"line":347,"column":0},"end":{"line":347,"column":40}},"type":"default-arg","locations":[{"start":{"line":347,"column":13},"end":{"line":347,"column":40}}],"line":347},"20":{"loc":{"start":{"line":347,"column":42},"end":{"line":347,"column":60}},"type":"default-arg","locations":[{"start":{"line":347,"column":59},"end":{"line":347,"column":60}}],"line":347},"21":{"loc":{"start":{"line":347,"column":62},"end":{"line":347,"column":78}},"type":"default-arg","locations":[{"start":{"line":347,"column":77},"end":{"line":347,"column":78}}],"line":347},"22":{"loc":{"start":{"line":347,"column":80},"end":{"line":347,"column":102}},"type":"default-arg","locations":[{"start":{"line":347,"column":97},"end":{"line":347,"column":102}}],"line":347},"23":{"loc":{"start":{"line":348,"column":4},"end":{"line":350,"column":5}},"type":"if","locations":[{"start":{"line":348,"column":4},"end":{"line":350,"column":5}},{"start":{"line":348,"column":4},"end":{"line":350,"column":5}}],"line":348},"24":{"loc":{"start":{"line":351,"column":4},"end":{"line":353,"column":5}},"type":"if","locations":[{"start":{"line":351,"column":4},"end":{"line":353,"column":5}},{"start":{"line":351,"column":4},"end":{"line":353,"column":5}}],"line":351},"25":{"loc":{"start":{"line":366,"column":4},"end":{"line":371,"column":5}},"type":"if","locations":[{"start":{"line":366,"column":4},"end":{"line":371,"column":5}},{"start":{"line":366,"column":4},"end":{"line":371,"column":5}}],"line":366},"26":{"loc":{"start":{"line":375,"column":4},"end":{"line":377,"column":5}},"type":"if","locations":[{"start":{"line":375,"column":4},"end":{"line":377,"column":5}},{"start":{"line":375,"column":4},"end":{"line":377,"column":5}}],"line":375},"27":{"loc":{"start":{"line":385,"column":4},"end":{"line":392,"column":5}},"type":"if","locations":[{"start":{"line":385,"column":4},"end":{"line":392,"column":5}},{"start":{"line":385,"column":4},"end":{"line":392,"column":5}}],"line":385},"28":{"loc":{"start":{"line":389,"column":9},"end":{"line":392,"column":5}},"type":"if","locations":[{"start":{"line":389,"column":9},"end":{"line":392,"column":5}},{"start":{"line":389,"column":9},"end":{"line":392,"column":5}}],"line":389},"29":{"loc":{"start":{"line":396,"column":4},"end":{"line":398,"column":5}},"type":"if","locations":[{"start":{"line":396,"column":4},"end":{"line":398,"column":5}},{"start":{"line":396,"column":4},"end":{"line":398,"column":5}}],"line":396},"30":{"loc":{"start":{"line":405,"column":4},"end":{"line":406,"column":30}},"type":"if","locations":[{"start":{"line":405,"column":4},"end":{"line":406,"column":30}},{"start":{"line":405,"column":4},"end":{"line":406,"column":30}}],"line":405}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":248,"18":1,"19":1,"20":422,"21":1,"22":1,"23":3,"24":1,"25":1,"26":329,"27":329,"28":329,"29":1,"30":1,"31":259,"32":0,"33":259,"34":259,"35":1,"36":1,"37":88,"38":88,"39":88,"40":88,"41":88,"42":88,"43":88,"44":88,"45":88,"46":88,"47":88,"48":88,"49":88,"50":88,"51":2816,"52":88,"53":88,"54":88,"55":88,"56":88,"57":88,"58":88,"59":1,"60":1,"61":5,"62":5,"63":5,"64":5,"65":3,"66":1,"67":1,"68":1,"69":2,"70":2,"71":2,"72":2,"73":2,"74":1,"75":1,"76":1,"77":1,"78":5,"79":5,"80":5,"81":1,"82":1,"83":1,"84":1,"85":1,"86":2,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":83,"96":0,"97":83,"98":0,"99":83,"100":83,"101":83,"102":83,"103":83,"104":83,"105":83,"106":83,"107":83,"108":1,"109":1,"110":84,"111":1,"112":83,"113":75,"114":83,"115":83,"116":83,"117":83,"118":83,"119":83,"120":83,"121":83,"122":83,"123":83,"124":83,"125":5,"126":78,"127":83,"128":83,"129":83,"130":83,"131":0,"132":83,"133":83,"134":83,"135":83,"136":83,"137":83,"138":83,"139":83,"140":7,"141":7,"142":76,"143":67,"144":67,"145":83,"146":83,"147":83,"148":83,"149":0,"150":83,"151":83,"152":83,"153":83,"154":83,"155":82,"156":83,"157":1,"158":1,"159":77,"160":77,"161":308,"162":308,"163":77,"164":1},"f":{"0":1,"1":248,"2":422,"3":3,"4":329,"5":259,"6":88,"7":2816,"8":5,"9":1,"10":2,"11":1,"12":1,"13":83,"14":84,"15":77,"16":308},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[310,19],"4":[13,6],"5":[314,15],"6":[10,5],"7":[0,259],"8":[3,2],"9":[1,2],"10":[1,1],"11":[3,2],"12":[0],"13":[0],"14":[0,83],"15":[0,83],"16":[9,74],"17":[7],"18":[7],"19":[76],"20":[76],"21":[76],"22":[75],"23":[1,83],"24":[75,8],"25":[5,78],"26":[0,83],"27":[7,76],"28":[67,9],"29":[0,83],"30":[82,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/Builder.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/Builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Value } from '@node-dlc/bitcoin';\nimport {\n DigitDecompositionEventDescriptorV0,\n MessageType,\n NumericalDescriptor,\n OracleAnnouncement,\n OrderOffer,\n OrderPositionInfo,\n PayoutFunction,\n RoundingIntervals,\n SingleContractInfo,\n SingleOracleInfo,\n} from '@node-dlc/messaging';\nimport {\n BitcoinNetwork,\n BitcoinNetworks,\n chainHashFromNetwork,\n} from 'bitcoin-networks';\nimport Decimal from 'decimal.js';\n\nimport { dustThreshold } from '../CoinSelect';\nimport { getFinalizerByCount } from '../TxFinalizer';\nimport { CoveredCall } from './CoveredCall';\nimport { LinearPayout } from './LinearPayout';\nimport { LongCall } from './LongCall';\nimport { LongPut } from './LongPut';\nimport { ShortPut } from './ShortPut';\n\nexport const UNIT_MULTIPLIER = {\n bits: BigInt(1e2),\n sats: BigInt(1),\n};\n\n/**\n * Round a number to the nearest multiple of a given multiplier.\n *\n * @param num - The number to be rounded.\n * @param multiplier - The multiplier to round to.\n * @returns The number rounded to the nearest multiple of the multiplier.\n *\n * @example\n * ```typescript\n * // Example: rounding to nearest 100\n * const number = BigInt(354);\n * const multiplier = BigInt(100);\n * const roundedNumber = roundToNearestMultiplier(number, multiplier);\n * console.log(roundedNumber); // Output: 300\n * ```\n */\nexport const roundToNearestMultiplier = (\n num: bigint,\n multiplier: bigint,\n): bigint => (num / multiplier) * multiplier;\n\n/**\n * Round a number up to the nearest multiple of a given multiplier.\n *\n * @param num - The number to be rounded.\n * @param multiplier - The multiplier to round to.\n * @returns The number rounded up to the nearest multiple of the multiplier.\n *\n * @example\n * ```typescript\n * // Example: rounding up to nearest 100\n * const number = BigInt(354);\n * const multiplier = BigInt(100);\n * const roundedNumber = roundToNearestMultiplier(number, multiplier);\n * console.log(roundedNumber); // Output: 400\n * ```\n */\nexport const roundUpToNearestMultiplier = (\n num: bigint,\n multiplier: bigint,\n): bigint => ((num + multiplier - BigInt(1)) / multiplier) * multiplier;\n\nexport const roundDownToNearestMultiplier = (\n num: bigint,\n multiplier: bigint,\n): bigint => num - (num % multiplier);\n\nexport type DlcParty = 'offeror' | 'acceptor' | 'neither';\n\n/**\n * Compute rounding intervals for a linear or hyperbola payout curve\n *\n * @param {number | bigint | Value} rounding rounding interval in sats\n * @param {number | bigint | Value} contractSize contract size in sats\n * @returns rounding mod for contract size\n */\nexport const computeRoundingModulus = (\n rounding: number | bigint | Value,\n contractSize: number | bigint | Value,\n): bigint => {\n const roundingInSats =\n rounding instanceof Value\n ? rounding.sats\n : typeof rounding === 'number'\n ? BigInt(Math.round(rounding * 1e8)) // Convert bitcoin amount to satoshis\n : rounding;\n\n const contractSizeInSats =\n contractSize instanceof Value\n ? contractSize.sats\n : typeof contractSize === 'number'\n ? BigInt(Math.round(contractSize * 1e8)) // Convert bitcoin amount to satoshis\n : contractSize;\n\n return (roundingInSats * contractSizeInSats) / BigInt(1e8);\n};\n\n/**\n * Get digit decomposition event descriptor from oracle announcement\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @returns {DigitDecompositionEventDescriptorV0} event descriptor\n */\nexport const getDigitDecompositionEventDescriptor = (\n announcement: OracleAnnouncement,\n): DigitDecompositionEventDescriptorV0 => {\n if (\n announcement.oracleEvent.eventDescriptor.type !==\n MessageType.DigitDecompositionEventDescriptorV0\n )\n throw Error('Only DigitDecompositionEventDescriptorV0 currently supported');\n\n const eventDescriptor = announcement.oracleEvent\n .eventDescriptor as DigitDecompositionEventDescriptorV0;\n\n return eventDescriptor;\n};\n\n/**\n * Build an orderoffer for ContractDescriptorV1\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {bigint} totalCollateral total collateral in satoshis\n * @param {bigint} offerCollateral offer collateral in satoshis\n * @param {PayoutFunction} payoutFunction\n * @param {RoundingIntervals} roundingIntervals\n * @param {bigint} feePerByte sats/vbyte\n * @param {NetworkName} network\n * @returns {OrderOffer} Returns order offer\n */\nexport const buildOrderOffer = (\n announcement: OracleAnnouncement,\n totalCollateral: bigint,\n offerCollateral: bigint,\n payoutFunction: PayoutFunction,\n roundingIntervals: RoundingIntervals,\n feePerByte: bigint,\n network: string,\n): OrderOffer => {\n const eventDescriptor = getDigitDecompositionEventDescriptor(announcement);\n\n const contractDescriptor = new NumericalDescriptor();\n contractDescriptor.numDigits = eventDescriptor.nbDigits;\n contractDescriptor.payoutFunction = payoutFunction;\n contractDescriptor.roundingIntervals = roundingIntervals;\n\n const oracleInfo = new SingleOracleInfo();\n oracleInfo.announcement = announcement;\n\n const contractInfo = new SingleContractInfo();\n contractInfo.totalCollateral = totalCollateral;\n contractInfo.contractDescriptor = contractDescriptor;\n contractInfo.oracleInfo = oracleInfo;\n\n const orderOffer = new OrderOffer();\n\n // Set required fields for OrderOffer\n orderOffer.contractFlags = Buffer.from('00', 'hex'); // Default contract flags\n // Generate a random 32-byte temporary contract ID\n orderOffer.temporaryContractId = Buffer.from(\n Array.from({ length: 32 }, () => Math.floor(Math.random() * 256)),\n );\n orderOffer.chainHash = chainHashFromNetwork(BitcoinNetworks[network]);\n orderOffer.contractInfo = contractInfo;\n orderOffer.offerCollateral = offerCollateral; // Use correct property name\n orderOffer.feeRatePerVb = feePerByte;\n orderOffer.cetLocktime = Math.floor(new Date().getTime() / 1000); // set to current time\n orderOffer.refundLocktime =\n announcement.oracleEvent.eventMaturityEpoch + 2419200; // 4 weeks after maturity\n\n return orderOffer;\n};\n\n/**\n * Builds an order offer for a covered call or short put\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {number} contractSize contract size in satoshis\n * @param {number} strikePrice strike price of contract\n * @param {number} premium premium of contract in satoshis\n * @param {number | bigint} feePerByte sats/vbyte\n * @param {number} rounding rounding interval\n * @param {string} network bitcoin network type\n * @param {string} type call or put\n * @param {number} _totalCollateral total collateral in satoshis (applicable only for short put)\n * @returns {OrderOffer} Returns order offer\n */\nexport const buildOptionOrderOffer = (\n announcement: OracleAnnouncement,\n contractSize: Value,\n strikePrice: number,\n premium: Value,\n feePerByte: number | bigint,\n rounding: number,\n network: string,\n type: 'call' | 'put',\n direction: 'long' | 'short',\n _totalCollateral?: Value,\n): OrderOffer => {\n const eventDescriptor = getDigitDecompositionEventDescriptor(announcement);\n\n let totalCollateral: bigint;\n let payoutFunctionInfo: {\n payoutFunction: PayoutFunction;\n totalCollateral?: bigint;\n };\n\n const roundingIntervals = new RoundingIntervals();\n const roundingMod = computeRoundingModulus(rounding, contractSize);\n\n if (direction === 'short') {\n if (type === 'call') {\n payoutFunctionInfo = CoveredCall.buildPayoutFunction(\n BigInt(strikePrice),\n contractSize.sats,\n eventDescriptor.base,\n eventDescriptor.nbDigits,\n );\n\n totalCollateral = payoutFunctionInfo.totalCollateral;\n roundingIntervals.intervals = [\n {\n beginInterval: BigInt(0),\n roundingMod: BigInt(1),\n },\n {\n beginInterval: BigInt(strikePrice),\n roundingMod,\n },\n ];\n } else {\n payoutFunctionInfo = ShortPut.buildPayoutFunction(\n BigInt(strikePrice),\n contractSize.sats,\n _totalCollateral.sats,\n eventDescriptor.base,\n eventDescriptor.nbDigits,\n );\n totalCollateral = _totalCollateral.sats;\n roundingIntervals.intervals = [\n {\n beginInterval: BigInt(0),\n roundingMod,\n },\n {\n beginInterval: BigInt(strikePrice),\n roundingMod: BigInt(1),\n },\n ];\n }\n } else {\n totalCollateral = _totalCollateral.sats;\n\n if (type === 'call') {\n payoutFunctionInfo = LongCall.buildPayoutFunction(\n BigInt(strikePrice),\n contractSize.sats,\n totalCollateral,\n eventDescriptor.base,\n eventDescriptor.nbDigits,\n );\n\n roundingIntervals.intervals = [\n {\n beginInterval: BigInt(0),\n roundingMod: BigInt(1),\n },\n {\n beginInterval: BigInt(strikePrice),\n roundingMod,\n },\n ];\n } else {\n payoutFunctionInfo = LongPut.buildPayoutFunction(\n BigInt(strikePrice),\n contractSize.sats,\n totalCollateral,\n eventDescriptor.base,\n eventDescriptor.nbDigits,\n );\n\n roundingIntervals.intervals = [\n {\n beginInterval: BigInt(0),\n roundingMod,\n },\n {\n beginInterval: BigInt(strikePrice),\n roundingMod: BigInt(1),\n },\n ];\n }\n }\n\n const payoutFunction = payoutFunctionInfo.payoutFunction;\n\n const offerCollateral =\n direction === 'short' ? totalCollateral - premium.sats : premium.sats;\n\n return buildOrderOffer(\n announcement,\n totalCollateral,\n offerCollateral,\n payoutFunction,\n roundingIntervals,\n BigInt(feePerByte),\n network,\n );\n};\n\n/**\n * Builds an order offer for a covered call\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {number} contractSize contract size in satoshis\n * @param {number} strikePrice strike price of contract\n * @param {number} premium premium of contract in satoshis\n * @param {number} feePerByte sats/vbyte\n * @param {number} rounding rounding interval\n * @param {string} network bitcoin network type\n * @returns {OrderOffer} Returns order offer\n */\nexport const buildCoveredCallOrderOffer = (\n announcement: OracleAnnouncement,\n contractSize: Value,\n strikePrice: number,\n premium: Value,\n feePerByte: number,\n rounding: number,\n network: string,\n): OrderOffer => {\n return buildOptionOrderOffer(\n announcement,\n contractSize,\n strikePrice,\n premium,\n feePerByte,\n rounding,\n network,\n 'call',\n 'short',\n );\n};\n\n/**\n * Builds an order offer for a short put\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {number} contractSize contract size in satoshis\n * @param {number} strikePrice strike price of contract\n * @param {number} totalCollateral total collateral in satoshis\n * @param {number} premium premium of contract in satoshis\n * @param {number} feePerByte sats/vbyte\n * @param {number} rounding rounding interval\n * @param {string} network bitcoin network type\n * @returns {OrderOffer} Returns order offer\n */\nexport const buildShortPutOrderOffer = (\n announcement: OracleAnnouncement,\n contractSize: Value,\n strikePrice: number,\n totalCollateral: Value,\n premium: Value,\n feePerByte: number,\n rounding: number,\n network: string,\n): OrderOffer => {\n return buildOptionOrderOffer(\n announcement,\n contractSize,\n strikePrice,\n premium,\n feePerByte,\n rounding,\n network,\n 'put',\n 'short',\n totalCollateral,\n );\n};\n\n/**\n * Builds an order offer for a long call\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {number} contractSize contract size in satoshis\n * @param {number} strikePrice strike price of contract\n * @param {number} maxGain maximum amount that can be gained (totalCollateral)\n * @param {number} premium premium of contract in satoshis\n * @param {number} feePerByte sats/vbyte\n * @param {number} rounding rounding interval\n * @param {string} network bitcoin network type\n * @returns {OrderOffer} Returns order offer\n */\nexport const buildLongCallOrderOffer = (\n announcement: OracleAnnouncement,\n contractSize: Value,\n strikePrice: number,\n maxGain: Value,\n premium: Value,\n feePerByte: number,\n rounding: number,\n network: string,\n): OrderOffer => {\n return buildOptionOrderOffer(\n announcement,\n contractSize,\n strikePrice,\n premium,\n feePerByte,\n rounding,\n network,\n 'call',\n 'long',\n maxGain,\n );\n};\n\n/**\n * Builds an order offer for a long put\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {number} contractSize contract size in satoshis\n * @param {number} strikePrice strike price of contract\n * @param {number} maxGain maximum amount that can be gained (totalCollateral)\n * @param {number} premium premium of contract in satoshis\n * @param {number} feePerByte sats/vbyte\n * @param {number} rounding rounding interval\n * @param {string} network bitcoin network type\n * @returns {OrderOffer} Returns order offer\n */\nexport const buildLongPutOrderOffer = (\n announcement: OracleAnnouncement,\n contractSize: Value,\n strikePrice: number,\n maxGain: Value,\n premium: Value,\n feePerByte: number,\n rounding: number,\n network: string,\n): OrderOffer => {\n return buildOptionOrderOffer(\n announcement,\n contractSize,\n strikePrice,\n premium,\n feePerByte,\n rounding,\n network,\n 'put',\n 'long',\n maxGain,\n );\n};\n\n/**\n * Builds an order offer for a linear curve\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {Value} offerCollateral offer collateral amount\n * @param {Value} minPayout minimum payout\n * @param {Value} maxPayout maximum payout (also total collateral)\n * @param {bigint} startOutcome oracle outcome (in bits or sats)\n * @param {bigint} endOutcome oracle outcome (in bits or sats)\n * @param {bigint} feePerByte sats/vbyte\n * @param {Value} rounding rounding mod for RoundingInterval\n * @param {BitcoinNetwork} network bitcoin, bitcoin_testnet or bitcoin_regtest\n * @param {DlcParty} [shiftForFees] shift for offerer, acceptor or neither (who should pay fees)\n * @param {Value} [fees] fees to shift\n * @returns {OrderOffer}\n */\nexport const buildLinearOrderOffer = (\n announcement: OracleAnnouncement,\n offerCollateral: Value,\n minPayout: Value,\n maxPayout: Value,\n startOutcome: bigint,\n endOutcome: bigint,\n feePerByte: bigint,\n roundingIntervals: RoundingIntervals,\n network: BitcoinNetwork,\n shiftForFees: DlcParty = 'neither',\n fees: Value = Value.fromSats(0),\n): OrderOffer => {\n if (maxPayout.lt(minPayout))\n throw Error('maxPayout must be greater than minPayout');\n if (endOutcome < startOutcome)\n throw Error('endOutcome must be greater than startOutcome');\n\n const eventDescriptor = getDigitDecompositionEventDescriptor(announcement);\n\n const totalCollateral = maxPayout.sats;\n\n const { payoutFunction } = LinearPayout.buildPayoutFunction(\n minPayout.sats,\n maxPayout.sats,\n startOutcome,\n endOutcome,\n eventDescriptor.base,\n eventDescriptor.nbDigits,\n );\n\n const orderOffer = buildOrderOffer(\n announcement,\n totalCollateral,\n offerCollateral.sats,\n payoutFunction,\n roundingIntervals,\n feePerByte,\n network.name,\n );\n\n const positionInfo = new OrderPositionInfo();\n positionInfo.shiftForFees = shiftForFees;\n positionInfo.fees = shiftForFees === 'neither' ? BigInt(0) : fees.sats;\n orderOffer.positionInfo = positionInfo;\n\n return orderOffer;\n};\n\n/**\n * Builds a custom strategy order offer\n *\n * Calculates offer fees\n * calculates the minimum max gain\n * maxLoss and maxGain are normalized to 1 BTC contracts\n *\n * shiftForFees 'offeror' means 'offeror' pays network fees\n * shiftForFees 'acceptor' means 'acceptor' pays network fees\n *\n * numContracts refers to the number of DLCs in the funding transaction\n * if it's not a batch dlc funding transaction, then this is not relevant\n *\n * @param {OracleAnnouncement} announcement oracle announcement\n * @param {Value} contractSize contract size\n * @param {Value} normalizedMaxLoss maximum amount that can be lost based on 1 BTC contract\n * @param {Value} normalizedMaxGain maximum amount that can be gained based on 1 BTC contract\n * @param {bigint} feePerByte sats/vbyte\n * @param {Value} roundingIntervals rounding mod for RoundingInterval\n * @param {BitcoinNetwork} network bitcoin, bitcoin_testnet or bitcoin_regtest\n * @param {DlcParty} [shiftForFees] shift for offerer, acceptor or neither\n * @param {Value} [fees_] fees to shift\n * @param {Value} [collateral] collateral to use\n * @param {number} [numOfferInputs] number of inputs to use\n * @param {number} [numContracts] number of DLCs in the funding transaction\n *\n * @returns {OrderOffer}\n */\nexport const buildCustomStrategyOrderOffer = (\n announcement: OracleAnnouncement,\n contractSize: Value,\n normalizedMaxLoss: Value,\n normalizedMaxGain: Value,\n feePerByte: bigint,\n roundingIntervals: RoundingIntervals,\n network: BitcoinNetwork,\n shiftForFees: DlcParty = 'neither',\n fees_: Value = Value.fromSats(0), // NOTE: fees should be divided before doing batch transaction\n collateral: Value = Value.fromSats(0),\n numOfferInputs = 1,\n numContracts = 1,\n skipValidation = false,\n): OrderOffer => {\n if (contractSize.eq(Value.zero())) {\n throw Error('contractSize must be greater than 0');\n }\n\n if (collateral.eq(Value.zero())) {\n collateral = contractSize.clone();\n }\n\n const eventDescriptor = getDigitDecompositionEventDescriptor(announcement);\n\n const unit = eventDescriptor.unit;\n\n const fees = Value.fromSats(\n Number(new Decimal(Number(fees_.sats)).dividedBy(numContracts).toFixed(0)),\n );\n\n const finalizer = getFinalizerByCount(\n feePerByte,\n numOfferInputs,\n 1,\n numContracts,\n );\n const offerFees = Value.fromSats(finalizer.offerFees);\n\n // Use offerFees + dustThreshold for min max gain, to ensure in the case of\n // 0 PnL the acceptor payout is not dust\n const minMaxGainForContractSize_ = offerFees.addn(\n Value.fromSats(dustThreshold(BigInt(feePerByte))),\n );\n const minMaxGainForContractSize = Value.fromSats(\n roundUpToNearestMultiplier(\n minMaxGainForContractSize_.sats,\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n\n const maxLossForContractSize = Value.fromSats(\n roundUpToNearestMultiplier(\n (normalizedMaxLoss.sats * contractSize.sats) / BigInt(1e8),\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n const tempMaxGainForContractSize = Value.fromSats(\n roundUpToNearestMultiplier(\n (normalizedMaxGain.sats * contractSize.sats) / BigInt(1e8),\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n\n const maxGainForContractSize = Value.zero();\n\n if (tempMaxGainForContractSize.lt(minMaxGainForContractSize)) {\n maxGainForContractSize.add(minMaxGainForContractSize);\n } else {\n maxGainForContractSize.add(tempMaxGainForContractSize);\n }\n\n const maxGainAdjusted = Value.fromSats(\n roundToNearestMultiplier(\n (maxGainForContractSize.sats * BigInt(1e8)) / contractSize.sats,\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n\n const feesAdjusted = Value.fromSats(\n roundToNearestMultiplier(\n (fees.sats * BigInt(1e8)) / contractSize.sats,\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n\n const minPayout = collateral.clone();\n if (minPayout.lt(maxLossForContractSize.addn(maxGainForContractSize))) {\n throw new Error(\n 'Subtraction would result in a negative value for minPayout.',\n );\n }\n minPayout.sub(maxLossForContractSize);\n minPayout.sub(maxGainForContractSize);\n const maxPayout = collateral.clone();\n\n const startOutcomeValue = Value.fromBitcoin(1);\n startOutcomeValue.sub(normalizedMaxLoss);\n const endOutcomeValue = Value.fromBitcoin(1);\n endOutcomeValue.add(maxGainAdjusted);\n\n if (shiftForFees === 'offeror') {\n startOutcomeValue.add(feesAdjusted);\n endOutcomeValue.add(feesAdjusted);\n } else if (shiftForFees === 'acceptor') {\n startOutcomeValue.sub(feesAdjusted);\n endOutcomeValue.sub(feesAdjusted);\n }\n\n const startOutcome =\n startOutcomeValue.sats / BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]);\n const endOutcome =\n endOutcomeValue.sats / BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]);\n\n const offerCollateral = collateral.clone();\n if (offerCollateral.lt(maxGainForContractSize)) {\n throw new Error(\n 'Subtraction would result in a negative value for offerCollateral.',\n );\n }\n offerCollateral.sub(maxGainForContractSize);\n\n const orderOffer = buildLinearOrderOffer(\n announcement,\n offerCollateral,\n minPayout,\n maxPayout,\n startOutcome,\n endOutcome,\n feePerByte,\n roundingIntervals,\n network,\n shiftForFees,\n fees,\n );\n\n (orderOffer.positionInfo as OrderPositionInfo).contractSize =\n contractSize.sats;\n\n (orderOffer.positionInfo as OrderPositionInfo).instrumentName = ((orderOffer.contractInfo as SingleContractInfo)\n .oracleInfo as SingleOracleInfo).announcement.oracleEvent.eventId;\n\n if (!skipValidation) orderOffer.validate();\n\n return orderOffer;\n};\n\ninterface IInterval {\n beginInterval: bigint;\n rounding: number | bigint | Value;\n}\n\nexport const buildRoundingIntervalsFromIntervals = (\n contractSize: Value,\n intervals: IInterval[],\n): RoundingIntervals => {\n const roundingIntervals = new RoundingIntervals();\n\n roundingIntervals.intervals = intervals.map((interval) => {\n const roundingMod = computeRoundingModulus(interval.rounding, contractSize);\n\n return {\n beginInterval: interval.beginInterval,\n roundingMod,\n };\n });\n\n return roundingIntervals;\n};\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5c38ad3e5357d50423043a51331fab3a4340b630","contentHash":"5a603f667378c078b78824962fd9a8468e5486c3d539374296caba5d7de0edbc"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LinearPayout.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LinearPayout.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":32},"end":{"line":9,"column":67}},"7":{"start":{"line":10,"column":28},"end":{"line":77,"column":1}},"8":{"start":{"line":12,"column":23},"end":{"line":12,"column":109}},"9":{"start":{"line":14,"column":31},"end":{"line":20,"column":6}},"10":{"start":{"line":22,"column":24},"end":{"line":31,"column":6}},"11":{"start":{"line":33,"column":31},"end":{"line":39,"column":6}},"12":{"start":{"line":40,"column":27},"end":{"line":40,"column":59}},"13":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"14":{"start":{"line":43,"column":8},"end":{"line":43,"column":49}},"15":{"start":{"line":45,"column":4},"end":{"line":52,"column":7}},"16":{"start":{"line":53,"column":4},"end":{"line":60,"column":7}},"17":{"start":{"line":61,"column":4},"end":{"line":68,"column":7}},"18":{"start":{"line":69,"column":4},"end":{"line":73,"column":6}},"19":{"start":{"line":74,"column":4},"end":{"line":76,"column":6}},"20":{"start":{"line":78,"column":0},"end":{"line":78,"column":47}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":28},"end":{"line":10,"column":29}},"loc":{"start":{"line":10,"column":106},"end":{"line":77,"column":1}},"line":10}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":44,"column":5}},{"start":{"line":42,"column":4},"end":{"line":44,"column":5}}],"line":42}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":90,"9":90,"10":90,"11":90,"12":90,"13":90,"14":0,"15":90,"16":90,"17":90,"18":90,"19":90,"20":1},"f":{"0":1,"1":90},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[0,90]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LinearPayout.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LinearPayout.ts"],"names":[],"mappings":"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","sourcesContent":["import { PayoutFunction } from '@node-dlc/messaging';\nimport BN from 'bignumber.js';\n\nimport { PolynomialPayoutCurve } from '../PolynomialPayoutCurve';\n\nconst buildPayoutFunction = (\n minPayout: bigint,\n maxPayout: bigint,\n startOutcome: bigint,\n endOutcome: bigint,\n oracleBase: number,\n oracleDigits: number,\n): { payoutFunction: PayoutFunction } => {\n // Max outcome limited by the oracle\n const maxOutcome = BigInt(\n new BN(oracleBase).pow(oracleDigits).minus(1).toString(10),\n );\n\n // max loss line\n const payoutCurveMaxLoss = new PolynomialPayoutCurve([\n { outcome: new BN(0), payout: new BN(Number(minPayout)) },\n {\n outcome: new BN(Number(startOutcome)),\n payout: new BN(Number(minPayout)),\n },\n ]);\n\n // payout line\n const payoutCurve = new PolynomialPayoutCurve([\n {\n outcome: new BN(Number(startOutcome)),\n payout: new BN(Number(minPayout)),\n },\n {\n outcome: new BN(Number(endOutcome)),\n payout: new BN(Number(maxPayout)),\n },\n ]);\n\n // max gain line\n const payoutCurveMaxGain = new PolynomialPayoutCurve([\n { outcome: new BN(Number(endOutcome)), payout: new BN(Number(maxPayout)) },\n {\n outcome: new BN(Number(maxOutcome)),\n payout: new BN(Number(maxPayout)),\n },\n ]);\n\n const payoutFunction = new PayoutFunction();\n\n // Defensive fix: ensure payoutFunctionPieces is initialized as an array\n if (!payoutFunction.payoutFunctionPieces) {\n payoutFunction.payoutFunctionPieces = [];\n }\n\n payoutFunction.payoutFunctionPieces.push({\n endPoint: {\n eventOutcome: startOutcome,\n outcomePayout: minPayout,\n extraPrecision: 0,\n },\n payoutCurvePiece: payoutCurveMaxLoss.toPayoutCurvePiece(),\n });\n\n payoutFunction.payoutFunctionPieces.push({\n endPoint: {\n eventOutcome: endOutcome,\n outcomePayout: maxPayout,\n extraPrecision: 0,\n },\n payoutCurvePiece: payoutCurve.toPayoutCurvePiece(),\n });\n\n payoutFunction.payoutFunctionPieces.push({\n endPoint: {\n eventOutcome: maxOutcome,\n outcomePayout: maxPayout,\n extraPrecision: 0,\n },\n payoutCurvePiece: payoutCurveMaxGain.toPayoutCurvePiece(),\n });\n\n payoutFunction.lastEndpoint = {\n eventOutcome: maxOutcome,\n outcomePayout: maxPayout,\n extraPrecision: 0,\n };\n\n return {\n payoutFunction,\n };\n};\n\nexport const LinearPayout = { buildPayoutFunction };\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"483725f5d4e4c8bdda3467b4f9387b08c65aeba1","contentHash":"6a3e4bd8b4c5b2af7370a5063fa750eb52763618433cc9c1251d01b23e6eb42f"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongCall.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongCall.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":31},"end":{"line":9,"column":65}},"7":{"start":{"line":10,"column":19},"end":{"line":24,"column":1}},"8":{"start":{"line":11,"column":14},"end":{"line":11,"column":44}},"9":{"start":{"line":12,"column":14},"end":{"line":12,"column":43}},"10":{"start":{"line":13,"column":14},"end":{"line":13,"column":43}},"11":{"start":{"line":14,"column":14},"end":{"line":14,"column":81}},"12":{"start":{"line":15,"column":16},"end":{"line":15,"column":45}},"13":{"start":{"line":16,"column":16},"end":{"line":16,"column":64}},"14":{"start":{"line":17,"column":24},"end":{"line":17,"column":93}},"15":{"start":{"line":18,"column":23},"end":{"line":18,"column":109}},"16":{"start":{"line":19,"column":4},"end":{"line":23,"column":6}},"17":{"start":{"line":25,"column":28},"end":{"line":45,"column":1}},"18":{"start":{"line":26,"column":40},"end":{"line":26,"column":103}},"19":{"start":{"line":27,"column":27},"end":{"line":27,"column":61}},"20":{"start":{"line":28,"column":4},"end":{"line":35,"column":7}},"21":{"start":{"line":36,"column":4},"end":{"line":40,"column":6}},"22":{"start":{"line":41,"column":4},"end":{"line":44,"column":6}},"23":{"start":{"line":46,"column":0},"end":{"line":46,"column":55}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":19},"end":{"line":10,"column":20}},"loc":{"start":{"line":10,"column":76},"end":{"line":24,"column":1}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":25,"column":28},"end":{"line":25,"column":29}},"loc":{"start":{"line":25,"column":102},"end":{"line":45,"column":1}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"f":{"0":1,"1":2,"2":1},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongCall.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongCall.ts"],"names":[],"mappings":";;;;;;AAAA,mDAAuD;AACvD,gEAA8B;AAE9B,kEAA+D;AAE/D,MAAM,UAAU,GAAG,CACjB,WAAmB,EACnB,YAAoB,EACpB,UAAkB,EAClB,YAAoB,EAKpB,EAAE;IACF,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,sBAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzC,MAAM,WAAW,GAAG,IAAI,2CAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,MAAM,CACvB,IAAI,sBAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC3D,CAAC;IAEF,OAAO;QACL,UAAU;QACV,eAAe,EAAE,YAAY;QAC7B,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,WAAmB,EACnB,YAAoB,EACpB,eAAuB,EACvB,UAAkB,EAClB,YAAoB,EAC2C,EAAE;IACjE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,UAAU,CAC5C,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,CACb,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,4BAAgB,EAAE,CAAC;IAE9C,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACvC,QAAQ,EAAE;YACR,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,eAAe;YAC9B,cAAc,EAAE,CAAC;SAClB;QACD,gBAAgB,EAAE,WAAW,CAAC,kBAAkB,EAAE;KACnD,CAAC,CAAC;IAEH,cAAc,CAAC,YAAY,GAAG;QAC5B,YAAY,EAAE,UAAU;QACxB,aAAa,EAAE,eAAe;QAC9B,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,OAAO;QACL,cAAc;QACd,eAAe;KAChB,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,QAAQ,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import { PayoutFunctionV0 } from '@node-dlc/messaging';\nimport BN from 'bignumber.js';\n\nimport { HyperbolaPayoutCurve } from '../HyperbolaPayoutCurve';\n\nconst buildCurve = (\n strikePrice: bigint,\n contractSize: bigint,\n oracleBase: number,\n oracleDigits: number,\n): {\n maxOutcome: bigint;\n totalCollateral: bigint;\n payoutCurve: HyperbolaPayoutCurve;\n} => {\n const a = new BN(-1);\n const b = new BN(0);\n const c = new BN(0);\n const d = new BN((strikePrice * contractSize).toString());\n\n const f_1 = new BN(0);\n const f_2 = new BN(Number(contractSize));\n\n const payoutCurve = new HyperbolaPayoutCurve(a, b, c, d, f_1, f_2);\n\n const maxOutcome = BigInt(\n new BN(oracleBase).pow(oracleDigits).minus(1).toString(10),\n );\n\n return {\n maxOutcome,\n totalCollateral: contractSize,\n payoutCurve,\n };\n};\n\nconst buildPayoutFunction = (\n strikePrice: bigint,\n contractSize: bigint,\n totalCollateral: bigint,\n oracleBase: number,\n oracleDigits: number,\n): { payoutFunction: PayoutFunctionV0; totalCollateral: bigint } => {\n const { maxOutcome, payoutCurve } = buildCurve(\n strikePrice,\n contractSize,\n oracleBase,\n oracleDigits,\n );\n\n const payoutFunction = new PayoutFunctionV0();\n\n payoutFunction.payoutFunctionPieces.push({\n endPoint: {\n eventOutcome: maxOutcome,\n outcomePayout: totalCollateral,\n extraPrecision: 0,\n },\n payoutCurvePiece: payoutCurve.toPayoutCurvePiece(),\n });\n\n payoutFunction.lastEndpoint = {\n eventOutcome: maxOutcome,\n outcomePayout: totalCollateral,\n extraPrecision: 0,\n };\n\n return {\n payoutFunction,\n totalCollateral,\n };\n};\n\nexport const LongCall = { buildCurve, buildPayoutFunction };\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6471349091a20f88a146c1d60dd7bc4d2dec40bd","contentHash":"db195b9dfbe3e10372edbda045e56535895d7bddc16f3ca1cc905ea7f8ce26a4"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongPut.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongPut.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":25}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":31},"end":{"line":9,"column":65}},"7":{"start":{"line":10,"column":19},"end":{"line":24,"column":1}},"8":{"start":{"line":11,"column":14},"end":{"line":11,"column":43}},"9":{"start":{"line":12,"column":14},"end":{"line":12,"column":43}},"10":{"start":{"line":13,"column":14},"end":{"line":13,"column":43}},"11":{"start":{"line":14,"column":14},"end":{"line":14,"column":81}},"12":{"start":{"line":15,"column":16},"end":{"line":15,"column":45}},"13":{"start":{"line":16,"column":16},"end":{"line":16,"column":65}},"14":{"start":{"line":17,"column":24},"end":{"line":17,"column":93}},"15":{"start":{"line":18,"column":23},"end":{"line":18,"column":109}},"16":{"start":{"line":19,"column":4},"end":{"line":23,"column":6}},"17":{"start":{"line":25,"column":28},"end":{"line":45,"column":1}},"18":{"start":{"line":26,"column":40},"end":{"line":26,"column":103}},"19":{"start":{"line":27,"column":27},"end":{"line":27,"column":61}},"20":{"start":{"line":28,"column":4},"end":{"line":35,"column":7}},"21":{"start":{"line":36,"column":4},"end":{"line":40,"column":6}},"22":{"start":{"line":41,"column":4},"end":{"line":44,"column":6}},"23":{"start":{"line":46,"column":0},"end":{"line":46,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":19},"end":{"line":10,"column":20}},"loc":{"start":{"line":10,"column":76},"end":{"line":24,"column":1}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":25,"column":28},"end":{"line":25,"column":29}},"loc":{"start":{"line":25,"column":102},"end":{"line":45,"column":1}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1},"f":{"0":1,"1":2,"2":1},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongPut.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/LongPut.ts"],"names":[],"mappings":";;;;;;AAAA,mDAAuD;AACvD,gEAA8B;AAE9B,kEAA+D;AAE/D,MAAM,UAAU,GAAG,CACjB,WAAmB,EACnB,YAAoB,EACpB,UAAkB,EAClB,YAAoB,EAKpB,EAAE;IACF,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,CAAC,GAAG,IAAI,sBAAE,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,IAAI,sBAAE,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,sBAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,IAAI,2CAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG,MAAM,CACvB,IAAI,sBAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAC3D,CAAC;IAEF,OAAO;QACL,UAAU;QACV,eAAe,EAAE,YAAY;QAC7B,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,WAAmB,EACnB,YAAoB,EACpB,eAAuB,EACvB,UAAkB,EAClB,YAAoB,EAC2C,EAAE;IACjE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,UAAU,CAC5C,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,CACb,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,4BAAgB,EAAE,CAAC;IAE9C,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC;QACvC,QAAQ,EAAE;YACR,YAAY,EAAE,UAAU;YACxB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;YACxB,cAAc,EAAE,CAAC;SAClB;QACD,gBAAgB,EAAE,WAAW,CAAC,kBAAkB,EAAE;KACnD,CAAC,CAAC;IAEH,cAAc,CAAC,YAAY,GAAG;QAC5B,YAAY,EAAE,UAAU;QACxB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QACxB,cAAc,EAAE,CAAC;KAClB,CAAC;IAEF,OAAO;QACL,cAAc;QACd,eAAe;KAChB,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,OAAO,GAAG,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import { PayoutFunctionV0 } from '@node-dlc/messaging';\nimport BN from 'bignumber.js';\n\nimport { HyperbolaPayoutCurve } from '../HyperbolaPayoutCurve';\n\nconst buildCurve = (\n strikePrice: bigint,\n contractSize: bigint,\n oracleBase: number,\n oracleDigits: number,\n): {\n maxOutcome: bigint;\n totalCollateral: bigint;\n payoutCurve: HyperbolaPayoutCurve;\n} => {\n const a = new BN(1);\n const b = new BN(0);\n const c = new BN(0);\n const d = new BN((strikePrice * contractSize).toString());\n\n const f_1 = new BN(0);\n const f_2 = new BN(-Number(contractSize));\n\n const payoutCurve = new HyperbolaPayoutCurve(a, b, c, d, f_1, f_2);\n\n const maxOutcome = BigInt(\n new BN(oracleBase).pow(oracleDigits).minus(1).toString(10),\n );\n\n return {\n maxOutcome,\n totalCollateral: contractSize,\n payoutCurve,\n };\n};\n\nconst buildPayoutFunction = (\n strikePrice: bigint,\n contractSize: bigint,\n totalCollateral: bigint,\n oracleBase: number,\n oracleDigits: number,\n): { payoutFunction: PayoutFunctionV0; totalCollateral: bigint } => {\n const { maxOutcome, payoutCurve } = buildCurve(\n strikePrice,\n contractSize,\n oracleBase,\n oracleDigits,\n );\n\n const payoutFunction = new PayoutFunctionV0();\n\n payoutFunction.payoutFunctionPieces.push({\n endPoint: {\n eventOutcome: maxOutcome,\n outcomePayout: BigInt(0),\n extraPrecision: 0,\n },\n payoutCurvePiece: payoutCurve.toPayoutCurvePiece(),\n });\n\n payoutFunction.lastEndpoint = {\n eventOutcome: maxOutcome,\n outcomePayout: BigInt(0),\n extraPrecision: 0,\n };\n\n return {\n payoutFunction,\n totalCollateral,\n };\n};\n\nexport const LongPut = { buildCurve, buildPayoutFunction };\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e529c3e6d930651d826149cb08849c7d5024e34f","contentHash":"f53cfc90fe22db1de013ac3fc8bfdce69a6e16d6c3cbf437a4f8bf14dfc3f952"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CsoInfo.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CsoInfo.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":200}},"4":{"start":{"line":7,"column":18},"end":{"line":7,"column":46}},"5":{"start":{"line":8,"column":20},"end":{"line":8,"column":50}},"6":{"start":{"line":9,"column":17},"end":{"line":9,"column":51}},"7":{"start":{"line":10,"column":21},"end":{"line":10,"column":59}},"8":{"start":{"line":11,"column":18},"end":{"line":11,"column":38}},"9":{"start":{"line":12,"column":25},"end":{"line":12,"column":55}},"10":{"start":{"line":34,"column":43},"end":{"line":70,"column":1}},"11":{"start":{"line":35,"column":31},"end":{"line":35,"column":130}},"12":{"start":{"line":36,"column":32},"end":{"line":36,"column":62}},"13":{"start":{"line":37,"column":23},"end":{"line":40,"column":32}},"14":{"start":{"line":41,"column":4},"end":{"line":48,"column":5}},"15":{"start":{"line":42,"column":8},"end":{"line":42,"column":42}},"16":{"start":{"line":43,"column":8},"end":{"line":43,"column":40}},"17":{"start":{"line":45,"column":9},"end":{"line":48,"column":5}},"18":{"start":{"line":46,"column":8},"end":{"line":46,"column":42}},"19":{"start":{"line":47,"column":8},"end":{"line":47,"column":40}},"20":{"start":{"line":49,"column":30},"end":{"line":49,"column":53}},"21":{"start":{"line":50,"column":4},"end":{"line":50,"column":44}},"22":{"start":{"line":51,"column":30},"end":{"line":51,"column":54}},"23":{"start":{"line":52,"column":4},"end":{"line":52,"column":45}},"24":{"start":{"line":53,"column":35},"end":{"line":56,"column":20}},"25":{"start":{"line":57,"column":35},"end":{"line":60,"column":20}},"26":{"start":{"line":61,"column":28},"end":{"line":61,"column":46}},"27":{"start":{"line":62,"column":4},"end":{"line":62,"column":113}},"28":{"start":{"line":63,"column":4},"end":{"line":69,"column":6}},"29":{"start":{"line":71,"column":0},"end":{"line":71,"column":80}},"30":{"start":{"line":94,"column":43},"end":{"line":120,"column":1}},"31":{"start":{"line":95,"column":25},"end":{"line":96,"column":59}},"32":{"start":{"line":97,"column":4},"end":{"line":104,"column":5}},"33":{"start":{"line":98,"column":8},"end":{"line":98,"column":44}},"34":{"start":{"line":99,"column":8},"end":{"line":99,"column":42}},"35":{"start":{"line":101,"column":9},"end":{"line":104,"column":5}},"36":{"start":{"line":102,"column":8},"end":{"line":102,"column":44}},"37":{"start":{"line":103,"column":8},"end":{"line":103,"column":42}},"38":{"start":{"line":105,"column":30},"end":{"line":105,"column":53}},"39":{"start":{"line":106,"column":4},"end":{"line":106,"column":44}},"40":{"start":{"line":107,"column":30},"end":{"line":107,"column":54}},"41":{"start":{"line":108,"column":4},"end":{"line":108,"column":45}},"42":{"start":{"line":109,"column":35},"end":{"line":109,"column":217}},"43":{"start":{"line":110,"column":35},"end":{"line":110,"column":217}},"44":{"start":{"line":111,"column":28},"end":{"line":111,"column":46}},"45":{"start":{"line":112,"column":4},"end":{"line":112,"column":48}},"46":{"start":{"line":113,"column":4},"end":{"line":119,"column":6}},"47":{"start":{"line":121,"column":0},"end":{"line":121,"column":80}},"48":{"start":{"line":146,"column":35},"end":{"line":216,"column":1}},"49":{"start":{"line":147,"column":4},"end":{"line":148,"column":63}},"50":{"start":{"line":148,"column":8},"end":{"line":148,"column":63}},"51":{"start":{"line":149,"column":25},"end":{"line":149,"column":38}},"52":{"start":{"line":150,"column":4},"end":{"line":152,"column":67}},"53":{"start":{"line":152,"column":8},"end":{"line":152,"column":67}},"54":{"start":{"line":153,"column":23},"end":{"line":153,"column":46}},"55":{"start":{"line":157,"column":4},"end":{"line":182,"column":5}},"56":{"start":{"line":159,"column":37},"end":{"line":159,"column":47}},"57":{"start":{"line":160,"column":12},"end":{"line":161,"column":77}},"58":{"start":{"line":162,"column":12},"end":{"line":163,"column":33}},"59":{"start":{"line":164,"column":12},"end":{"line":166,"column":90}},"60":{"start":{"line":166,"column":16},"end":{"line":166,"column":90}},"61":{"start":{"line":167,"column":12},"end":{"line":167,"column":18}},"62":{"start":{"line":170,"column":36},"end":{"line":170,"column":46}},"63":{"start":{"line":171,"column":12},"end":{"line":172,"column":80}},"64":{"start":{"line":173,"column":12},"end":{"line":174,"column":33}},"65":{"start":{"line":175,"column":12},"end":{"line":177,"column":90}},"66":{"start":{"line":177,"column":16},"end":{"line":177,"column":90}},"67":{"start":{"line":178,"column":12},"end":{"line":178,"column":18}},"68":{"start":{"line":181,"column":12},"end":{"line":181,"column":52}},"69":{"start":{"line":183,"column":31},"end":{"line":183,"column":62}},"70":{"start":{"line":184,"column":4},"end":{"line":185,"column":63}},"71":{"start":{"line":185,"column":8},"end":{"line":185,"column":63}},"72":{"start":{"line":186,"column":27},"end":{"line":186,"column":60}},"73":{"start":{"line":187,"column":4},"end":{"line":187,"column":59}},"74":{"start":{"line":188,"column":25},"end":{"line":188,"column":63}},"75":{"start":{"line":189,"column":21},"end":{"line":189,"column":59}},"76":{"start":{"line":190,"column":22},"end":{"line":190,"column":57}},"77":{"start":{"line":191,"column":22},"end":{"line":191,"column":53}},"78":{"start":{"line":192,"column":25},"end":{"line":192,"column":59}},"79":{"start":{"line":193,"column":23},"end":{"line":193,"column":53}},"80":{"start":{"line":194,"column":17},"end":{"line":194,"column":37}},"81":{"start":{"line":195,"column":23},"end":{"line":195,"column":77}},"82":{"start":{"line":196,"column":25},"end":{"line":196,"column":93}},"83":{"start":{"line":197,"column":30},"end":{"line":197,"column":116}},"84":{"start":{"line":198,"column":28},"end":{"line":198,"column":112}},"85":{"start":{"line":199,"column":45},"end":{"line":201,"column":52}},"86":{"start":{"line":202,"column":119},"end":{"line":202,"column":239}},"87":{"start":{"line":203,"column":19},"end":{"line":203,"column":54}},"88":{"start":{"line":204,"column":4},"end":{"line":215,"column":6}},"89":{"start":{"line":217,"column":0},"end":{"line":217,"column":64}},"90":{"start":{"line":224,"column":28},"end":{"line":240,"column":1}},"91":{"start":{"line":225,"column":4},"end":{"line":227,"column":72}},"92":{"start":{"line":227,"column":8},"end":{"line":227,"column":72}},"93":{"start":{"line":228,"column":23},"end":{"line":228,"column":32}},"94":{"start":{"line":229,"column":17},"end":{"line":229,"column":39}},"95":{"start":{"line":230,"column":25},"end":{"line":230,"column":47}},"96":{"start":{"line":231,"column":4},"end":{"line":235,"column":5}},"97":{"start":{"line":232,"column":8},"end":{"line":232,"column":55}},"98":{"start":{"line":233,"column":8},"end":{"line":233,"column":68}},"99":{"start":{"line":234,"column":8},"end":{"line":234,"column":84}},"100":{"start":{"line":236,"column":25},"end":{"line":236,"column":130}},"101":{"start":{"line":237,"column":4},"end":{"line":238,"column":69}},"102":{"start":{"line":238,"column":8},"end":{"line":238,"column":69}},"103":{"start":{"line":239,"column":4},"end":{"line":239,"column":24}},"104":{"start":{"line":241,"column":0},"end":{"line":241,"column":50}},"105":{"start":{"line":252,"column":34},"end":{"line":288,"column":1}},"106":{"start":{"line":253,"column":4},"end":{"line":253,"column":132}},"107":{"start":{"line":254,"column":4},"end":{"line":287,"column":5}},"108":{"start":{"line":255,"column":8},"end":{"line":257,"column":167}},"109":{"start":{"line":258,"column":33},"end":{"line":258,"column":55}},"110":{"start":{"line":259,"column":23},"end":{"line":259,"column":46}},"111":{"start":{"line":261,"column":8},"end":{"line":261,"column":160}},"112":{"start":{"line":264,"column":8},"end":{"line":269,"column":9}},"113":{"start":{"line":265,"column":12},"end":{"line":265,"column":71}},"114":{"start":{"line":266,"column":12},"end":{"line":266,"column":67}},"115":{"start":{"line":267,"column":12},"end":{"line":267,"column":168}},"116":{"start":{"line":268,"column":12},"end":{"line":268,"column":173}},"117":{"start":{"line":270,"column":8},"end":{"line":286,"column":9}},"118":{"start":{"line":274,"column":16},"end":{"line":274,"column":167}},"119":{"start":{"line":275,"column":16},"end":{"line":275,"column":22}},"120":{"start":{"line":278,"column":16},"end":{"line":278,"column":107}},"121":{"start":{"line":279,"column":16},"end":{"line":279,"column":182}},"122":{"start":{"line":280,"column":16},"end":{"line":280,"column":22}},"123":{"start":{"line":283,"column":16},"end":{"line":283,"column":109}},"124":{"start":{"line":284,"column":16},"end":{"line":284,"column":167}},"125":{"start":{"line":285,"column":16},"end":{"line":285,"column":22}},"126":{"start":{"line":289,"column":0},"end":{"line":289,"column":62}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":34,"column":43},"end":{"line":34,"column":44}},"loc":{"start":{"line":34,"column":135},"end":{"line":70,"column":1}},"line":34},"2":{"name":"(anonymous_2)","decl":{"start":{"line":94,"column":43},"end":{"line":94,"column":44}},"loc":{"start":{"line":94,"column":135},"end":{"line":120,"column":1}},"line":94},"3":{"name":"(anonymous_3)","decl":{"start":{"line":146,"column":35},"end":{"line":146,"column":36}},"loc":{"start":{"line":146,"column":150},"end":{"line":216,"column":1}},"line":146},"4":{"name":"(anonymous_4)","decl":{"start":{"line":224,"column":28},"end":{"line":224,"column":29}},"loc":{"start":{"line":224,"column":58},"end":{"line":240,"column":1}},"line":224},"5":{"name":"(anonymous_5)","decl":{"start":{"line":252,"column":34},"end":{"line":252,"column":35}},"loc":{"start":{"line":252,"column":54},"end":{"line":288,"column":1}},"line":252}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":37,"column":23},"end":{"line":40,"column":32}},"type":"cond-expr","locations":[{"start":{"line":38,"column":10},"end":{"line":39,"column":55}},{"start":{"line":40,"column":10},"end":{"line":40,"column":32}}],"line":37},"4":{"loc":{"start":{"line":41,"column":4},"end":{"line":48,"column":5}},"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":48,"column":5}},{"start":{"line":41,"column":4},"end":{"line":48,"column":5}}],"line":41},"5":{"loc":{"start":{"line":45,"column":9},"end":{"line":48,"column":5}},"type":"if","locations":[{"start":{"line":45,"column":9},"end":{"line":48,"column":5}},{"start":{"line":45,"column":9},"end":{"line":48,"column":5}}],"line":45},"6":{"loc":{"start":{"line":97,"column":4},"end":{"line":104,"column":5}},"type":"if","locations":[{"start":{"line":97,"column":4},"end":{"line":104,"column":5}},{"start":{"line":97,"column":4},"end":{"line":104,"column":5}}],"line":97},"7":{"loc":{"start":{"line":101,"column":9},"end":{"line":104,"column":5}},"type":"if","locations":[{"start":{"line":101,"column":9},"end":{"line":104,"column":5}},{"start":{"line":101,"column":9},"end":{"line":104,"column":5}}],"line":101},"8":{"loc":{"start":{"line":146,"column":51},"end":{"line":146,"column":75}},"type":"default-arg","locations":[{"start":{"line":146,"column":66},"end":{"line":146,"column":75}}],"line":146},"9":{"loc":{"start":{"line":146,"column":77},"end":{"line":146,"column":111}},"type":"default-arg","locations":[{"start":{"line":146,"column":84},"end":{"line":146,"column":111}}],"line":146},"10":{"loc":{"start":{"line":146,"column":128},"end":{"line":146,"column":145}},"type":"default-arg","locations":[{"start":{"line":146,"column":141},"end":{"line":146,"column":145}}],"line":146},"11":{"loc":{"start":{"line":147,"column":4},"end":{"line":148,"column":63}},"type":"if","locations":[{"start":{"line":147,"column":4},"end":{"line":148,"column":63}},{"start":{"line":147,"column":4},"end":{"line":148,"column":63}}],"line":147},"12":{"loc":{"start":{"line":150,"column":4},"end":{"line":152,"column":67}},"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":152,"column":67}},{"start":{"line":150,"column":4},"end":{"line":152,"column":67}}],"line":150},"13":{"loc":{"start":{"line":157,"column":4},"end":{"line":182,"column":5}},"type":"switch","locations":[{"start":{"line":158,"column":8},"end":{"line":168,"column":9}},{"start":{"line":169,"column":8},"end":{"line":179,"column":9}},{"start":{"line":180,"column":8},"end":{"line":181,"column":52}}],"line":157},"14":{"loc":{"start":{"line":164,"column":12},"end":{"line":166,"column":90}},"type":"if","locations":[{"start":{"line":164,"column":12},"end":{"line":166,"column":90}},{"start":{"line":164,"column":12},"end":{"line":166,"column":90}}],"line":164},"15":{"loc":{"start":{"line":175,"column":12},"end":{"line":177,"column":90}},"type":"if","locations":[{"start":{"line":175,"column":12},"end":{"line":177,"column":90}},{"start":{"line":175,"column":12},"end":{"line":177,"column":90}}],"line":175},"16":{"loc":{"start":{"line":184,"column":4},"end":{"line":185,"column":63}},"type":"if","locations":[{"start":{"line":184,"column":4},"end":{"line":185,"column":63}},{"start":{"line":184,"column":4},"end":{"line":185,"column":63}}],"line":184},"17":{"loc":{"start":{"line":196,"column":25},"end":{"line":196,"column":93}},"type":"cond-expr","locations":[{"start":{"line":196,"column":67},"end":{"line":196,"column":80}},{"start":{"line":196,"column":83},"end":{"line":196,"column":93}}],"line":196},"18":{"loc":{"start":{"line":196,"column":25},"end":{"line":196,"column":64}},"type":"binary-expr","locations":[{"start":{"line":196,"column":25},"end":{"line":196,"column":38}},{"start":{"line":196,"column":42},"end":{"line":196,"column":64}}],"line":196},"19":{"loc":{"start":{"line":199,"column":45},"end":{"line":201,"column":52}},"type":"cond-expr","locations":[{"start":{"line":200,"column":10},"end":{"line":200,"column":52}},{"start":{"line":201,"column":10},"end":{"line":201,"column":52}}],"line":199},"20":{"loc":{"start":{"line":224,"column":36},"end":{"line":224,"column":53}},"type":"default-arg","locations":[{"start":{"line":224,"column":49},"end":{"line":224,"column":53}}],"line":224},"21":{"loc":{"start":{"line":225,"column":4},"end":{"line":227,"column":72}},"type":"if","locations":[{"start":{"line":225,"column":4},"end":{"line":227,"column":72}},{"start":{"line":225,"column":4},"end":{"line":227,"column":72}}],"line":225},"22":{"loc":{"start":{"line":225,"column":8},"end":{"line":226,"column":57}},"type":"binary-expr","locations":[{"start":{"line":225,"column":8},"end":{"line":225,"column":55}},{"start":{"line":226,"column":8},"end":{"line":226,"column":57}}],"line":225},"23":{"loc":{"start":{"line":231,"column":4},"end":{"line":235,"column":5}},"type":"if","locations":[{"start":{"line":231,"column":4},"end":{"line":235,"column":5}},{"start":{"line":231,"column":4},"end":{"line":235,"column":5}}],"line":231},"24":{"loc":{"start":{"line":237,"column":4},"end":{"line":238,"column":69}},"type":"if","locations":[{"start":{"line":237,"column":4},"end":{"line":238,"column":69}},{"start":{"line":237,"column":4},"end":{"line":238,"column":69}}],"line":237},"25":{"loc":{"start":{"line":255,"column":30},"end":{"line":257,"column":94}},"type":"binary-expr","locations":[{"start":{"line":255,"column":30},"end":{"line":256,"column":55}},{"start":{"line":257,"column":12},"end":{"line":257,"column":94}}],"line":255},"26":{"loc":{"start":{"line":264,"column":8},"end":{"line":269,"column":9}},"type":"if","locations":[{"start":{"line":264,"column":8},"end":{"line":269,"column":9}},{"start":{"line":264,"column":8},"end":{"line":269,"column":9}}],"line":264},"27":{"loc":{"start":{"line":270,"column":8},"end":{"line":286,"column":9}},"type":"switch","locations":[{"start":{"line":271,"column":12},"end":{"line":275,"column":22}},{"start":{"line":276,"column":12},"end":{"line":280,"column":22}},{"start":{"line":281,"column":12},"end":{"line":285,"column":22}}],"line":270}},"s":{"0":1,"1":2,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":3,"12":3,"13":3,"14":3,"15":1,"16":1,"17":2,"18":0,"19":0,"20":3,"21":3,"22":3,"23":3,"24":3,"25":3,"26":3,"27":3,"28":3,"29":1,"30":1,"31":79,"32":79,"33":8,"34":8,"35":71,"36":66,"37":66,"38":79,"39":79,"40":79,"41":79,"42":79,"43":79,"44":79,"45":79,"46":79,"47":1,"48":1,"49":82,"50":0,"51":82,"52":82,"53":0,"54":82,"55":82,"56":82,"57":82,"58":82,"59":82,"60":0,"61":82,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":82,"70":82,"71":0,"72":82,"73":82,"74":82,"75":82,"76":82,"77":82,"78":82,"79":82,"80":82,"81":82,"82":82,"83":82,"84":82,"85":82,"86":82,"87":82,"88":82,"89":1,"90":1,"91":78,"92":0,"93":78,"94":78,"95":78,"96":78,"97":76,"98":76,"99":76,"100":78,"101":78,"102":1,"103":77,"104":1,"105":1,"106":85,"107":85,"108":251,"109":251,"110":251,"111":251,"112":250,"113":165,"114":165,"115":165,"116":165,"117":250,"118":85,"119":84,"120":83,"121":82,"122":82,"123":82,"124":82,"125":82,"126":1},"f":{"0":2,"1":3,"2":79,"3":82,"4":78,"5":85},"b":{"0":[1,1,1],"1":[0,2],"2":[2,2],"3":[3,0],"4":[1,2],"5":[0,2],"6":[8,71],"7":[66,5],"8":[0],"9":[0],"10":[3],"11":[0,82],"12":[0,82],"13":[82,0,0],"14":[0,82],"15":[0,0],"16":[0,82],"17":[76,6],"18":[82,78],"19":[3,79],"20":[68],"21":[0,78],"22":[78,76],"23":[76,2],"24":[1,77],"25":[251,0],"26":[165,85],"27":[85,83,82]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CsoInfo.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/CsoInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import { Value } from '@node-dlc/bitcoin';\nimport {\n ContractDescriptorType,\n ContractInfo,\n ContractInfoType,\n DigitDecompositionEventDescriptor,\n MessageType,\n MultiOracleInfo,\n NumericalDescriptor,\n OrderPositionInfo,\n PayoutCurvePieceType,\n PayoutFunction,\n PolynomialPayoutCurvePiece,\n SingleContractInfo,\n SingleOracleInfo,\n} from '@node-dlc/messaging';\nimport assert from 'assert';\nimport Decimal from 'decimal.js';\n\nimport {\n DlcParty,\n roundToNearestMultiplier,\n roundUpToNearestMultiplier,\n UNIT_MULTIPLIER,\n} from './Builder';\nimport { HasContractInfo, HasOfferCollateral, HasType } from './OptionInfo';\n\nexport interface CsoInfo {\n normalizedMaxGain: Value; // Max Gain Relative to 1 BTC Contract\n normalizedMaxLoss: Value; // Max Loss Relative to 1 BTC Contract\n maxGainForContractSize: Value; // Max Gain Relative to Contract Size\n maxLossForContractSize: Value; // Max Loss Relative to Contract Size\n minPayout: bigint;\n maxPayout: bigint;\n contractSize: Value;\n offerCollateral: Value;\n totalCollateral: Value;\n expiry: Date;\n}\n\nexport interface CsoInfoParams {\n normalizedMaxGain: Value; // Max Gain Relative to 1 BTC Contract\n normalizedMaxLoss: Value; // Max Loss Relative to 1 BTC Contract\n maxGainForContractSize: Value; // Max Gain Relative to Contract Size\n maxLossForContractSize: Value; // Max Loss Relative to Contract Size\n offerCollateral: Value; // Offer Collateral\n}\n\nconst ONE_BTC_CONTRACT = Value.fromBitcoin(1);\n\nexport type MaybeHasPositionInfo = {\n positionInfo?: OrderPositionInfo;\n};\n\n/**\n * getCsoInfoParamsFromContractInfo V0\n *\n * Old getCsoInfoParamsFromContractInfo implementation\n *\n * @param {Value} contractSize - The size of the contract in terms of value.\n * @param {Value} collateral - The collateral value put up for the contract.\n * @param {DlcParty} shiftForFees - Specifies which party ('offeror' or 'acceptor') will bear the fees, affecting the outcome values.\n * @param {Value} fees - The fees associated with the contract.\n * @param {string} unit - The unit of measurement for the contract outcomes (e.g., 'BTC').\n * @param {Value} startOutcomeValue - The starting outcome value for the contract.\n * @param {Value} endOutcomeValue - The ending outcome value for the contract.\n * @returns {CsoInfoParams} An object containing the calculated CSO parameters:\n * - normalizedMaxGain: Maximum gain relative to a 1 BTC contract.\n * - normalizedMaxLoss: Maximum loss relative to a 1 BTC contract.\n * - maxGainForContractSize: Maximum gain for the actual contract size.\n * - maxLossForContractSize: Maximum loss for the actual contract size.\n * - offerCollateral: The offer collateral value after adjustments.\n *\n * Note: This function calculates the adjusted fees incorrectly, using collateral instead of contract size. Use v1 where possible.\n */\nexport const getCsoInfoParamsFromContractInfoV0 = (\n contractSize: Value,\n collateral: Value,\n shiftForFees: DlcParty,\n fees: Value,\n unit: string,\n startOutcomeValue: Value,\n endOutcomeValue: Value,\n): CsoInfoParams => {\n const leverageMultiplier = parseFloat(\n new Decimal(contractSize.bitcoin).dividedBy(collateral.bitcoin).toFixed(1),\n );\n\n const defaultContractSize = Value.fromBitcoin(1);\n\n const shiftValue =\n collateral.sats > 0\n ? Value.fromSats(\n roundToNearestMultiplier(\n (fees.sats * defaultContractSize.sats) / collateral.sats, // WARNING: this should be contract size not collateral\n UNIT_MULTIPLIER[unit.toLowerCase()], // (use v1 if possible)\n ),\n )\n : Value.zero();\n\n if (shiftForFees === 'offeror') {\n startOutcomeValue.sub(shiftValue);\n endOutcomeValue.sub(shiftValue);\n } else if (shiftForFees === 'acceptor') {\n startOutcomeValue.add(shiftValue);\n endOutcomeValue.add(shiftValue);\n }\n\n const normalizedMaxGain = endOutcomeValue.clone();\n normalizedMaxGain.sub(ONE_BTC_CONTRACT);\n\n const normalizedMaxLoss = ONE_BTC_CONTRACT.clone();\n normalizedMaxLoss.sub(startOutcomeValue);\n\n const maxGainForContractSize = Value.fromBitcoin(\n new Decimal(normalizedMaxGain.bitcoin)\n .times(leverageMultiplier)\n .toDecimalPlaces(5)\n .toNumber(),\n );\n\n const maxLossForContractSize = Value.fromBitcoin(\n new Decimal(normalizedMaxLoss.bitcoin)\n .times(contractSize.bitcoin)\n .toDecimalPlaces(\n 8 - Math.log10(Number(UNIT_MULTIPLIER[unit.toLowerCase()])),\n )\n .toNumber(),\n );\n\n const offerCollateral = collateral.clone();\n offerCollateral.sub(\n Value.fromSats(\n (maxGainForContractSize.sats * collateral.sats) / BigInt(1e8),\n ),\n );\n\n return {\n normalizedMaxGain,\n normalizedMaxLoss,\n maxGainForContractSize,\n maxLossForContractSize,\n offerCollateral,\n };\n};\n\n/**\n * getCsoInfoParamsFromContractInfo V1\n *\n * Fixed getCsoInfoParamsFromContractInfo implementation\n *\n * @param {Value} contractSize - The size of the contract in terms of value.\n * @param {Value} collateral - The collateral value put up for the contract.\n * @param {DlcParty} shiftForFees - Specifies which party ('offeror' or 'acceptor') will bear the fees, affecting the outcome values.\n * @param {Value} fees - The fees associated with the contract.\n * @param {string} unit - The unit of measurement for the contract outcomes (e.g., 'BTC').\n * @param {Value} startOutcomeValue - The starting outcome value for the contract.\n * @param {Value} endOutcomeValue - The ending outcome value for the contract.\n * @returns {CsoInfoParams} An object containing the calculated CSO parameters:\n * - normalizedMaxGain: Maximum gain relative to a 1 BTC contract.\n * - normalizedMaxLoss: Maximum loss relative to a 1 BTC contract.\n * - maxGainForContractSize: Maximum gain for the actual contract size.\n * - maxLossForContractSize: Maximum loss for the actual contract size.\n * - offerCollateral: The offer collateral value after adjustments.\n *\n * This version improves upon the previous by correctly adjusting fees based on the contract size, leading to more accurate\n * calculations of CSO parameters.\n */\nexport const getCsoInfoParamsFromContractInfoV1 = (\n contractSize: Value,\n collateral: Value,\n shiftForFees: DlcParty,\n fees: Value,\n unit: string,\n startOutcomeValue: Value,\n endOutcomeValue: Value,\n): CsoInfoParams => {\n const feesAdjusted = Value.fromSats(\n roundToNearestMultiplier(\n (fees.sats * BigInt(1e8)) / contractSize.sats, // NOTE: this is done correctly using contractSize\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n\n if (shiftForFees === 'offeror') {\n startOutcomeValue.sub(feesAdjusted);\n endOutcomeValue.sub(feesAdjusted);\n } else if (shiftForFees === 'acceptor') {\n startOutcomeValue.add(feesAdjusted);\n endOutcomeValue.add(feesAdjusted);\n }\n\n const normalizedMaxGain = endOutcomeValue.clone();\n normalizedMaxGain.sub(ONE_BTC_CONTRACT);\n\n const normalizedMaxLoss = ONE_BTC_CONTRACT.clone();\n normalizedMaxLoss.sub(startOutcomeValue);\n\n const maxGainForContractSize = Value.fromSats(\n roundUpToNearestMultiplier(\n (normalizedMaxGain.sats * contractSize.sats) / BigInt(1e8),\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n\n const maxLossForContractSize = Value.fromSats(\n roundUpToNearestMultiplier(\n (normalizedMaxLoss.sats * contractSize.sats) / BigInt(1e8),\n BigInt(UNIT_MULTIPLIER[unit.toLowerCase()]),\n ),\n );\n\n const offerCollateral = collateral.clone();\n offerCollateral.sub(maxGainForContractSize);\n\n return {\n normalizedMaxGain,\n normalizedMaxLoss,\n maxGainForContractSize,\n maxLossForContractSize,\n offerCollateral,\n };\n};\n\n/**\n * Decode CsoInfo from a ContractInfo object. Essentially the opposite of buildCustomStrategyOrderOffer\n *\n * @param {_contractInfo} ContractInfo - Contract Info object, containing oracle and descriptor info\n * @param {DlcParty} shiftForFees - Specifies which party ('offeror', 'acceptor', or 'neither') will pay for network fees\n * @param {Value} fees - Network fees associated with the contract. Defaults to 0 sats.\n * @param {_contractSize} Value - Optional. If not provided, it defaults to the total collateral.\n * @param {csoVersion} 'v0' | 'v1' - Specifies the version of the CSO parameter calculation to use. Defaults to 'v1'.\n * @returns {CsoInfo} An object containing the calculated CSO information:\n * - normalizedMaxGain: Maximum gain relative to a 1 BTC contract.\n * - normalizedMaxLoss: Maximum loss relative to a 1 BTC contract.\n * - maxGainForContractSize: Maximum gain for the actual contract size.\n * - maxLossForContractSize: Maximum loss for the actual contract size.\n * - minPayout: Minimum payout as determined by the contract's payout function.\n * - maxPayout: Maximum payout as determined by the contract's payout function.\n * - contractSize: The size of the contract in terms of value.\n * - offerCollateral: The offer collateral value after adjustments.\n * - totalCollateral: The total collateral put up for the contract.\n * - expiry: The expiry date of the contract based on the oracle's event maturity epoch.\n *\n * Note: This function performs several validations to ensure that the contract information and its components are of the\n * expected types and formats.\n * It throws errors if unsupported types or formats are encountered.\n */\nexport const getCsoInfoFromContractInfo = (\n _contractInfo: ContractInfo,\n shiftForFees: DlcParty = 'neither',\n fees: Value = Value.fromSats(0),\n _contractSize?: Value,\n csoVersion: 'v0' | 'v1' = 'v1',\n): CsoInfo => {\n if (_contractInfo.contractInfoType !== ContractInfoType.Single)\n throw Error('Only ContractInfoV0 currently supported');\n\n const contractInfo = _contractInfo as SingleContractInfo;\n if (\n contractInfo.contractDescriptor.contractDescriptorType !==\n ContractDescriptorType.NumericOutcome\n )\n throw Error('Only Numeric Descriptor currently supported');\n\n const oracleInfo = contractInfo.oracleInfo;\n\n // Handle both SingleOracleInfo and MultiOracleInfo\n let eventMaturityEpoch: number;\n let eventDescriptor: DigitDecompositionEventDescriptor;\n\n switch (oracleInfo.type) {\n case MessageType.SingleOracleInfo: {\n const singleOracleInfo = oracleInfo as SingleOracleInfo;\n eventMaturityEpoch =\n singleOracleInfo.announcement.oracleEvent.eventMaturityEpoch;\n eventDescriptor = singleOracleInfo.announcement.oracleEvent\n .eventDescriptor as DigitDecompositionEventDescriptor;\n\n if (\n singleOracleInfo.announcement.oracleEvent.eventDescriptor.type !==\n MessageType.DigitDecompositionEventDescriptor\n )\n throw Error(\n 'Only DigitDecompositionEventDescriptor currently supported',\n );\n break;\n }\n case MessageType.MultiOracleInfo: {\n const multiOracleInfo = oracleInfo as MultiOracleInfo;\n eventMaturityEpoch =\n multiOracleInfo.announcements[0].oracleEvent.eventMaturityEpoch;\n eventDescriptor = multiOracleInfo.announcements[0].oracleEvent\n .eventDescriptor as DigitDecompositionEventDescriptor;\n\n if (\n multiOracleInfo.announcements[0].oracleEvent.eventDescriptor.type !==\n MessageType.DigitDecompositionEventDescriptor\n )\n throw Error(\n 'Only DigitDecompositionEventDescriptor currently supported',\n );\n break;\n }\n default:\n throw Error('Unknown oracle info type');\n }\n\n const contractDescriptor = contractInfo.contractDescriptor as NumericalDescriptor;\n if (contractDescriptor.payoutFunction.type !== MessageType.PayoutFunction)\n throw Error('Only PayoutFunction currently supported');\n\n const payoutFunction = contractDescriptor.payoutFunction as PayoutFunction;\n\n validateCsoPayoutFunction(payoutFunction);\n\n const initialPiece = payoutFunction.payoutFunctionPieces[0];\n const midPiece = payoutFunction.payoutFunctionPieces[1];\n\n const minPayout = initialPiece.endPoint.outcomePayout;\n const maxPayout = midPiece.endPoint.outcomePayout;\n\n const startOutcome = initialPiece.endPoint.eventOutcome;\n const endOutcome = midPiece.endPoint.eventOutcome;\n\n const unit = eventDescriptor.unit;\n\n const collateral = Value.fromSats(contractInfo.totalCollateral);\n const contractSize =\n _contractSize && _contractSize.sats > 0 ? _contractSize : collateral;\n\n const startOutcomeValue = Value.fromSats(\n startOutcome * UNIT_MULTIPLIER[unit.toLowerCase()],\n );\n const endOutcomeValue = Value.fromSats(\n endOutcome * UNIT_MULTIPLIER[unit.toLowerCase()],\n );\n\n const getCsoInfoParamsFromContractInfo =\n csoVersion === 'v0'\n ? getCsoInfoParamsFromContractInfoV0\n : getCsoInfoParamsFromContractInfoV1;\n\n const {\n normalizedMaxGain,\n normalizedMaxLoss,\n maxGainForContractSize,\n maxLossForContractSize,\n offerCollateral,\n } = getCsoInfoParamsFromContractInfo(\n contractSize,\n collateral,\n shiftForFees,\n fees,\n unit,\n startOutcomeValue,\n endOutcomeValue,\n );\n\n const expiry = new Date(eventMaturityEpoch * 1000);\n\n return {\n normalizedMaxGain,\n normalizedMaxLoss,\n maxGainForContractSize,\n maxLossForContractSize,\n minPayout,\n maxPayout,\n contractSize,\n offerCollateral,\n totalCollateral: collateral,\n expiry,\n };\n};\n\n/**\n * Get CsoInfo from OrderOffer or DlcOffer and validate\n *\n * @param {HasContractInfo & HasType} offer\n * @returns {CsoInfo}\n */\nexport const getCsoInfoFromOffer = (\n offer: HasContractInfo & HasType & HasOfferCollateral & MaybeHasPositionInfo,\n csoVersion: 'v0' | 'v1' = 'v1',\n): CsoInfo => {\n if (\n offer.type !== MessageType.DlcOffer &&\n offer.type !== MessageType.OrderOffer\n )\n throw Error('Only DlcOffer and OrderOffer currently supported');\n\n let shiftForFees: DlcParty = 'neither';\n const fees = Value.zero();\n const contractSize = Value.zero();\n\n if (offer.positionInfo) {\n shiftForFees = (offer.positionInfo as OrderPositionInfo).shiftForFees;\n fees.add(Value.fromSats((offer.positionInfo as OrderPositionInfo).fees));\n contractSize.add(\n Value.fromSats((offer.positionInfo as OrderPositionInfo).contractSize),\n );\n }\n\n const positionInfo = getCsoInfoFromContractInfo(\n offer.contractInfo,\n shiftForFees,\n fees,\n contractSize,\n csoVersion,\n );\n\n if (positionInfo.offerCollateral.sats !== offer.offerCollateral)\n throw Error('Offer was not generated with CSO ContractInfo');\n\n return positionInfo;\n};\n\n/**\n * Validate Payout Function for proper CSO format\n *\n * It should have 3 PayoutCurvePieces which consist of a flat line (maxLoss),\n * ascending line (maxLoss to maxGain) and finally another flat line (maxGain)\n *\n * All PayoutCurvePieces should be type PolynomialPayoutCurvePieces\n *\n * @param {PayoutFunction} payoutFunction\n */\nexport const validateCsoPayoutFunction = (\n payoutFunction: PayoutFunction,\n): void => {\n assert(\n payoutFunction.payoutFunctionPieces.length === 3,\n 'CSO Payout Function must have 3 PayoutFunctionPieces',\n );\n for (const [i, piece] of payoutFunction.payoutFunctionPieces.entries()) {\n assert(\n piece.payoutCurvePiece.payoutCurvePieceType ===\n PayoutCurvePieceType.Polynomial ||\n piece.payoutCurvePiece.type === MessageType.PolynomialPayoutCurvePiece,\n 'CSO Payout Function PayoutCurvePieces must be PolynomialCurvePieces',\n );\n\n const payoutCurvePiece = piece.payoutCurvePiece as PolynomialPayoutCurvePiece;\n const points = payoutCurvePiece.points;\n\n // eventOutcome should always be ascending\n assert(\n points[0].eventOutcome < points[1].eventOutcome,\n 'CSO Payout Function PayoutCurvePiece point payout should be an ascending line',\n );\n\n // endpoints should always be ascending\n let previousPiece, previousPoints;\n if (i > 0) {\n previousPiece = payoutFunction.payoutFunctionPieces[i - 1];\n previousPoints = previousPiece.payoutCurvePiece.points;\n assert(\n previousPiece.endPoint.eventOutcome < piece.endPoint.eventOutcome,\n 'CSO Payout Function point endpoints should be an ascending line',\n );\n assert(\n previousPoints[1].outcomePayout === points[0].outcomePayout,\n 'CSO Payout Function point outcome payout should be continuous without gaps',\n );\n }\n\n switch (i) {\n case 0:\n // First piece - should start from initial endpoint\n // maxLoss should be a flat line\n assert(\n points[0].outcomePayout === points[1].outcomePayout,\n 'CSO Payout Function maxLoss PayoutCurvePiece point should be a flat line',\n );\n break;\n case 1:\n // maxLoss to maxGain should be an ascending line\n assert(\n previousPiece.endPoint.outcomePayout < piece.endPoint.outcomePayout,\n );\n assert(\n points[0].outcomePayout < points[1].outcomePayout,\n 'CSO Payout Function maxLoss to maxGain PayoutCurvePiece point should be an ascending line',\n );\n break;\n case 2:\n // maxGain should be a flat line\n assert(\n previousPiece.endPoint.outcomePayout === piece.endPoint.outcomePayout,\n );\n assert(\n points[0].outcomePayout === points[1].outcomePayout,\n 'CSO Payout Function maxGain PayoutCurvePiece point should be a flat line',\n );\n break;\n }\n }\n};\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"88ece8955cc916a58837fe82246f3ad0469d777a","contentHash":"50e0a8dfbe1f21485147d4462544feaef2202a838307dbca392f70550e365b2a"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/OptionInfo.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/OptionInfo.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":80}},"4":{"start":{"line":7,"column":20},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":63}},"6":{"start":{"line":9,"column":31},"end":{"line":9,"column":65}},"7":{"start":{"line":10,"column":22},"end":{"line":10,"column":46}},"8":{"start":{"line":11,"column":19},"end":{"line":11,"column":40}},"9":{"start":{"line":13,"column":4},"end":{"line":14,"column":67}},"10":{"start":{"line":14,"column":8},"end":{"line":14,"column":67}},"11":{"start":{"line":15,"column":25},"end":{"line":15,"column":38}},"12":{"start":{"line":16,"column":4},"end":{"line":18,"column":62}},"13":{"start":{"line":18,"column":8},"end":{"line":18,"column":62}},"14":{"start":{"line":19,"column":23},"end":{"line":19,"column":46}},"15":{"start":{"line":23,"column":4},"end":{"line":50,"column":5}},"16":{"start":{"line":25,"column":37},"end":{"line":25,"column":47}},"17":{"start":{"line":26,"column":12},"end":{"line":27,"column":77}},"18":{"start":{"line":28,"column":12},"end":{"line":29,"column":33}},"19":{"start":{"line":30,"column":12},"end":{"line":33,"column":13}},"20":{"start":{"line":32,"column":16},"end":{"line":32,"column":92}},"21":{"start":{"line":34,"column":12},"end":{"line":34,"column":18}},"22":{"start":{"line":37,"column":36},"end":{"line":37,"column":46}},"23":{"start":{"line":38,"column":12},"end":{"line":39,"column":80}},"24":{"start":{"line":40,"column":12},"end":{"line":41,"column":33}},"25":{"start":{"line":42,"column":12},"end":{"line":45,"column":13}},"26":{"start":{"line":44,"column":16},"end":{"line":44,"column":92}},"27":{"start":{"line":46,"column":12},"end":{"line":46,"column":18}},"28":{"start":{"line":49,"column":12},"end":{"line":49,"column":72}},"29":{"start":{"line":51,"column":57},"end":{"line":51,"column":72}},"30":{"start":{"line":52,"column":31},"end":{"line":52,"column":62}},"31":{"start":{"line":53,"column":4},"end":{"line":54,"column":63}},"32":{"start":{"line":54,"column":8},"end":{"line":54,"column":63}},"33":{"start":{"line":55,"column":27},"end":{"line":55,"column":60}},"34":{"start":{"line":56,"column":4},"end":{"line":57,"column":82}},"35":{"start":{"line":57,"column":8},"end":{"line":57,"column":82}},"36":{"start":{"line":58,"column":4},"end":{"line":59,"column":71}},"37":{"start":{"line":59,"column":8},"end":{"line":59,"column":71}},"38":{"start":{"line":60,"column":29},"end":{"line":61,"column":25}},"39":{"start":{"line":62,"column":4},"end":{"line":63,"column":57}},"40":{"start":{"line":63,"column":8},"end":{"line":63,"column":57}},"41":{"start":{"line":64,"column":4},"end":{"line":65,"column":74}},"42":{"start":{"line":65,"column":8},"end":{"line":65,"column":74}},"43":{"start":{"line":66,"column":18},"end":{"line":66,"column":100}},"44":{"start":{"line":67,"column":23},"end":{"line":67,"column":109}},"45":{"start":{"line":69,"column":26},"end":{"line":69,"column":87}},"46":{"start":{"line":70,"column":24},"end":{"line":70,"column":77}},"47":{"start":{"line":71,"column":19},"end":{"line":71,"column":54}},"48":{"start":{"line":72,"column":28},"end":{"line":72,"column":56}},"49":{"start":{"line":74,"column":25},"end":{"line":78,"column":75}},"50":{"start":{"line":79,"column":24},"end":{"line":79,"column":88}},"51":{"start":{"line":81,"column":41},"end":{"line":83,"column":99}},"52":{"start":{"line":84,"column":17},"end":{"line":84,"column":45}},"53":{"start":{"line":85,"column":4},"end":{"line":86,"column":109}},"54":{"start":{"line":86,"column":8},"end":{"line":86,"column":109}},"55":{"start":{"line":87,"column":4},"end":{"line":87,"column":55}},"56":{"start":{"line":89,"column":0},"end":{"line":89,"column":70}},"57":{"start":{"line":91,"column":4},"end":{"line":93,"column":72}},"58":{"start":{"line":93,"column":8},"end":{"line":93,"column":72}},"59":{"start":{"line":94,"column":20},"end":{"line":94,"column":78}},"60":{"start":{"line":95,"column":4},"end":{"line":98,"column":6}},"61":{"start":{"line":100,"column":0},"end":{"line":100,"column":56}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"getOptionInfoFromContractInfo","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":38}},"loc":{"start":{"line":12,"column":54},"end":{"line":88,"column":1}},"line":12},"2":{"name":"getOptionInfoFromOffer","decl":{"start":{"line":90,"column":9},"end":{"line":90,"column":31}},"loc":{"start":{"line":90,"column":39},"end":{"line":99,"column":1}},"line":90}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3},"3":{"loc":{"start":{"line":13,"column":4},"end":{"line":14,"column":67}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":14,"column":67}},{"start":{"line":13,"column":4},"end":{"line":14,"column":67}}],"line":13},"4":{"loc":{"start":{"line":16,"column":4},"end":{"line":18,"column":62}},"type":"if","locations":[{"start":{"line":16,"column":4},"end":{"line":18,"column":62}},{"start":{"line":16,"column":4},"end":{"line":18,"column":62}}],"line":16},"5":{"loc":{"start":{"line":23,"column":4},"end":{"line":50,"column":5}},"type":"switch","locations":[{"start":{"line":24,"column":8},"end":{"line":35,"column":9}},{"start":{"line":36,"column":8},"end":{"line":47,"column":9}},{"start":{"line":48,"column":8},"end":{"line":49,"column":72}}],"line":23},"6":{"loc":{"start":{"line":30,"column":12},"end":{"line":33,"column":13}},"type":"if","locations":[{"start":{"line":30,"column":12},"end":{"line":33,"column":13}},{"start":{"line":30,"column":12},"end":{"line":33,"column":13}}],"line":30},"7":{"loc":{"start":{"line":42,"column":12},"end":{"line":45,"column":13}},"type":"if","locations":[{"start":{"line":42,"column":12},"end":{"line":45,"column":13}},{"start":{"line":42,"column":12},"end":{"line":45,"column":13}}],"line":42},"8":{"loc":{"start":{"line":53,"column":4},"end":{"line":54,"column":63}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":54,"column":63}},{"start":{"line":53,"column":4},"end":{"line":54,"column":63}}],"line":53},"9":{"loc":{"start":{"line":56,"column":4},"end":{"line":57,"column":82}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":57,"column":82}},{"start":{"line":56,"column":4},"end":{"line":57,"column":82}}],"line":56},"10":{"loc":{"start":{"line":58,"column":4},"end":{"line":59,"column":71}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":59,"column":71}},{"start":{"line":58,"column":4},"end":{"line":59,"column":71}}],"line":58},"11":{"loc":{"start":{"line":62,"column":4},"end":{"line":63,"column":57}},"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":63,"column":57}},{"start":{"line":62,"column":4},"end":{"line":63,"column":57}}],"line":62},"12":{"loc":{"start":{"line":64,"column":4},"end":{"line":65,"column":74}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":65,"column":74}},{"start":{"line":64,"column":4},"end":{"line":65,"column":74}}],"line":64},"13":{"loc":{"start":{"line":64,"column":8},"end":{"line":64,"column":68}},"type":"binary-expr","locations":[{"start":{"line":64,"column":8},"end":{"line":64,"column":36}},{"start":{"line":64,"column":40},"end":{"line":64,"column":68}}],"line":64},"14":{"loc":{"start":{"line":74,"column":25},"end":{"line":78,"column":75}},"type":"cond-expr","locations":[{"start":{"line":75,"column":10},"end":{"line":76,"column":27}},{"start":{"line":77,"column":10},"end":{"line":78,"column":75}}],"line":74},"15":{"loc":{"start":{"line":81,"column":41},"end":{"line":83,"column":99}},"type":"cond-expr","locations":[{"start":{"line":82,"column":10},"end":{"line":82,"column":110}},{"start":{"line":83,"column":10},"end":{"line":83,"column":99}}],"line":81},"16":{"loc":{"start":{"line":84,"column":17},"end":{"line":84,"column":45}},"type":"cond-expr","locations":[{"start":{"line":84,"column":31},"end":{"line":84,"column":36}},{"start":{"line":84,"column":39},"end":{"line":84,"column":45}}],"line":84},"17":{"loc":{"start":{"line":85,"column":4},"end":{"line":86,"column":109}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":86,"column":109}},{"start":{"line":85,"column":4},"end":{"line":86,"column":109}}],"line":85},"18":{"loc":{"start":{"line":91,"column":4},"end":{"line":93,"column":72}},"type":"if","locations":[{"start":{"line":91,"column":4},"end":{"line":93,"column":72}},{"start":{"line":91,"column":4},"end":{"line":93,"column":72}}],"line":91},"19":{"loc":{"start":{"line":91,"column":8},"end":{"line":92,"column":57}},"type":"binary-expr","locations":[{"start":{"line":91,"column":8},"end":{"line":91,"column":55}},{"start":{"line":92,"column":8},"end":{"line":92,"column":57}}],"line":91}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":6,"10":0,"11":6,"12":6,"13":0,"14":6,"15":6,"16":6,"17":6,"18":6,"19":6,"20":0,"21":6,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":6,"30":6,"31":6,"32":0,"33":6,"34":6,"35":0,"36":6,"37":0,"38":6,"39":6,"40":0,"41":6,"42":0,"43":6,"44":6,"45":6,"46":6,"47":6,"48":6,"49":6,"50":6,"51":6,"52":6,"53":6,"54":2,"55":4,"56":1,"57":4,"58":0,"59":4,"60":4,"61":1},"f":{"0":1,"1":6,"2":4},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1],"3":[0,6],"4":[0,6],"5":[6,0,0],"6":[0,6],"7":[0,0],"8":[0,6],"9":[0,6],"10":[0,6],"11":[0,6],"12":[0,6],"13":[6,6],"14":[4,2],"15":[4,2],"16":[4,2],"17":[2,4],"18":[0,4],"19":[4,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/OptionInfo.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/core/lib/dlc/finance/OptionInfo.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ContractDescriptorType,\n ContractInfo,\n DigitDecompositionEventDescriptor,\n HyperbolaPayoutCurvePiece,\n MessageType,\n MultiOracleInfo,\n NumericalDescriptor,\n PayoutCurvePieceType,\n PayoutFunction,\n SingleContractInfo,\n SingleOracleInfo,\n} from '@node-dlc/messaging';\nimport BN from 'bignumber.js';\n\nimport { HyperbolaPayoutCurve } from '../HyperbolaPayoutCurve';\nimport { CoveredCall } from './CoveredCall';\nimport { ShortPut } from './ShortPut';\n\nexport interface OptionInfo {\n contractSize: bigint;\n strikePrice: bigint;\n premium?: bigint;\n type?: OptionType;\n expiry: Date;\n}\n\nexport type HasOfferCollateral = {\n offerCollateral: bigint;\n};\n\nexport type HasContractInfo = {\n contractInfo: ContractInfo;\n};\n\nexport type HasType = {\n type: MessageType;\n};\n\nexport type OptionType = 'put' | 'call';\n\nexport function getOptionInfoFromContractInfo(\n _contractInfo: ContractInfo,\n): OptionInfo {\n if (_contractInfo.type !== MessageType.SingleContractInfo)\n throw Error('Only SingleContractInfo currently supported');\n\n const contractInfo = _contractInfo as SingleContractInfo;\n if (\n contractInfo.contractDescriptor.contractDescriptorType !==\n ContractDescriptorType.NumericOutcome\n )\n throw Error('Numeric Descriptor currently supported');\n\n const oracleInfo = contractInfo.oracleInfo;\n\n // Handle both SingleOracleInfo and MultiOracleInfo using proper type discrimination\n let eventMaturityEpoch: number;\n let eventDescriptor: DigitDecompositionEventDescriptor;\n\n switch (oracleInfo.type) {\n case MessageType.SingleOracleInfo: {\n const singleOracleInfo = oracleInfo as SingleOracleInfo;\n eventMaturityEpoch =\n singleOracleInfo.announcement.oracleEvent.eventMaturityEpoch;\n eventDescriptor = singleOracleInfo.announcement.oracleEvent\n .eventDescriptor as DigitDecompositionEventDescriptor;\n\n if (\n singleOracleInfo.announcement.oracleEvent.eventDescriptor.type !==\n MessageType.DigitDecompositionEventDescriptorV0\n ) {\n throw Error(\n 'Only DigitDecompositionEventDescriptorV0 currently supported',\n );\n }\n break;\n }\n case MessageType.MultiOracleInfo: {\n const multiOracleInfo = oracleInfo as MultiOracleInfo;\n eventMaturityEpoch =\n multiOracleInfo.announcements[0].oracleEvent.eventMaturityEpoch;\n eventDescriptor = multiOracleInfo.announcements[0].oracleEvent\n .eventDescriptor as DigitDecompositionEventDescriptor;\n\n if (\n multiOracleInfo.announcements[0].oracleEvent.eventDescriptor.type !==\n MessageType.DigitDecompositionEventDescriptorV0\n ) {\n throw Error(\n 'Only DigitDecompositionEventDescriptorV0 currently supported',\n );\n }\n break;\n }\n default:\n throw Error(`Unknown oracle info type: ${oracleInfo.type}`);\n }\n\n const { base: oracleBase, nbDigits: oracleDigits } = eventDescriptor;\n\n const contractDescriptor = contractInfo.contractDescriptor as NumericalDescriptor;\n if (contractDescriptor.payoutFunction.type !== MessageType.PayoutFunction)\n throw Error('Only PayoutFunction currently supported');\n\n const payoutFunction = contractDescriptor.payoutFunction as PayoutFunction;\n if (payoutFunction.payoutFunctionPieces.length === 0)\n throw Error('PayoutFunction must have at least once PayoutFunctionPiece');\n if (payoutFunction.payoutFunctionPieces.length > 1)\n throw Error('More than one PayoutFunctionPiece not supported');\n\n const payoutCurvePiece = payoutFunction.payoutFunctionPieces[0]\n .payoutCurvePiece as HyperbolaPayoutCurvePiece;\n if (payoutCurvePiece.payoutCurvePieceType !== PayoutCurvePieceType.Hyperbola)\n throw Error('Must be HyperbolaPayoutCurvePiece');\n if (!payoutCurvePiece.b.isZero() || !payoutCurvePiece.c.isZero())\n throw Error('b and c HyperbolaPayoutCurvePiece values must be 0');\n\n const curve = HyperbolaPayoutCurve.fromPayoutCurvePiece(payoutCurvePiece);\n const maxOutcome = BigInt(\n new BN(oracleBase).pow(oracleDigits).minus(1).toString(10),\n );\n\n // For the new PayoutFunction structure, we need to get the initial payout from the first piece\n const initialPayout =\n payoutFunction.payoutFunctionPieces[0].endPoint.outcomePayout;\n const isAscending = curve.getPayout(maxOutcome).gt(Number(initialPayout));\n\n const expiry = new Date(eventMaturityEpoch * 1000);\n const totalCollateral = contractInfo.totalCollateral;\n\n // if curve is ascending, assume it is a put.\n const contractSize = isAscending\n ? BigInt(payoutCurvePiece.translatePayout.toDecimal().toString()) -\n totalCollateral\n : totalCollateral -\n BigInt(payoutCurvePiece.translatePayout.toDecimal().toString());\n\n const strikePrice =\n BigInt(payoutCurvePiece.d.toDecimal().toString()) / contractSize;\n\n // rebuild payout curve from option info and perform a sanity check\n const { payoutCurve: sanityCurve } = isAscending\n ? ShortPut.buildCurve(\n strikePrice,\n contractSize,\n totalCollateral,\n oracleBase,\n oracleDigits,\n )\n : CoveredCall.buildCurve(\n strikePrice,\n contractSize,\n oracleBase,\n oracleDigits,\n );\n const type = isAscending ? 'put' : 'call';\n\n if (!curve.equals(sanityCurve))\n throw new Error(\n 'Payout curve built from extracted OptionInfo does not match original payout curve',\n );\n\n return { contractSize, strikePrice, expiry, type };\n}\n\nexport function getOptionInfoFromOffer(\n offer: HasOfferCollateral & HasContractInfo & HasType,\n): OptionInfo {\n if (\n offer.type !== MessageType.DlcOffer &&\n offer.type !== MessageType.OrderOffer\n )\n throw Error('Only DlcOffer and OrderOffer currently supported');\n\n const premium = offer.contractInfo.totalCollateral - offer.offerCollateral;\n\n return {\n ...getOptionInfoFromContractInfo(offer.contractInfo),\n premium,\n };\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"bd4c15ad4e6f16059d0aa5c6a8537f97acef2205","contentHash":"c4f04f960aea63a5b7620d7723fb77e4aa933e1e899fd6a9826a3fde59538f68"}}
|