@atomicfinance/bitcoin-wallet-provider 4.1.0 → 4.1.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 +4 -5
- package/CHANGELOG.md +14 -0
- package/package.json +6 -6
- package/.turbo/turbo-lint$colon$fix.log +0 -5
- package/.turbo/turbo-lint.log +0 -5
- package/.turbo/turbo-test.log +0 -0
- package/.yalc/@node-dlc/core/.nyc_output/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +0 -1
- package/.yalc/@node-dlc/core/.nyc_output/processinfo/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +0 -1
- package/.yalc/@node-dlc/core/.nyc_output/processinfo/index.json +0 -1
- package/.yalc/@node-dlc/core/README.md +0 -11
- package/.yalc/@node-dlc/core/__tests__/core.spec.ts +0 -7
- package/.yalc/@node-dlc/core/__tests__/dlc/CETCalculator.spec.ts +0 -1029
- package/.yalc/@node-dlc/core/__tests__/dlc/CoinSelect.spec.ts +0 -179
- package/.yalc/@node-dlc/core/__tests__/dlc/PolynomialPayoutCurve.spec.ts +0 -345
- package/.yalc/@node-dlc/core/__tests__/dlc/TxBuilder.spec.ts +0 -424
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/Builder.spec.ts +0 -492
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/CoveredCall.spec.ts +0 -112
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/CsoInfo.spec.ts +0 -1124
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongCall.spec.ts +0 -55
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongPut.spec.ts +0 -55
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/OptionInfo.spec.ts +0 -226
- package/.yalc/@node-dlc/core/__tests__/dlc/finance/ShortPut.spec.ts +0 -62
- package/.yalc/@node-dlc/core/__tests__/tsconfig.json +0 -8
- package/.yalc/@node-dlc/core/__tests__/utils/precision.spec.ts +0 -40
- package/.yalc/@node-dlc/core/coverage/lcov-report/base.css +0 -224
- package/.yalc/@node-dlc/core/coverage/lcov-report/block-navigation.js +0 -79
- package/.yalc/@node-dlc/core/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/index.html +0 -171
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/AsyncProcessingQueue.ts.html +0 -269
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Base32.ts.html +0 -86
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BigIntUtils.ts.html +0 -86
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BitField.ts.html +0 -86
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ChannelId.ts.html +0 -86
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedList.ts.html +0 -413
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedListNode.ts.html +0 -122
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Queue.ts.html +0 -188
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelId.ts.html +0 -86
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelIdUtils.ts.html +0 -107
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CETCalculator.ts.html +0 -1430
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CoinSelect.ts.html +0 -431
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/HyperbolaPayoutCurve.ts.html +0 -644
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/PolynomialPayoutCurve.ts.html +0 -878
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxBuilder.ts.html +0 -1088
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxFinalizer.ts.html +0 -731
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/Builder.ts.html +0 -2270
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CoveredCall.ts.html +0 -410
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CsoInfo.ts.html +0 -1574
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LinearPayout.ts.html +0 -362
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongCall.ts.html +0 -302
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongPut.ts.html +0 -302
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/OptionInfo.ts.html +0 -626
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/ShortPut.ts.html +0 -305
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/index.html +0 -216
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/index.html +0 -186
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.html +0 -261
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.ts.html +0 -278
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelId.ts.html +0 -242
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelKeys.ts.html +0 -407
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentNumber.ts.html +0 -362
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecret.ts.html +0 -203
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecretStore.ts.html +0 -332
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/Htlc.ts.html +0 -236
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/HtlcDirection.ts.html +0 -131
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ScriptFactory.ts.html +0 -530
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/TxFactory.ts.html +0 -1094
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/index.html +0 -231
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/BigIntUtils.ts.html +0 -272
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/Precision.ts.html +0 -149
- package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/index.html +0 -126
- package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.css +0 -1
- package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.js +0 -2
- package/.yalc/@node-dlc/core/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/core/coverage/lcov-report/sorter.js +0 -170
- package/.yalc/@node-dlc/core/coverage/lcov.info +0 -2426
- package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.d.ts +0 -22
- package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js +0 -55
- package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/Base32.d.ts +0 -1
- package/.yalc/@node-dlc/core/dist/Base32.js +0 -7
- package/.yalc/@node-dlc/core/dist/Base32.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/BigIntUtils.d.ts +0 -1
- package/.yalc/@node-dlc/core/dist/BigIntUtils.js +0 -8
- package/.yalc/@node-dlc/core/dist/BigIntUtils.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/BitField.d.ts +0 -1
- package/.yalc/@node-dlc/core/dist/BitField.js +0 -7
- package/.yalc/@node-dlc/core/dist/BitField.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/ChannelId.d.ts +0 -1
- package/.yalc/@node-dlc/core/dist/ChannelId.js +0 -7
- package/.yalc/@node-dlc/core/dist/ChannelId.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/LinkedList.d.ts +0 -30
- package/.yalc/@node-dlc/core/dist/LinkedList.js +0 -104
- package/.yalc/@node-dlc/core/dist/LinkedList.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/LinkedListNode.d.ts +0 -9
- package/.yalc/@node-dlc/core/dist/LinkedListNode.js +0 -15
- package/.yalc/@node-dlc/core/dist/LinkedListNode.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/Queue.d.ts +0 -22
- package/.yalc/@node-dlc/core/dist/Queue.js +0 -38
- package/.yalc/@node-dlc/core/dist/Queue.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/ShortChannelId.d.ts +0 -1
- package/.yalc/@node-dlc/core/dist/ShortChannelId.js +0 -7
- package/.yalc/@node-dlc/core/dist/ShortChannelId.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.d.ts +0 -1
- package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js +0 -12
- package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.d.ts +0 -50
- package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js +0 -332
- package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.d.ts +0 -23
- package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js +0 -77
- package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.d.ts +0 -20
- package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js +0 -117
- package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.d.ts +0 -5
- package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js +0 -3
- package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.d.ts +0 -52
- package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js +0 -173
- package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.d.ts +0 -55
- package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js +0 -217
- package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.d.ts +0 -40
- package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js +0 -146
- package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.d.ts +0 -193
- package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js +0 -422
- package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.d.ts +0 -13
- package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js +0 -67
- package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.d.ts +0 -114
- package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js +0 -290
- package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.d.ts +0 -6
- package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js +0 -79
- package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.d.ts +0 -13
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js +0 -47
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.d.ts +0 -13
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js +0 -47
- package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.d.ts +0 -20
- package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js +0 -101
- package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.d.ts +0 -12
- package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js +0 -46
- package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/index.d.ts +0 -39
- package/.yalc/@node-dlc/core/dist/index.js +0 -78
- package/.yalc/@node-dlc/core/dist/index.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/ChannelId.d.ts +0 -31
- package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js +0 -52
- package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.d.ts +0 -55
- package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js +0 -105
- package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.d.ts +0 -55
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js +0 -76
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.d.ts +0 -26
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js +0 -44
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.d.ts +0 -41
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js +0 -79
- package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/Htlc.d.ts +0 -46
- package/.yalc/@node-dlc/core/dist/lightning/Htlc.js +0 -46
- package/.yalc/@node-dlc/core/dist/lightning/Htlc.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.d.ts +0 -16
- package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js +0 -21
- package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.d.ts +0 -76
- package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js +0 -102
- package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/lightning/TxFactory.d.ts +0 -83
- package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js +0 -222
- package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.d.ts +0 -9
- package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js +0 -59
- package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js.map +0 -1
- package/.yalc/@node-dlc/core/dist/utils/Precision.d.ts +0 -13
- package/.yalc/@node-dlc/core/dist/utils/Precision.js +0 -28
- package/.yalc/@node-dlc/core/dist/utils/Precision.js.map +0 -1
- package/.yalc/@node-dlc/core/lib/AsyncProcessingQueue.ts +0 -63
- package/.yalc/@node-dlc/core/lib/Base32.ts +0 -2
- package/.yalc/@node-dlc/core/lib/BigIntUtils.ts +0 -2
- package/.yalc/@node-dlc/core/lib/BitField.ts +0 -2
- package/.yalc/@node-dlc/core/lib/ChannelId.ts +0 -2
- package/.yalc/@node-dlc/core/lib/LinkedList.ts +0 -111
- package/.yalc/@node-dlc/core/lib/LinkedListNode.ts +0 -14
- package/.yalc/@node-dlc/core/lib/Queue.ts +0 -36
- package/.yalc/@node-dlc/core/lib/ShortChannelId.ts +0 -2
- package/.yalc/@node-dlc/core/lib/ShortChannelIdUtils.ts +0 -9
- package/.yalc/@node-dlc/core/lib/dlc/CETCalculator.ts +0 -450
- package/.yalc/@node-dlc/core/lib/dlc/CoinSelect.ts +0 -117
- package/.yalc/@node-dlc/core/lib/dlc/HyperbolaPayoutCurve.ts +0 -188
- package/.yalc/@node-dlc/core/lib/dlc/PayoutCurve.ts +0 -6
- package/.yalc/@node-dlc/core/lib/dlc/PolynomialPayoutCurve.ts +0 -266
- package/.yalc/@node-dlc/core/lib/dlc/TxBuilder.ts +0 -336
- package/.yalc/@node-dlc/core/lib/dlc/TxFinalizer.ts +0 -217
- package/.yalc/@node-dlc/core/lib/dlc/finance/Builder.ts +0 -730
- package/.yalc/@node-dlc/core/lib/dlc/finance/CoveredCall.ts +0 -110
- package/.yalc/@node-dlc/core/lib/dlc/finance/CsoInfo.ts +0 -498
- package/.yalc/@node-dlc/core/lib/dlc/finance/LinearPayout.ts +0 -94
- package/.yalc/@node-dlc/core/lib/dlc/finance/LongCall.ts +0 -74
- package/.yalc/@node-dlc/core/lib/dlc/finance/LongPut.ts +0 -74
- package/.yalc/@node-dlc/core/lib/dlc/finance/OptionInfo.ts +0 -182
- package/.yalc/@node-dlc/core/lib/dlc/finance/ShortPut.ts +0 -75
- package/.yalc/@node-dlc/core/lib/index.ts +0 -66
- package/.yalc/@node-dlc/core/lib/lightning/ChannelId.ts +0 -54
- package/.yalc/@node-dlc/core/lib/lightning/ChannelKeys.ts +0 -109
- package/.yalc/@node-dlc/core/lib/lightning/CommitmentNumber.ts +0 -94
- package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecret.ts +0 -41
- package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecretStore.ts +0 -84
- package/.yalc/@node-dlc/core/lib/lightning/Htlc.ts +0 -52
- package/.yalc/@node-dlc/core/lib/lightning/HtlcDirection.ts +0 -17
- package/.yalc/@node-dlc/core/lib/lightning/ScriptFactory.ts +0 -150
- package/.yalc/@node-dlc/core/lib/lightning/TxFactory.ts +0 -338
- package/.yalc/@node-dlc/core/lib/utils/BigIntUtils.ts +0 -64
- package/.yalc/@node-dlc/core/lib/utils/Precision.ts +0 -23
- package/.yalc/@node-dlc/core/package.json +0 -38
- package/.yalc/@node-dlc/core/tsconfig.json +0 -8
- package/.yalc/@node-dlc/core/yalc.sig +0 -1
- package/yalc.lock +0 -10
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.buildRoundingIntervalsFromIntervals = exports.buildCustomStrategyOrderOffer = exports.buildLinearOrderOffer = exports.buildLongPutOrderOffer = exports.buildLongCallOrderOffer = exports.buildShortPutOrderOffer = exports.buildCoveredCallOrderOffer = exports.buildOptionOrderOffer = exports.buildOrderOffer = exports.getDigitDecompositionEventDescriptor = exports.computeRoundingModulus = exports.roundDownToNearestMultiplier = exports.roundUpToNearestMultiplier = exports.roundToNearestMultiplier = exports.UNIT_MULTIPLIER = void 0;
|
|
7
|
-
const bitcoin_1 = require("@node-dlc/bitcoin");
|
|
8
|
-
const messaging_1 = require("@node-dlc/messaging");
|
|
9
|
-
const bitcoin_networks_1 = require("bitcoin-networks");
|
|
10
|
-
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
11
|
-
const CoinSelect_1 = require("../CoinSelect");
|
|
12
|
-
const TxFinalizer_1 = require("../TxFinalizer");
|
|
13
|
-
const CoveredCall_1 = require("./CoveredCall");
|
|
14
|
-
const LinearPayout_1 = require("./LinearPayout");
|
|
15
|
-
const LongCall_1 = require("./LongCall");
|
|
16
|
-
const LongPut_1 = require("./LongPut");
|
|
17
|
-
const ShortPut_1 = require("./ShortPut");
|
|
18
|
-
exports.UNIT_MULTIPLIER = {
|
|
19
|
-
bits: BigInt(1e2),
|
|
20
|
-
sats: BigInt(1),
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Round a number to the nearest multiple of a given multiplier.
|
|
24
|
-
*
|
|
25
|
-
* @param num - The number to be rounded.
|
|
26
|
-
* @param multiplier - The multiplier to round to.
|
|
27
|
-
* @returns The number rounded to the nearest multiple of the multiplier.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* // Example: rounding to nearest 100
|
|
32
|
-
* const number = BigInt(354);
|
|
33
|
-
* const multiplier = BigInt(100);
|
|
34
|
-
* const roundedNumber = roundToNearestMultiplier(number, multiplier);
|
|
35
|
-
* console.log(roundedNumber); // Output: 300
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
const roundToNearestMultiplier = (num, multiplier) => (num / multiplier) * multiplier;
|
|
39
|
-
exports.roundToNearestMultiplier = roundToNearestMultiplier;
|
|
40
|
-
/**
|
|
41
|
-
* Round a number up to the nearest multiple of a given multiplier.
|
|
42
|
-
*
|
|
43
|
-
* @param num - The number to be rounded.
|
|
44
|
-
* @param multiplier - The multiplier to round to.
|
|
45
|
-
* @returns The number rounded up to the nearest multiple of the multiplier.
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* ```typescript
|
|
49
|
-
* // Example: rounding up to nearest 100
|
|
50
|
-
* const number = BigInt(354);
|
|
51
|
-
* const multiplier = BigInt(100);
|
|
52
|
-
* const roundedNumber = roundToNearestMultiplier(number, multiplier);
|
|
53
|
-
* console.log(roundedNumber); // Output: 400
|
|
54
|
-
* ```
|
|
55
|
-
*/
|
|
56
|
-
const roundUpToNearestMultiplier = (num, multiplier) => ((num + multiplier - BigInt(1)) / multiplier) * multiplier;
|
|
57
|
-
exports.roundUpToNearestMultiplier = roundUpToNearestMultiplier;
|
|
58
|
-
const roundDownToNearestMultiplier = (num, multiplier) => num - (num % multiplier);
|
|
59
|
-
exports.roundDownToNearestMultiplier = roundDownToNearestMultiplier;
|
|
60
|
-
/**
|
|
61
|
-
* Compute rounding intervals for a linear or hyperbola payout curve
|
|
62
|
-
*
|
|
63
|
-
* @param {number | bigint | Value} rounding rounding interval in sats
|
|
64
|
-
* @param {number | bigint | Value} contractSize contract size in sats
|
|
65
|
-
* @returns rounding mod for contract size
|
|
66
|
-
*/
|
|
67
|
-
const computeRoundingModulus = (rounding, contractSize) => {
|
|
68
|
-
const roundingInSats = rounding instanceof bitcoin_1.Value
|
|
69
|
-
? rounding.sats
|
|
70
|
-
: typeof rounding === 'number'
|
|
71
|
-
? BigInt(Math.round(rounding * 1e8)) // Convert bitcoin amount to satoshis
|
|
72
|
-
: rounding;
|
|
73
|
-
const contractSizeInSats = contractSize instanceof bitcoin_1.Value
|
|
74
|
-
? contractSize.sats
|
|
75
|
-
: typeof contractSize === 'number'
|
|
76
|
-
? BigInt(Math.round(contractSize * 1e8)) // Convert bitcoin amount to satoshis
|
|
77
|
-
: contractSize;
|
|
78
|
-
return (roundingInSats * contractSizeInSats) / BigInt(1e8);
|
|
79
|
-
};
|
|
80
|
-
exports.computeRoundingModulus = computeRoundingModulus;
|
|
81
|
-
/**
|
|
82
|
-
* Get digit decomposition event descriptor from oracle announcement
|
|
83
|
-
*
|
|
84
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
85
|
-
* @returns {DigitDecompositionEventDescriptorV0} event descriptor
|
|
86
|
-
*/
|
|
87
|
-
const getDigitDecompositionEventDescriptor = (announcement) => {
|
|
88
|
-
if (announcement.oracleEvent.eventDescriptor.type !==
|
|
89
|
-
messaging_1.MessageType.DigitDecompositionEventDescriptorV0)
|
|
90
|
-
throw Error('Only DigitDecompositionEventDescriptorV0 currently supported');
|
|
91
|
-
const eventDescriptor = announcement.oracleEvent
|
|
92
|
-
.eventDescriptor;
|
|
93
|
-
return eventDescriptor;
|
|
94
|
-
};
|
|
95
|
-
exports.getDigitDecompositionEventDescriptor = getDigitDecompositionEventDescriptor;
|
|
96
|
-
/**
|
|
97
|
-
* Build an orderoffer for ContractDescriptorV1
|
|
98
|
-
*
|
|
99
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
100
|
-
* @param {bigint} totalCollateral total collateral in satoshis
|
|
101
|
-
* @param {bigint} offerCollateral offer collateral in satoshis
|
|
102
|
-
* @param {PayoutFunction} payoutFunction
|
|
103
|
-
* @param {RoundingIntervals} roundingIntervals
|
|
104
|
-
* @param {bigint} feePerByte sats/vbyte
|
|
105
|
-
* @param {NetworkName} network
|
|
106
|
-
* @returns {OrderOffer} Returns order offer
|
|
107
|
-
*/
|
|
108
|
-
const buildOrderOffer = (announcement, totalCollateral, offerCollateral, payoutFunction, roundingIntervals, feePerByte, network) => {
|
|
109
|
-
const eventDescriptor = (0, exports.getDigitDecompositionEventDescriptor)(announcement);
|
|
110
|
-
const contractDescriptor = new messaging_1.NumericalDescriptor();
|
|
111
|
-
contractDescriptor.numDigits = eventDescriptor.nbDigits;
|
|
112
|
-
contractDescriptor.payoutFunction = payoutFunction;
|
|
113
|
-
contractDescriptor.roundingIntervals = roundingIntervals;
|
|
114
|
-
const oracleInfo = new messaging_1.SingleOracleInfo();
|
|
115
|
-
oracleInfo.announcement = announcement;
|
|
116
|
-
const contractInfo = new messaging_1.SingleContractInfo();
|
|
117
|
-
contractInfo.totalCollateral = totalCollateral;
|
|
118
|
-
contractInfo.contractDescriptor = contractDescriptor;
|
|
119
|
-
contractInfo.oracleInfo = oracleInfo;
|
|
120
|
-
const orderOffer = new messaging_1.OrderOffer();
|
|
121
|
-
// Set required fields for OrderOffer
|
|
122
|
-
orderOffer.contractFlags = Buffer.from('00', 'hex'); // Default contract flags
|
|
123
|
-
// Generate a random 32-byte temporary contract ID
|
|
124
|
-
orderOffer.temporaryContractId = Buffer.from(Array.from({ length: 32 }, () => Math.floor(Math.random() * 256)));
|
|
125
|
-
orderOffer.chainHash = (0, bitcoin_networks_1.chainHashFromNetwork)(bitcoin_networks_1.BitcoinNetworks[network]);
|
|
126
|
-
orderOffer.contractInfo = contractInfo;
|
|
127
|
-
orderOffer.offerCollateral = offerCollateral; // Use correct property name
|
|
128
|
-
orderOffer.feeRatePerVb = feePerByte;
|
|
129
|
-
orderOffer.cetLocktime = Math.floor(new Date().getTime() / 1000); // set to current time
|
|
130
|
-
orderOffer.refundLocktime =
|
|
131
|
-
announcement.oracleEvent.eventMaturityEpoch + 2419200; // 4 weeks after maturity
|
|
132
|
-
return orderOffer;
|
|
133
|
-
};
|
|
134
|
-
exports.buildOrderOffer = buildOrderOffer;
|
|
135
|
-
/**
|
|
136
|
-
* Builds an order offer for a covered call or short put
|
|
137
|
-
*
|
|
138
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
139
|
-
* @param {number} contractSize contract size in satoshis
|
|
140
|
-
* @param {number} strikePrice strike price of contract
|
|
141
|
-
* @param {number} premium premium of contract in satoshis
|
|
142
|
-
* @param {number | bigint} feePerByte sats/vbyte
|
|
143
|
-
* @param {number} rounding rounding interval
|
|
144
|
-
* @param {string} network bitcoin network type
|
|
145
|
-
* @param {string} type call or put
|
|
146
|
-
* @param {number} _totalCollateral total collateral in satoshis (applicable only for short put)
|
|
147
|
-
* @returns {OrderOffer} Returns order offer
|
|
148
|
-
*/
|
|
149
|
-
const buildOptionOrderOffer = (announcement, contractSize, strikePrice, premium, feePerByte, rounding, network, type, direction, _totalCollateral) => {
|
|
150
|
-
const eventDescriptor = (0, exports.getDigitDecompositionEventDescriptor)(announcement);
|
|
151
|
-
let totalCollateral;
|
|
152
|
-
let payoutFunctionInfo;
|
|
153
|
-
const roundingIntervals = new messaging_1.RoundingIntervals();
|
|
154
|
-
const roundingMod = (0, exports.computeRoundingModulus)(rounding, contractSize);
|
|
155
|
-
if (direction === 'short') {
|
|
156
|
-
if (type === 'call') {
|
|
157
|
-
payoutFunctionInfo = CoveredCall_1.CoveredCall.buildPayoutFunction(BigInt(strikePrice), contractSize.sats, eventDescriptor.base, eventDescriptor.nbDigits);
|
|
158
|
-
totalCollateral = payoutFunctionInfo.totalCollateral;
|
|
159
|
-
roundingIntervals.intervals = [
|
|
160
|
-
{
|
|
161
|
-
beginInterval: BigInt(0),
|
|
162
|
-
roundingMod: BigInt(1),
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
beginInterval: BigInt(strikePrice),
|
|
166
|
-
roundingMod,
|
|
167
|
-
},
|
|
168
|
-
];
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
payoutFunctionInfo = ShortPut_1.ShortPut.buildPayoutFunction(BigInt(strikePrice), contractSize.sats, _totalCollateral.sats, eventDescriptor.base, eventDescriptor.nbDigits);
|
|
172
|
-
totalCollateral = _totalCollateral.sats;
|
|
173
|
-
roundingIntervals.intervals = [
|
|
174
|
-
{
|
|
175
|
-
beginInterval: BigInt(0),
|
|
176
|
-
roundingMod,
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
beginInterval: BigInt(strikePrice),
|
|
180
|
-
roundingMod: BigInt(1),
|
|
181
|
-
},
|
|
182
|
-
];
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
totalCollateral = _totalCollateral.sats;
|
|
187
|
-
if (type === 'call') {
|
|
188
|
-
payoutFunctionInfo = LongCall_1.LongCall.buildPayoutFunction(BigInt(strikePrice), contractSize.sats, totalCollateral, eventDescriptor.base, eventDescriptor.nbDigits);
|
|
189
|
-
roundingIntervals.intervals = [
|
|
190
|
-
{
|
|
191
|
-
beginInterval: BigInt(0),
|
|
192
|
-
roundingMod: BigInt(1),
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
beginInterval: BigInt(strikePrice),
|
|
196
|
-
roundingMod,
|
|
197
|
-
},
|
|
198
|
-
];
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
payoutFunctionInfo = LongPut_1.LongPut.buildPayoutFunction(BigInt(strikePrice), contractSize.sats, totalCollateral, eventDescriptor.base, eventDescriptor.nbDigits);
|
|
202
|
-
roundingIntervals.intervals = [
|
|
203
|
-
{
|
|
204
|
-
beginInterval: BigInt(0),
|
|
205
|
-
roundingMod,
|
|
206
|
-
},
|
|
207
|
-
{
|
|
208
|
-
beginInterval: BigInt(strikePrice),
|
|
209
|
-
roundingMod: BigInt(1),
|
|
210
|
-
},
|
|
211
|
-
];
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
const payoutFunction = payoutFunctionInfo.payoutFunction;
|
|
215
|
-
const offerCollateral = direction === 'short' ? totalCollateral - premium.sats : premium.sats;
|
|
216
|
-
return (0, exports.buildOrderOffer)(announcement, totalCollateral, offerCollateral, payoutFunction, roundingIntervals, BigInt(feePerByte), network);
|
|
217
|
-
};
|
|
218
|
-
exports.buildOptionOrderOffer = buildOptionOrderOffer;
|
|
219
|
-
/**
|
|
220
|
-
* Builds an order offer for a covered call
|
|
221
|
-
*
|
|
222
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
223
|
-
* @param {number} contractSize contract size in satoshis
|
|
224
|
-
* @param {number} strikePrice strike price of contract
|
|
225
|
-
* @param {number} premium premium of contract in satoshis
|
|
226
|
-
* @param {number} feePerByte sats/vbyte
|
|
227
|
-
* @param {number} rounding rounding interval
|
|
228
|
-
* @param {string} network bitcoin network type
|
|
229
|
-
* @returns {OrderOffer} Returns order offer
|
|
230
|
-
*/
|
|
231
|
-
const buildCoveredCallOrderOffer = (announcement, contractSize, strikePrice, premium, feePerByte, rounding, network) => {
|
|
232
|
-
return (0, exports.buildOptionOrderOffer)(announcement, contractSize, strikePrice, premium, feePerByte, rounding, network, 'call', 'short');
|
|
233
|
-
};
|
|
234
|
-
exports.buildCoveredCallOrderOffer = buildCoveredCallOrderOffer;
|
|
235
|
-
/**
|
|
236
|
-
* Builds an order offer for a short put
|
|
237
|
-
*
|
|
238
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
239
|
-
* @param {number} contractSize contract size in satoshis
|
|
240
|
-
* @param {number} strikePrice strike price of contract
|
|
241
|
-
* @param {number} totalCollateral total collateral in satoshis
|
|
242
|
-
* @param {number} premium premium of contract in satoshis
|
|
243
|
-
* @param {number} feePerByte sats/vbyte
|
|
244
|
-
* @param {number} rounding rounding interval
|
|
245
|
-
* @param {string} network bitcoin network type
|
|
246
|
-
* @returns {OrderOffer} Returns order offer
|
|
247
|
-
*/
|
|
248
|
-
const buildShortPutOrderOffer = (announcement, contractSize, strikePrice, totalCollateral, premium, feePerByte, rounding, network) => {
|
|
249
|
-
return (0, exports.buildOptionOrderOffer)(announcement, contractSize, strikePrice, premium, feePerByte, rounding, network, 'put', 'short', totalCollateral);
|
|
250
|
-
};
|
|
251
|
-
exports.buildShortPutOrderOffer = buildShortPutOrderOffer;
|
|
252
|
-
/**
|
|
253
|
-
* Builds an order offer for a long call
|
|
254
|
-
*
|
|
255
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
256
|
-
* @param {number} contractSize contract size in satoshis
|
|
257
|
-
* @param {number} strikePrice strike price of contract
|
|
258
|
-
* @param {number} maxGain maximum amount that can be gained (totalCollateral)
|
|
259
|
-
* @param {number} premium premium of contract in satoshis
|
|
260
|
-
* @param {number} feePerByte sats/vbyte
|
|
261
|
-
* @param {number} rounding rounding interval
|
|
262
|
-
* @param {string} network bitcoin network type
|
|
263
|
-
* @returns {OrderOffer} Returns order offer
|
|
264
|
-
*/
|
|
265
|
-
const buildLongCallOrderOffer = (announcement, contractSize, strikePrice, maxGain, premium, feePerByte, rounding, network) => {
|
|
266
|
-
return (0, exports.buildOptionOrderOffer)(announcement, contractSize, strikePrice, premium, feePerByte, rounding, network, 'call', 'long', maxGain);
|
|
267
|
-
};
|
|
268
|
-
exports.buildLongCallOrderOffer = buildLongCallOrderOffer;
|
|
269
|
-
/**
|
|
270
|
-
* Builds an order offer for a long put
|
|
271
|
-
*
|
|
272
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
273
|
-
* @param {number} contractSize contract size in satoshis
|
|
274
|
-
* @param {number} strikePrice strike price of contract
|
|
275
|
-
* @param {number} maxGain maximum amount that can be gained (totalCollateral)
|
|
276
|
-
* @param {number} premium premium of contract in satoshis
|
|
277
|
-
* @param {number} feePerByte sats/vbyte
|
|
278
|
-
* @param {number} rounding rounding interval
|
|
279
|
-
* @param {string} network bitcoin network type
|
|
280
|
-
* @returns {OrderOffer} Returns order offer
|
|
281
|
-
*/
|
|
282
|
-
const buildLongPutOrderOffer = (announcement, contractSize, strikePrice, maxGain, premium, feePerByte, rounding, network) => {
|
|
283
|
-
return (0, exports.buildOptionOrderOffer)(announcement, contractSize, strikePrice, premium, feePerByte, rounding, network, 'put', 'long', maxGain);
|
|
284
|
-
};
|
|
285
|
-
exports.buildLongPutOrderOffer = buildLongPutOrderOffer;
|
|
286
|
-
/**
|
|
287
|
-
* Builds an order offer for a linear curve
|
|
288
|
-
*
|
|
289
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
290
|
-
* @param {Value} offerCollateral offer collateral amount
|
|
291
|
-
* @param {Value} minPayout minimum payout
|
|
292
|
-
* @param {Value} maxPayout maximum payout (also total collateral)
|
|
293
|
-
* @param {bigint} startOutcome oracle outcome (in bits or sats)
|
|
294
|
-
* @param {bigint} endOutcome oracle outcome (in bits or sats)
|
|
295
|
-
* @param {bigint} feePerByte sats/vbyte
|
|
296
|
-
* @param {Value} rounding rounding mod for RoundingInterval
|
|
297
|
-
* @param {BitcoinNetwork} network bitcoin, bitcoin_testnet or bitcoin_regtest
|
|
298
|
-
* @param {DlcParty} [shiftForFees] shift for offerer, acceptor or neither (who should pay fees)
|
|
299
|
-
* @param {Value} [fees] fees to shift
|
|
300
|
-
* @returns {OrderOffer}
|
|
301
|
-
*/
|
|
302
|
-
const buildLinearOrderOffer = (announcement, offerCollateral, minPayout, maxPayout, startOutcome, endOutcome, feePerByte, roundingIntervals, network, shiftForFees = 'neither', fees = bitcoin_1.Value.fromSats(0)) => {
|
|
303
|
-
if (maxPayout.lt(minPayout))
|
|
304
|
-
throw Error('maxPayout must be greater than minPayout');
|
|
305
|
-
if (endOutcome < startOutcome)
|
|
306
|
-
throw Error('endOutcome must be greater than startOutcome');
|
|
307
|
-
const eventDescriptor = (0, exports.getDigitDecompositionEventDescriptor)(announcement);
|
|
308
|
-
const totalCollateral = maxPayout.sats;
|
|
309
|
-
const { payoutFunction } = LinearPayout_1.LinearPayout.buildPayoutFunction(minPayout.sats, maxPayout.sats, startOutcome, endOutcome, eventDescriptor.base, eventDescriptor.nbDigits);
|
|
310
|
-
const orderOffer = (0, exports.buildOrderOffer)(announcement, totalCollateral, offerCollateral.sats, payoutFunction, roundingIntervals, feePerByte, network.name);
|
|
311
|
-
const positionInfo = new messaging_1.OrderPositionInfo();
|
|
312
|
-
positionInfo.shiftForFees = shiftForFees;
|
|
313
|
-
positionInfo.fees = shiftForFees === 'neither' ? BigInt(0) : fees.sats;
|
|
314
|
-
orderOffer.positionInfo = positionInfo;
|
|
315
|
-
return orderOffer;
|
|
316
|
-
};
|
|
317
|
-
exports.buildLinearOrderOffer = buildLinearOrderOffer;
|
|
318
|
-
/**
|
|
319
|
-
* Builds a custom strategy order offer
|
|
320
|
-
*
|
|
321
|
-
* Calculates offer fees
|
|
322
|
-
* calculates the minimum max gain
|
|
323
|
-
* maxLoss and maxGain are normalized to 1 BTC contracts
|
|
324
|
-
*
|
|
325
|
-
* shiftForFees 'offeror' means 'offeror' pays network fees
|
|
326
|
-
* shiftForFees 'acceptor' means 'acceptor' pays network fees
|
|
327
|
-
*
|
|
328
|
-
* numContracts refers to the number of DLCs in the funding transaction
|
|
329
|
-
* if it's not a batch dlc funding transaction, then this is not relevant
|
|
330
|
-
*
|
|
331
|
-
* @param {OracleAnnouncement} announcement oracle announcement
|
|
332
|
-
* @param {Value} contractSize contract size
|
|
333
|
-
* @param {Value} normalizedMaxLoss maximum amount that can be lost based on 1 BTC contract
|
|
334
|
-
* @param {Value} normalizedMaxGain maximum amount that can be gained based on 1 BTC contract
|
|
335
|
-
* @param {bigint} feePerByte sats/vbyte
|
|
336
|
-
* @param {Value} roundingIntervals rounding mod for RoundingInterval
|
|
337
|
-
* @param {BitcoinNetwork} network bitcoin, bitcoin_testnet or bitcoin_regtest
|
|
338
|
-
* @param {DlcParty} [shiftForFees] shift for offerer, acceptor or neither
|
|
339
|
-
* @param {Value} [fees_] fees to shift
|
|
340
|
-
* @param {Value} [collateral] collateral to use
|
|
341
|
-
* @param {number} [numOfferInputs] number of inputs to use
|
|
342
|
-
* @param {number} [numContracts] number of DLCs in the funding transaction
|
|
343
|
-
*
|
|
344
|
-
* @returns {OrderOffer}
|
|
345
|
-
*/
|
|
346
|
-
const buildCustomStrategyOrderOffer = (announcement, contractSize, normalizedMaxLoss, normalizedMaxGain, feePerByte, roundingIntervals, network, shiftForFees = 'neither', fees_ = bitcoin_1.Value.fromSats(0), // NOTE: fees should be divided before doing batch transaction
|
|
347
|
-
collateral = bitcoin_1.Value.fromSats(0), numOfferInputs = 1, numContracts = 1, skipValidation = false) => {
|
|
348
|
-
if (contractSize.eq(bitcoin_1.Value.zero())) {
|
|
349
|
-
throw Error('contractSize must be greater than 0');
|
|
350
|
-
}
|
|
351
|
-
if (collateral.eq(bitcoin_1.Value.zero())) {
|
|
352
|
-
collateral = contractSize.clone();
|
|
353
|
-
}
|
|
354
|
-
const eventDescriptor = (0, exports.getDigitDecompositionEventDescriptor)(announcement);
|
|
355
|
-
const unit = eventDescriptor.unit;
|
|
356
|
-
const fees = bitcoin_1.Value.fromSats(Number(new decimal_js_1.default(Number(fees_.sats)).dividedBy(numContracts).toFixed(0)));
|
|
357
|
-
const finalizer = (0, TxFinalizer_1.getFinalizerByCount)(feePerByte, numOfferInputs, 1, numContracts);
|
|
358
|
-
const offerFees = bitcoin_1.Value.fromSats(finalizer.offerFees);
|
|
359
|
-
// Use offerFees + dustThreshold for min max gain, to ensure in the case of
|
|
360
|
-
// 0 PnL the acceptor payout is not dust
|
|
361
|
-
const minMaxGainForContractSize_ = offerFees.addn(bitcoin_1.Value.fromSats((0, CoinSelect_1.dustThreshold)(BigInt(feePerByte))));
|
|
362
|
-
const minMaxGainForContractSize = bitcoin_1.Value.fromSats((0, exports.roundUpToNearestMultiplier)(minMaxGainForContractSize_.sats, BigInt(exports.UNIT_MULTIPLIER[unit.toLowerCase()])));
|
|
363
|
-
const maxLossForContractSize = bitcoin_1.Value.fromSats((0, exports.roundUpToNearestMultiplier)((normalizedMaxLoss.sats * contractSize.sats) / BigInt(1e8), BigInt(exports.UNIT_MULTIPLIER[unit.toLowerCase()])));
|
|
364
|
-
const tempMaxGainForContractSize = bitcoin_1.Value.fromSats((0, exports.roundUpToNearestMultiplier)((normalizedMaxGain.sats * contractSize.sats) / BigInt(1e8), BigInt(exports.UNIT_MULTIPLIER[unit.toLowerCase()])));
|
|
365
|
-
const maxGainForContractSize = bitcoin_1.Value.zero();
|
|
366
|
-
if (tempMaxGainForContractSize.lt(minMaxGainForContractSize)) {
|
|
367
|
-
maxGainForContractSize.add(minMaxGainForContractSize);
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
maxGainForContractSize.add(tempMaxGainForContractSize);
|
|
371
|
-
}
|
|
372
|
-
const maxGainAdjusted = bitcoin_1.Value.fromSats((0, exports.roundToNearestMultiplier)((maxGainForContractSize.sats * BigInt(1e8)) / contractSize.sats, BigInt(exports.UNIT_MULTIPLIER[unit.toLowerCase()])));
|
|
373
|
-
const feesAdjusted = bitcoin_1.Value.fromSats((0, exports.roundToNearestMultiplier)((fees.sats * BigInt(1e8)) / contractSize.sats, BigInt(exports.UNIT_MULTIPLIER[unit.toLowerCase()])));
|
|
374
|
-
const minPayout = collateral.clone();
|
|
375
|
-
if (minPayout.lt(maxLossForContractSize.addn(maxGainForContractSize))) {
|
|
376
|
-
throw new Error('Subtraction would result in a negative value for minPayout.');
|
|
377
|
-
}
|
|
378
|
-
minPayout.sub(maxLossForContractSize);
|
|
379
|
-
minPayout.sub(maxGainForContractSize);
|
|
380
|
-
const maxPayout = collateral.clone();
|
|
381
|
-
const startOutcomeValue = bitcoin_1.Value.fromBitcoin(1);
|
|
382
|
-
startOutcomeValue.sub(normalizedMaxLoss);
|
|
383
|
-
const endOutcomeValue = bitcoin_1.Value.fromBitcoin(1);
|
|
384
|
-
endOutcomeValue.add(maxGainAdjusted);
|
|
385
|
-
if (shiftForFees === 'offeror') {
|
|
386
|
-
startOutcomeValue.add(feesAdjusted);
|
|
387
|
-
endOutcomeValue.add(feesAdjusted);
|
|
388
|
-
}
|
|
389
|
-
else if (shiftForFees === 'acceptor') {
|
|
390
|
-
startOutcomeValue.sub(feesAdjusted);
|
|
391
|
-
endOutcomeValue.sub(feesAdjusted);
|
|
392
|
-
}
|
|
393
|
-
const startOutcome = startOutcomeValue.sats / BigInt(exports.UNIT_MULTIPLIER[unit.toLowerCase()]);
|
|
394
|
-
const endOutcome = endOutcomeValue.sats / BigInt(exports.UNIT_MULTIPLIER[unit.toLowerCase()]);
|
|
395
|
-
const offerCollateral = collateral.clone();
|
|
396
|
-
if (offerCollateral.lt(maxGainForContractSize)) {
|
|
397
|
-
throw new Error('Subtraction would result in a negative value for offerCollateral.');
|
|
398
|
-
}
|
|
399
|
-
offerCollateral.sub(maxGainForContractSize);
|
|
400
|
-
const orderOffer = (0, exports.buildLinearOrderOffer)(announcement, offerCollateral, minPayout, maxPayout, startOutcome, endOutcome, feePerByte, roundingIntervals, network, shiftForFees, fees);
|
|
401
|
-
orderOffer.positionInfo.contractSize =
|
|
402
|
-
contractSize.sats;
|
|
403
|
-
orderOffer.positionInfo.instrumentName = orderOffer.contractInfo
|
|
404
|
-
.oracleInfo.announcement.oracleEvent.eventId;
|
|
405
|
-
if (!skipValidation)
|
|
406
|
-
orderOffer.validate();
|
|
407
|
-
return orderOffer;
|
|
408
|
-
};
|
|
409
|
-
exports.buildCustomStrategyOrderOffer = buildCustomStrategyOrderOffer;
|
|
410
|
-
const buildRoundingIntervalsFromIntervals = (contractSize, intervals) => {
|
|
411
|
-
const roundingIntervals = new messaging_1.RoundingIntervals();
|
|
412
|
-
roundingIntervals.intervals = intervals.map((interval) => {
|
|
413
|
-
const roundingMod = (0, exports.computeRoundingModulus)(interval.rounding, contractSize);
|
|
414
|
-
return {
|
|
415
|
-
beginInterval: interval.beginInterval,
|
|
416
|
-
roundingMod,
|
|
417
|
-
};
|
|
418
|
-
});
|
|
419
|
-
return roundingIntervals;
|
|
420
|
-
};
|
|
421
|
-
exports.buildRoundingIntervalsFromIntervals = buildRoundingIntervalsFromIntervals;
|
|
422
|
-
//# sourceMappingURL=Builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Builder.js","sourceRoot":"","sources":["../../../lib/dlc/finance/Builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { PayoutFunction } from '@node-dlc/messaging';
|
|
2
|
-
import { HyperbolaPayoutCurve } from '../HyperbolaPayoutCurve';
|
|
3
|
-
export declare const CoveredCall: {
|
|
4
|
-
buildCurve: (strikePrice: bigint, contractSize: bigint, oracleBase: number, oracleDigits: number) => {
|
|
5
|
-
maxOutcome: bigint;
|
|
6
|
-
totalCollateral: bigint;
|
|
7
|
-
payoutCurve: HyperbolaPayoutCurve;
|
|
8
|
-
};
|
|
9
|
-
buildPayoutFunction: (strikePrice: bigint, contractSize: bigint, oracleBase: number, oracleDigits: number) => {
|
|
10
|
-
payoutFunction: PayoutFunction;
|
|
11
|
-
totalCollateral: bigint;
|
|
12
|
-
};
|
|
13
|
-
};
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CoveredCall = void 0;
|
|
7
|
-
const messaging_1 = require("@node-dlc/messaging");
|
|
8
|
-
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
-
const BigIntUtils_1 = require("../../utils/BigIntUtils");
|
|
10
|
-
const HyperbolaPayoutCurve_1 = require("../HyperbolaPayoutCurve");
|
|
11
|
-
const buildCurve = (strikePrice, contractSize, oracleBase, oracleDigits) => {
|
|
12
|
-
const a = new bignumber_js_1.default(1);
|
|
13
|
-
const b = new bignumber_js_1.default(0);
|
|
14
|
-
const c = new bignumber_js_1.default(0);
|
|
15
|
-
const d = new bignumber_js_1.default((strikePrice * contractSize).toString());
|
|
16
|
-
const f_1 = new bignumber_js_1.default(0);
|
|
17
|
-
const _f_2 = new bignumber_js_1.default(0);
|
|
18
|
-
const _tempHyperbolaPayoutCurve = new HyperbolaPayoutCurve_1.HyperbolaPayoutCurve(a, b, c, d, f_1, _f_2);
|
|
19
|
-
const maxOutcome = BigInt(new bignumber_js_1.default(oracleBase).pow(oracleDigits).minus(1).toString(10));
|
|
20
|
-
const maxOutcomePayout = _tempHyperbolaPayoutCurve
|
|
21
|
-
.getPayout(maxOutcome)
|
|
22
|
-
.integerValue();
|
|
23
|
-
return {
|
|
24
|
-
maxOutcome,
|
|
25
|
-
totalCollateral: contractSize - (0, BigIntUtils_1.toBigInt)(maxOutcomePayout),
|
|
26
|
-
payoutCurve: new HyperbolaPayoutCurve_1.HyperbolaPayoutCurve(a, b, c, d, f_1, maxOutcomePayout.negated()),
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
const buildPayoutFunction = (strikePrice, contractSize, oracleBase, oracleDigits) => {
|
|
30
|
-
const { maxOutcome, totalCollateral, payoutCurve } = buildCurve(strikePrice, contractSize, oracleBase, oracleDigits);
|
|
31
|
-
const payoutFunction = new messaging_1.PayoutFunction();
|
|
32
|
-
// Defensive fix: ensure payoutFunctionPieces is initialized as an array
|
|
33
|
-
if (!payoutFunction.payoutFunctionPieces) {
|
|
34
|
-
payoutFunction.payoutFunctionPieces = [];
|
|
35
|
-
}
|
|
36
|
-
const curvePiece = payoutCurve.toPayoutCurvePiece();
|
|
37
|
-
// Set the left and right endpoints for the hyperbola piece (matching rust-dlc structure)
|
|
38
|
-
curvePiece.leftEndPoint = {
|
|
39
|
-
eventOutcome: BigInt(0),
|
|
40
|
-
outcomePayout: totalCollateral,
|
|
41
|
-
extraPrecision: 0,
|
|
42
|
-
};
|
|
43
|
-
curvePiece.rightEndPoint = {
|
|
44
|
-
eventOutcome: maxOutcome,
|
|
45
|
-
outcomePayout: BigInt(0),
|
|
46
|
-
extraPrecision: 0,
|
|
47
|
-
};
|
|
48
|
-
payoutFunction.payoutFunctionPieces.push({
|
|
49
|
-
endPoint: {
|
|
50
|
-
eventOutcome: maxOutcome,
|
|
51
|
-
outcomePayout: BigInt(0),
|
|
52
|
-
extraPrecision: 0,
|
|
53
|
-
},
|
|
54
|
-
payoutCurvePiece: curvePiece,
|
|
55
|
-
});
|
|
56
|
-
payoutFunction.lastEndpoint = {
|
|
57
|
-
eventOutcome: maxOutcome,
|
|
58
|
-
outcomePayout: BigInt(0),
|
|
59
|
-
extraPrecision: 0,
|
|
60
|
-
};
|
|
61
|
-
return {
|
|
62
|
-
payoutFunction,
|
|
63
|
-
totalCollateral,
|
|
64
|
-
};
|
|
65
|
-
};
|
|
66
|
-
exports.CoveredCall = { buildCurve, buildPayoutFunction };
|
|
67
|
-
//# sourceMappingURL=CoveredCall.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CoveredCall.js","sourceRoot":"","sources":["../../../lib/dlc/finance/CoveredCall.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Value } from '@node-dlc/bitcoin';
|
|
2
|
-
import { ContractInfo, OrderPositionInfo, PayoutFunction } from '@node-dlc/messaging';
|
|
3
|
-
import { DlcParty } from './Builder';
|
|
4
|
-
import { HasContractInfo, HasOfferCollateral, HasType } from './OptionInfo';
|
|
5
|
-
export interface CsoInfo {
|
|
6
|
-
normalizedMaxGain: Value;
|
|
7
|
-
normalizedMaxLoss: Value;
|
|
8
|
-
maxGainForContractSize: Value;
|
|
9
|
-
maxLossForContractSize: Value;
|
|
10
|
-
minPayout: bigint;
|
|
11
|
-
maxPayout: bigint;
|
|
12
|
-
contractSize: Value;
|
|
13
|
-
offerCollateral: Value;
|
|
14
|
-
totalCollateral: Value;
|
|
15
|
-
expiry: Date;
|
|
16
|
-
}
|
|
17
|
-
export interface CsoInfoParams {
|
|
18
|
-
normalizedMaxGain: Value;
|
|
19
|
-
normalizedMaxLoss: Value;
|
|
20
|
-
maxGainForContractSize: Value;
|
|
21
|
-
maxLossForContractSize: Value;
|
|
22
|
-
offerCollateral: Value;
|
|
23
|
-
}
|
|
24
|
-
export type MaybeHasPositionInfo = {
|
|
25
|
-
positionInfo?: OrderPositionInfo;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* getCsoInfoParamsFromContractInfo V0
|
|
29
|
-
*
|
|
30
|
-
* Old getCsoInfoParamsFromContractInfo implementation
|
|
31
|
-
*
|
|
32
|
-
* @param {Value} contractSize - The size of the contract in terms of value.
|
|
33
|
-
* @param {Value} collateral - The collateral value put up for the contract.
|
|
34
|
-
* @param {DlcParty} shiftForFees - Specifies which party ('offeror' or 'acceptor') will bear the fees, affecting the outcome values.
|
|
35
|
-
* @param {Value} fees - The fees associated with the contract.
|
|
36
|
-
* @param {string} unit - The unit of measurement for the contract outcomes (e.g., 'BTC').
|
|
37
|
-
* @param {Value} startOutcomeValue - The starting outcome value for the contract.
|
|
38
|
-
* @param {Value} endOutcomeValue - The ending outcome value for the contract.
|
|
39
|
-
* @returns {CsoInfoParams} An object containing the calculated CSO parameters:
|
|
40
|
-
* - normalizedMaxGain: Maximum gain relative to a 1 BTC contract.
|
|
41
|
-
* - normalizedMaxLoss: Maximum loss relative to a 1 BTC contract.
|
|
42
|
-
* - maxGainForContractSize: Maximum gain for the actual contract size.
|
|
43
|
-
* - maxLossForContractSize: Maximum loss for the actual contract size.
|
|
44
|
-
* - offerCollateral: The offer collateral value after adjustments.
|
|
45
|
-
*
|
|
46
|
-
* Note: This function calculates the adjusted fees incorrectly, using collateral instead of contract size. Use v1 where possible.
|
|
47
|
-
*/
|
|
48
|
-
export declare const getCsoInfoParamsFromContractInfoV0: (contractSize: Value, collateral: Value, shiftForFees: DlcParty, fees: Value, unit: string, startOutcomeValue: Value, endOutcomeValue: Value) => CsoInfoParams;
|
|
49
|
-
/**
|
|
50
|
-
* getCsoInfoParamsFromContractInfo V1
|
|
51
|
-
*
|
|
52
|
-
* Fixed getCsoInfoParamsFromContractInfo implementation
|
|
53
|
-
*
|
|
54
|
-
* @param {Value} contractSize - The size of the contract in terms of value.
|
|
55
|
-
* @param {Value} collateral - The collateral value put up for the contract.
|
|
56
|
-
* @param {DlcParty} shiftForFees - Specifies which party ('offeror' or 'acceptor') will bear the fees, affecting the outcome values.
|
|
57
|
-
* @param {Value} fees - The fees associated with the contract.
|
|
58
|
-
* @param {string} unit - The unit of measurement for the contract outcomes (e.g., 'BTC').
|
|
59
|
-
* @param {Value} startOutcomeValue - The starting outcome value for the contract.
|
|
60
|
-
* @param {Value} endOutcomeValue - The ending outcome value for the contract.
|
|
61
|
-
* @returns {CsoInfoParams} An object containing the calculated CSO parameters:
|
|
62
|
-
* - normalizedMaxGain: Maximum gain relative to a 1 BTC contract.
|
|
63
|
-
* - normalizedMaxLoss: Maximum loss relative to a 1 BTC contract.
|
|
64
|
-
* - maxGainForContractSize: Maximum gain for the actual contract size.
|
|
65
|
-
* - maxLossForContractSize: Maximum loss for the actual contract size.
|
|
66
|
-
* - offerCollateral: The offer collateral value after adjustments.
|
|
67
|
-
*
|
|
68
|
-
* This version improves upon the previous by correctly adjusting fees based on the contract size, leading to more accurate
|
|
69
|
-
* calculations of CSO parameters.
|
|
70
|
-
*/
|
|
71
|
-
export declare const getCsoInfoParamsFromContractInfoV1: (contractSize: Value, collateral: Value, shiftForFees: DlcParty, fees: Value, unit: string, startOutcomeValue: Value, endOutcomeValue: Value) => CsoInfoParams;
|
|
72
|
-
/**
|
|
73
|
-
* Decode CsoInfo from a ContractInfo object. Essentially the opposite of buildCustomStrategyOrderOffer
|
|
74
|
-
*
|
|
75
|
-
* @param {_contractInfo} ContractInfo - Contract Info object, containing oracle and descriptor info
|
|
76
|
-
* @param {DlcParty} shiftForFees - Specifies which party ('offeror', 'acceptor', or 'neither') will pay for network fees
|
|
77
|
-
* @param {Value} fees - Network fees associated with the contract. Defaults to 0 sats.
|
|
78
|
-
* @param {_contractSize} Value - Optional. If not provided, it defaults to the total collateral.
|
|
79
|
-
* @param {csoVersion} 'v0' | 'v1' - Specifies the version of the CSO parameter calculation to use. Defaults to 'v1'.
|
|
80
|
-
* @returns {CsoInfo} An object containing the calculated CSO information:
|
|
81
|
-
* - normalizedMaxGain: Maximum gain relative to a 1 BTC contract.
|
|
82
|
-
* - normalizedMaxLoss: Maximum loss relative to a 1 BTC contract.
|
|
83
|
-
* - maxGainForContractSize: Maximum gain for the actual contract size.
|
|
84
|
-
* - maxLossForContractSize: Maximum loss for the actual contract size.
|
|
85
|
-
* - minPayout: Minimum payout as determined by the contract's payout function.
|
|
86
|
-
* - maxPayout: Maximum payout as determined by the contract's payout function.
|
|
87
|
-
* - contractSize: The size of the contract in terms of value.
|
|
88
|
-
* - offerCollateral: The offer collateral value after adjustments.
|
|
89
|
-
* - totalCollateral: The total collateral put up for the contract.
|
|
90
|
-
* - expiry: The expiry date of the contract based on the oracle's event maturity epoch.
|
|
91
|
-
*
|
|
92
|
-
* Note: This function performs several validations to ensure that the contract information and its components are of the
|
|
93
|
-
* expected types and formats.
|
|
94
|
-
* It throws errors if unsupported types or formats are encountered.
|
|
95
|
-
*/
|
|
96
|
-
export declare const getCsoInfoFromContractInfo: (_contractInfo: ContractInfo, shiftForFees?: DlcParty, fees?: Value, _contractSize?: Value, csoVersion?: 'v0' | 'v1') => CsoInfo;
|
|
97
|
-
/**
|
|
98
|
-
* Get CsoInfo from OrderOffer or DlcOffer and validate
|
|
99
|
-
*
|
|
100
|
-
* @param {HasContractInfo & HasType} offer
|
|
101
|
-
* @returns {CsoInfo}
|
|
102
|
-
*/
|
|
103
|
-
export declare const getCsoInfoFromOffer: (offer: HasContractInfo & HasType & HasOfferCollateral & MaybeHasPositionInfo, csoVersion?: 'v0' | 'v1') => CsoInfo;
|
|
104
|
-
/**
|
|
105
|
-
* Validate Payout Function for proper CSO format
|
|
106
|
-
*
|
|
107
|
-
* It should have 3 PayoutCurvePieces which consist of a flat line (maxLoss),
|
|
108
|
-
* ascending line (maxLoss to maxGain) and finally another flat line (maxGain)
|
|
109
|
-
*
|
|
110
|
-
* All PayoutCurvePieces should be type PolynomialPayoutCurvePieces
|
|
111
|
-
*
|
|
112
|
-
* @param {PayoutFunction} payoutFunction
|
|
113
|
-
*/
|
|
114
|
-
export declare const validateCsoPayoutFunction: (payoutFunction: PayoutFunction) => void;
|