@atomicfinance/bitcoin-dlc-provider 3.6.1 → 4.0.0
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/.nvmrc +1 -1
- package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.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 +12 -0
- package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -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 +264 -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 +242 -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/DlcOffer.spec.ts +527 -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 +84 -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 +326 -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 +77 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -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 +260 -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 +494 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -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 +212 -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 +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -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 +986 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -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/DlcMessage.ts.html +341 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -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 +947 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -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 +374 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -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 +605 -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 +770 -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 +827 -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 +1637 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -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 +551 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -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 +636 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -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 +179 -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 +5394 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -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 +211 -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 +44 -0
- package/.yalc/@node-dlc/messaging/dist/index.js +63 -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/ContractDescriptor.d.ts +122 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -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 +304 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -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 +210 -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/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 +131 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -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 +267 -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 +106 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -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/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 +185 -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/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/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/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 +161 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -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 +69 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -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 +50 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -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 +327 -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 +170 -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 +95 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.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 +154 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -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 +40 -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 +138 -0
- package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -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 +44 -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 +318 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -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/DlcMessage.ts +87 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
- package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
- package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -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 +252 -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 +519 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -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 +157 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
- package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -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 +352 -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 +33 -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 +210 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -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 +72 -0
- package/dist/BitcoinDlcProvider.d.ts +17 -16
- package/dist/BitcoinDlcProvider.js +345 -315
- package/dist/BitcoinDlcProvider.js.map +1 -1
- package/dist/utils/Utils.d.ts +6 -6
- package/dist/utils/Utils.js +4 -4
- package/dist/utils/Utils.js.map +1 -1
- package/lib/BitcoinDlcProvider.ts +624 -612
- package/lib/utils/Utils.ts +19 -24
- package/package.json +10 -10
- package/yalc.lock +10 -0
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
import { BufferReader, BufferWriter } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
import { MessageType, PayoutCurvePieceType } from '../MessageType';
|
|
4
|
+
import { F64 } from '../serialize/F64';
|
|
5
|
+
import { bigIntToNumber, toBigInt } from '../util';
|
|
6
|
+
import { IDlcMessage } from './DlcMessage';
|
|
7
|
+
|
|
8
|
+
export abstract class PayoutCurvePiece {
|
|
9
|
+
public static deserialize(
|
|
10
|
+
buf: Buffer,
|
|
11
|
+
): PolynomialPayoutCurvePiece | HyperbolaPayoutCurvePiece {
|
|
12
|
+
const reader = new BufferReader(buf);
|
|
13
|
+
const typeId = Number(reader.readBigSize());
|
|
14
|
+
|
|
15
|
+
switch (typeId) {
|
|
16
|
+
case PayoutCurvePieceType.Polynomial:
|
|
17
|
+
return PolynomialPayoutCurvePiece.deserialize(buf);
|
|
18
|
+
case PayoutCurvePieceType.Hyperbola:
|
|
19
|
+
return HyperbolaPayoutCurvePiece.deserialize(buf);
|
|
20
|
+
default:
|
|
21
|
+
throw new Error(
|
|
22
|
+
`Payout curve piece type must be Polynomial (0) or Hyperbola (1), got ${typeId}`,
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Creates a PayoutCurvePiece from JSON data
|
|
29
|
+
* @param json JSON object representing a payout curve piece
|
|
30
|
+
*/
|
|
31
|
+
public static fromJSON(json: any): PayoutCurvePiece {
|
|
32
|
+
if (!json) {
|
|
33
|
+
throw new Error('payoutCurvePiece is required');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Handle test vector format with nested types
|
|
37
|
+
if (json.polynomialPayoutCurvePiece) {
|
|
38
|
+
return PolynomialPayoutCurvePiece.fromJSON(
|
|
39
|
+
json.polynomialPayoutCurvePiece,
|
|
40
|
+
);
|
|
41
|
+
} else if (json.hyperbolaPayoutCurvePiece) {
|
|
42
|
+
return HyperbolaPayoutCurvePiece.fromJSON(json.hyperbolaPayoutCurvePiece);
|
|
43
|
+
}
|
|
44
|
+
// Handle direct format
|
|
45
|
+
else if (json.points !== undefined || json.payoutPoints !== undefined) {
|
|
46
|
+
return PolynomialPayoutCurvePiece.fromJSON(json);
|
|
47
|
+
} else if (json.usePositivePiece !== undefined) {
|
|
48
|
+
return HyperbolaPayoutCurvePiece.fromJSON(json);
|
|
49
|
+
} else {
|
|
50
|
+
throw new Error(
|
|
51
|
+
'payoutCurvePiece must be either polynomial (with points) or hyperbola (with usePositivePiece)',
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public abstract payoutCurvePieceType: PayoutCurvePieceType;
|
|
57
|
+
public abstract type: number; // For backward compatibility
|
|
58
|
+
public abstract toJSON():
|
|
59
|
+
| PolynomialPayoutCurvePieceJSON
|
|
60
|
+
| HyperbolaPayoutCurvePieceJSON;
|
|
61
|
+
public abstract serialize(): Buffer;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* PolynomialPayoutCurvePiece defines a polynomial curve piece for payout functions.
|
|
66
|
+
* This corresponds to type 0 in the sibling sub-type format.
|
|
67
|
+
*/
|
|
68
|
+
export class PolynomialPayoutCurvePiece
|
|
69
|
+
extends PayoutCurvePiece
|
|
70
|
+
implements IDlcMessage {
|
|
71
|
+
public static payoutCurvePieceType = PayoutCurvePieceType.Polynomial;
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Creates a PolynomialPayoutCurvePiece from JSON data
|
|
75
|
+
* @param json JSON object representing a polynomial payout curve piece
|
|
76
|
+
*/
|
|
77
|
+
public static fromJSON(json: any): PolynomialPayoutCurvePiece {
|
|
78
|
+
const instance = new PolynomialPayoutCurvePiece();
|
|
79
|
+
|
|
80
|
+
const points = json.payoutPoints || json.points || [];
|
|
81
|
+
instance.points = points.map((point: any) => ({
|
|
82
|
+
eventOutcome: toBigInt(point.eventOutcome || point.event_outcome),
|
|
83
|
+
outcomePayout: toBigInt(point.outcomePayout || point.outcome_payout),
|
|
84
|
+
extraPrecision: point.extraPrecision || point.extra_precision || 0,
|
|
85
|
+
}));
|
|
86
|
+
|
|
87
|
+
return instance;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Deserializes a polynomial_payout_curve_piece message
|
|
92
|
+
* @param buf
|
|
93
|
+
*/
|
|
94
|
+
public static deserialize(buf: Buffer): PolynomialPayoutCurvePiece {
|
|
95
|
+
const instance = new PolynomialPayoutCurvePiece();
|
|
96
|
+
const reader = new BufferReader(buf);
|
|
97
|
+
|
|
98
|
+
reader.readBigSize(); // read type (0)
|
|
99
|
+
const numPts = Number(reader.readBigSize());
|
|
100
|
+
|
|
101
|
+
for (let i = 0; i < numPts; i++) {
|
|
102
|
+
const eventOutcome = reader.readUInt64BE();
|
|
103
|
+
const outcomePayout = reader.readUInt64BE();
|
|
104
|
+
const extraPrecision = reader.readUInt16BE();
|
|
105
|
+
|
|
106
|
+
instance.points.push({
|
|
107
|
+
eventOutcome,
|
|
108
|
+
outcomePayout,
|
|
109
|
+
extraPrecision,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return instance;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* The type for polynomial_payout_curve_piece message - Note: this is a sub-component, not a standalone wire message
|
|
118
|
+
*/
|
|
119
|
+
public type = MessageType.PolynomialPayoutCurvePiece;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* The payout curve piece type for new format
|
|
123
|
+
*/
|
|
124
|
+
public payoutCurvePieceType = PayoutCurvePieceType.Polynomial;
|
|
125
|
+
|
|
126
|
+
public points: IPoint[] = [];
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Converts polynomial_payout_curve_piece to JSON
|
|
130
|
+
*/
|
|
131
|
+
public toJSON(): PolynomialPayoutCurvePieceJSON {
|
|
132
|
+
return {
|
|
133
|
+
polynomialPayoutCurvePiece: {
|
|
134
|
+
payoutPoints: this.points.map((point) => {
|
|
135
|
+
return {
|
|
136
|
+
eventOutcome: bigIntToNumber(point.eventOutcome),
|
|
137
|
+
outcomePayout: bigIntToNumber(point.outcomePayout),
|
|
138
|
+
extraPrecision: Number(point.extraPrecision),
|
|
139
|
+
};
|
|
140
|
+
}),
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Serializes the polynomial_payout_curve_piece message into a Buffer
|
|
147
|
+
*/
|
|
148
|
+
public serialize(): Buffer {
|
|
149
|
+
const writer = new BufferWriter();
|
|
150
|
+
|
|
151
|
+
writer.writeBigSize(this.payoutCurvePieceType);
|
|
152
|
+
writer.writeBigSize(this.points.length);
|
|
153
|
+
|
|
154
|
+
for (const point of this.points) {
|
|
155
|
+
writer.writeUInt64BE(point.eventOutcome);
|
|
156
|
+
writer.writeUInt64BE(point.outcomePayout);
|
|
157
|
+
writer.writeUInt16BE(point.extraPrecision);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return writer.toBuffer();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* HyperbolaPayoutCurvePiece defines a hyperbola curve piece for payout functions.
|
|
166
|
+
* This corresponds to type 1 in the sibling sub-type format.
|
|
167
|
+
* Updated to use F64 for precise f64 parameter handling.
|
|
168
|
+
*/
|
|
169
|
+
export class HyperbolaPayoutCurvePiece
|
|
170
|
+
extends PayoutCurvePiece
|
|
171
|
+
implements IDlcMessage {
|
|
172
|
+
public static payoutCurvePieceType = PayoutCurvePieceType.Hyperbola;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Helper function to safely parse F64 values from JSON
|
|
176
|
+
* Handles both number and string inputs for maximum precision
|
|
177
|
+
*/
|
|
178
|
+
private static parseF64Value(value: any): F64 | null {
|
|
179
|
+
// Check for basic null/undefined
|
|
180
|
+
if (value === null || value === undefined) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
try {
|
|
185
|
+
if (typeof value === 'string') {
|
|
186
|
+
// Parse string directly to preserve precision
|
|
187
|
+
try {
|
|
188
|
+
return F64.fromString(value);
|
|
189
|
+
} catch (error) {
|
|
190
|
+
// If fromString fails, try parsing as number
|
|
191
|
+
const numValue = parseFloat(value);
|
|
192
|
+
if (!isNaN(numValue) && isFinite(numValue)) {
|
|
193
|
+
return F64.fromNumber(numValue);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
} else if (typeof value === 'number') {
|
|
197
|
+
// Parse number - handle special cases
|
|
198
|
+
if (!isFinite(value)) {
|
|
199
|
+
return null; // Reject NaN, Infinity, -Infinity
|
|
200
|
+
}
|
|
201
|
+
return F64.fromNumber(value);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Try to convert other types to number as fallback
|
|
205
|
+
const numValue = Number(value);
|
|
206
|
+
if (!isNaN(numValue) && isFinite(numValue)) {
|
|
207
|
+
return F64.fromNumber(numValue);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return null;
|
|
211
|
+
} catch (error) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Creates a HyperbolaPayoutCurvePiece from JSON data
|
|
218
|
+
* @param json JSON object representing a hyperbola payout curve piece
|
|
219
|
+
*/
|
|
220
|
+
public static fromJSON(json: any): HyperbolaPayoutCurvePiece | null {
|
|
221
|
+
if (!json || typeof json !== 'object') return null;
|
|
222
|
+
|
|
223
|
+
// Handle both wrapped format and direct format
|
|
224
|
+
let data =
|
|
225
|
+
json.hyperbolaPayoutCurvePiece || json.hyperbola_payout_curve_piece;
|
|
226
|
+
|
|
227
|
+
// If no wrapper found, assume direct format if it has the expected properties
|
|
228
|
+
if (
|
|
229
|
+
!data &&
|
|
230
|
+
(json.usePositivePiece !== undefined ||
|
|
231
|
+
json.use_positive_piece !== undefined)
|
|
232
|
+
) {
|
|
233
|
+
data = json;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
if (!data) return null;
|
|
237
|
+
|
|
238
|
+
try {
|
|
239
|
+
const usePositivePiece =
|
|
240
|
+
data.usePositivePiece || data.use_positive_piece || false;
|
|
241
|
+
|
|
242
|
+
// Parse each F64 value with null check
|
|
243
|
+
const translateOutcome = this.parseF64Value(
|
|
244
|
+
data.translateOutcome !== undefined
|
|
245
|
+
? data.translateOutcome
|
|
246
|
+
: data.translate_outcome,
|
|
247
|
+
);
|
|
248
|
+
const translatePayout = this.parseF64Value(
|
|
249
|
+
data.translatePayout !== undefined
|
|
250
|
+
? data.translatePayout
|
|
251
|
+
: data.translate_payout,
|
|
252
|
+
);
|
|
253
|
+
const a = this.parseF64Value(data.a);
|
|
254
|
+
const b = this.parseF64Value(data.b);
|
|
255
|
+
const c = this.parseF64Value(data.c);
|
|
256
|
+
const d = this.parseF64Value(data.d);
|
|
257
|
+
|
|
258
|
+
// Check that all required values were parsed successfully
|
|
259
|
+
if (!translateOutcome || !translatePayout || !a || !b || !c || !d) {
|
|
260
|
+
throw new Error('Failed to parse one or more F64 values');
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
return new HyperbolaPayoutCurvePiece(
|
|
264
|
+
usePositivePiece,
|
|
265
|
+
translateOutcome,
|
|
266
|
+
translatePayout,
|
|
267
|
+
a,
|
|
268
|
+
b,
|
|
269
|
+
c,
|
|
270
|
+
d,
|
|
271
|
+
);
|
|
272
|
+
} catch (error) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Deserializes a hyperbola_payout_curve_piece message
|
|
279
|
+
* @param buf
|
|
280
|
+
*/
|
|
281
|
+
public static deserialize(buf: Buffer): HyperbolaPayoutCurvePiece {
|
|
282
|
+
const instance = new HyperbolaPayoutCurvePiece();
|
|
283
|
+
const reader = new BufferReader(buf);
|
|
284
|
+
|
|
285
|
+
reader.readBigSize(); // read type (1)
|
|
286
|
+
instance.usePositivePiece = reader.readUInt8() === 1;
|
|
287
|
+
|
|
288
|
+
// Read f64 values using F64 for precise handling - read raw 8-byte buffers
|
|
289
|
+
instance.translateOutcome = F64.deserialize(reader.readBytes(8));
|
|
290
|
+
instance.translatePayout = F64.deserialize(reader.readBytes(8));
|
|
291
|
+
instance.a = F64.deserialize(reader.readBytes(8));
|
|
292
|
+
instance.b = F64.deserialize(reader.readBytes(8));
|
|
293
|
+
instance.c = F64.deserialize(reader.readBytes(8));
|
|
294
|
+
instance.d = F64.deserialize(reader.readBytes(8));
|
|
295
|
+
|
|
296
|
+
// Note: leftEndPoint and rightEndPoint are not part of the serialization
|
|
297
|
+
// They will be set by PayoutFunction when creating from JSON
|
|
298
|
+
instance.leftEndPoint = {
|
|
299
|
+
eventOutcome: BigInt(0),
|
|
300
|
+
outcomePayout: BigInt(0),
|
|
301
|
+
extraPrecision: 0,
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
instance.rightEndPoint = {
|
|
305
|
+
eventOutcome: BigInt(0),
|
|
306
|
+
outcomePayout: BigInt(0),
|
|
307
|
+
extraPrecision: 0,
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
return instance;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* The type for hyperbola_payout_curve_piece message - Note: this is a sub-component, not a standalone wire message
|
|
315
|
+
*/
|
|
316
|
+
public type = MessageType.HyperbolaPayoutCurvePiece;
|
|
317
|
+
|
|
318
|
+
public payoutCurvePieceType = HyperbolaPayoutCurvePiece.payoutCurvePieceType;
|
|
319
|
+
|
|
320
|
+
// Use F64 for precise f64 parameter handling to avoid JavaScript precision issues
|
|
321
|
+
public leftEndPoint: IPayoutPoint;
|
|
322
|
+
public rightEndPoint: IPayoutPoint;
|
|
323
|
+
public usePositivePiece: boolean;
|
|
324
|
+
public translateOutcome: F64; // f64 - precise handling with F64
|
|
325
|
+
public translatePayout: F64; // f64 - precise handling with F64
|
|
326
|
+
public a: F64; // f64 - precise handling with F64
|
|
327
|
+
public b: F64; // f64 - precise handling with F64
|
|
328
|
+
public c: F64; // f64 - precise handling with F64
|
|
329
|
+
public d: F64; // f64 - precise handling with F64
|
|
330
|
+
|
|
331
|
+
constructor(
|
|
332
|
+
usePositivePiece = false,
|
|
333
|
+
translateOutcome?: string | F64,
|
|
334
|
+
translatePayout?: string | F64,
|
|
335
|
+
a?: string | F64,
|
|
336
|
+
b?: string | F64,
|
|
337
|
+
c?: string | F64,
|
|
338
|
+
d?: string | F64,
|
|
339
|
+
) {
|
|
340
|
+
super();
|
|
341
|
+
this.usePositivePiece = usePositivePiece;
|
|
342
|
+
|
|
343
|
+
// Convert string inputs to F64 objects, or use existing F64 objects
|
|
344
|
+
this.translateOutcome = translateOutcome
|
|
345
|
+
? typeof translateOutcome === 'string'
|
|
346
|
+
? F64.fromString(translateOutcome)
|
|
347
|
+
: translateOutcome
|
|
348
|
+
: F64.fromNumber(0);
|
|
349
|
+
this.translatePayout = translatePayout
|
|
350
|
+
? typeof translatePayout === 'string'
|
|
351
|
+
? F64.fromString(translatePayout)
|
|
352
|
+
: translatePayout
|
|
353
|
+
: F64.fromNumber(0);
|
|
354
|
+
this.a = a
|
|
355
|
+
? typeof a === 'string'
|
|
356
|
+
? F64.fromString(a)
|
|
357
|
+
: a
|
|
358
|
+
: F64.fromNumber(0);
|
|
359
|
+
this.b = b
|
|
360
|
+
? typeof b === 'string'
|
|
361
|
+
? F64.fromString(b)
|
|
362
|
+
: b
|
|
363
|
+
: F64.fromNumber(0);
|
|
364
|
+
this.c = c
|
|
365
|
+
? typeof c === 'string'
|
|
366
|
+
? F64.fromString(c)
|
|
367
|
+
: c
|
|
368
|
+
: F64.fromNumber(0);
|
|
369
|
+
this.d = d
|
|
370
|
+
? typeof d === 'string'
|
|
371
|
+
? F64.fromString(d)
|
|
372
|
+
: d
|
|
373
|
+
: F64.fromNumber(0);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* Converts hyperbola_payout_curve_piece to JSON
|
|
378
|
+
* Uses F64.toJSONValue() which preserves precision by using strings for very large numbers
|
|
379
|
+
*/
|
|
380
|
+
public toJSON(): HyperbolaPayoutCurvePieceJSON {
|
|
381
|
+
return {
|
|
382
|
+
hyperbolaPayoutCurvePiece: {
|
|
383
|
+
usePositivePiece: this.usePositivePiece,
|
|
384
|
+
translateOutcome: this.translateOutcome.toJSONValue(), // Smart conversion: number if safe, string if large
|
|
385
|
+
translatePayout: this.translatePayout.toJSONValue(), // Preserves precision automatically
|
|
386
|
+
a: this.a.toJSONValue(),
|
|
387
|
+
b: this.b.toJSONValue(),
|
|
388
|
+
c: this.c.toJSONValue(),
|
|
389
|
+
d: this.d.toJSONValue(),
|
|
390
|
+
},
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Serializes the hyperbola_payout_curve_piece message into a Buffer
|
|
396
|
+
*/
|
|
397
|
+
public serialize(): Buffer {
|
|
398
|
+
const writer = new BufferWriter();
|
|
399
|
+
|
|
400
|
+
writer.writeBigSize(this.payoutCurvePieceType);
|
|
401
|
+
writer.writeUInt8(this.usePositivePiece ? 1 : 0);
|
|
402
|
+
|
|
403
|
+
// Write f64 values using F64 for precise handling - write raw 8-byte buffers
|
|
404
|
+
writer.writeBytes(this.translateOutcome.serialize());
|
|
405
|
+
writer.writeBytes(this.translatePayout.serialize());
|
|
406
|
+
writer.writeBytes(this.a.serialize());
|
|
407
|
+
writer.writeBytes(this.b.serialize());
|
|
408
|
+
writer.writeBytes(this.c.serialize());
|
|
409
|
+
writer.writeBytes(this.d.serialize());
|
|
410
|
+
|
|
411
|
+
return writer.toBuffer();
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
interface IPoint {
|
|
416
|
+
eventOutcome: bigint;
|
|
417
|
+
outcomePayout: bigint;
|
|
418
|
+
extraPrecision: number;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
interface IPointJSON {
|
|
422
|
+
eventOutcome: number;
|
|
423
|
+
outcomePayout: number;
|
|
424
|
+
extraPrecision: number;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
interface IPayoutPoint {
|
|
428
|
+
eventOutcome: bigint;
|
|
429
|
+
outcomePayout: bigint;
|
|
430
|
+
extraPrecision: number;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
export interface PolynomialPayoutCurvePieceJSON {
|
|
434
|
+
polynomialPayoutCurvePiece: {
|
|
435
|
+
payoutPoints: IPointJSON[];
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
export interface HyperbolaPayoutCurvePieceJSON {
|
|
440
|
+
hyperbolaPayoutCurvePiece: {
|
|
441
|
+
usePositivePiece: boolean;
|
|
442
|
+
translateOutcome: number | string;
|
|
443
|
+
translatePayout: number | string;
|
|
444
|
+
a: number | string;
|
|
445
|
+
b: number | string;
|
|
446
|
+
c: number | string;
|
|
447
|
+
d: number | string;
|
|
448
|
+
};
|
|
449
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { BufferReader, BufferWriter } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
import { MessageType } from '../MessageType';
|
|
4
|
+
import { bigIntToNumber, toBigInt } from '../util';
|
|
5
|
+
import { IDlcMessage } from './DlcMessage';
|
|
6
|
+
import {
|
|
7
|
+
HyperbolaPayoutCurvePiece,
|
|
8
|
+
HyperbolaPayoutCurvePieceJSON,
|
|
9
|
+
PayoutCurvePiece,
|
|
10
|
+
PolynomialPayoutCurvePieceJSON,
|
|
11
|
+
} from './PayoutCurvePiece';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* PayoutFunction contains the payout curve definition for numeric outcome contracts.
|
|
15
|
+
* Updated to match rust-dlc format exactly.
|
|
16
|
+
*/
|
|
17
|
+
export class PayoutFunction implements IDlcMessage {
|
|
18
|
+
public static type = MessageType.PayoutFunction;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Creates a PayoutFunction from JSON data
|
|
22
|
+
* @param json JSON object representing a payout function
|
|
23
|
+
*/
|
|
24
|
+
public static fromJSON(json: any): PayoutFunction {
|
|
25
|
+
const instance = new PayoutFunction();
|
|
26
|
+
|
|
27
|
+
// Parse payout function pieces
|
|
28
|
+
const pieces =
|
|
29
|
+
json.payoutFunctionPieces || json.payout_function_pieces || [];
|
|
30
|
+
instance.payoutFunctionPieces = pieces.map(
|
|
31
|
+
(pieceJson: any, index: number) => {
|
|
32
|
+
const piece = {
|
|
33
|
+
endPoint: {
|
|
34
|
+
eventOutcome: toBigInt(pieceJson.endPoint?.eventOutcome),
|
|
35
|
+
outcomePayout: toBigInt(pieceJson.endPoint?.outcomePayout),
|
|
36
|
+
extraPrecision: pieceJson.endPoint?.extraPrecision || 0,
|
|
37
|
+
},
|
|
38
|
+
payoutCurvePiece: PayoutCurvePiece.fromJSON(
|
|
39
|
+
pieceJson.payoutCurvePiece || pieceJson.payout_curve_piece,
|
|
40
|
+
),
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// For HyperbolaPayoutCurvePiece, set the left and right end points
|
|
44
|
+
if (piece.payoutCurvePiece instanceof HyperbolaPayoutCurvePiece) {
|
|
45
|
+
const hyperbola = piece.payoutCurvePiece as HyperbolaPayoutCurvePiece;
|
|
46
|
+
|
|
47
|
+
// Left end point is this piece's endPoint
|
|
48
|
+
hyperbola.leftEndPoint = piece.endPoint;
|
|
49
|
+
|
|
50
|
+
// Right end point is the next piece's endPoint, or lastEndpoint if this is the last piece
|
|
51
|
+
if (index < pieces.length - 1) {
|
|
52
|
+
const nextPiece = pieces[index + 1];
|
|
53
|
+
hyperbola.rightEndPoint = {
|
|
54
|
+
eventOutcome: toBigInt(nextPiece.endPoint?.eventOutcome),
|
|
55
|
+
outcomePayout: toBigInt(nextPiece.endPoint?.outcomePayout),
|
|
56
|
+
extraPrecision: nextPiece.endPoint?.extraPrecision || 0,
|
|
57
|
+
};
|
|
58
|
+
} else {
|
|
59
|
+
// Use lastEndpoint for the final piece
|
|
60
|
+
const lastEndpoint = json.lastEndpoint || json.last_endpoint || {};
|
|
61
|
+
hyperbola.rightEndPoint = {
|
|
62
|
+
eventOutcome: toBigInt(lastEndpoint.eventOutcome),
|
|
63
|
+
outcomePayout: toBigInt(lastEndpoint.outcomePayout),
|
|
64
|
+
extraPrecision: lastEndpoint.extraPrecision || 0,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return piece;
|
|
70
|
+
},
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
// Parse last endpoint
|
|
74
|
+
const lastEndpoint = json.lastEndpoint || json.last_endpoint;
|
|
75
|
+
if (lastEndpoint) {
|
|
76
|
+
instance.lastEndpoint = {
|
|
77
|
+
eventOutcome: toBigInt(lastEndpoint.eventOutcome),
|
|
78
|
+
outcomePayout: toBigInt(lastEndpoint.outcomePayout),
|
|
79
|
+
extraPrecision: lastEndpoint.extraPrecision || 0,
|
|
80
|
+
};
|
|
81
|
+
} else {
|
|
82
|
+
// Default last endpoint if not provided
|
|
83
|
+
instance.lastEndpoint = {
|
|
84
|
+
eventOutcome: BigInt(0),
|
|
85
|
+
outcomePayout: BigInt(0),
|
|
86
|
+
extraPrecision: 0,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return instance;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Deserializes a payout_function message
|
|
95
|
+
* @param buf
|
|
96
|
+
*/
|
|
97
|
+
public static deserialize(buf: Buffer): PayoutFunction {
|
|
98
|
+
const instance = new PayoutFunction();
|
|
99
|
+
const reader = new BufferReader(buf);
|
|
100
|
+
|
|
101
|
+
// Read payout function pieces (as vec)
|
|
102
|
+
const numPieces = Number(reader.readBigSize());
|
|
103
|
+
|
|
104
|
+
for (let i = 0; i < numPieces; i++) {
|
|
105
|
+
// Read end_point first
|
|
106
|
+
const eventOutcome = reader.readUInt64BE();
|
|
107
|
+
const outcomePayout = reader.readUInt64BE();
|
|
108
|
+
const extraPrecision = reader.readUInt16BE();
|
|
109
|
+
|
|
110
|
+
// Read payout curve piece
|
|
111
|
+
const payoutCurvePieceStartPos = reader.position;
|
|
112
|
+
const payoutCurvePiece = PayoutCurvePiece.deserialize(
|
|
113
|
+
reader.buffer.subarray(reader.position),
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
// Skip past the payout curve piece bytes
|
|
117
|
+
const payoutCurvePieceSize = payoutCurvePiece.serialize().length;
|
|
118
|
+
reader.position = payoutCurvePieceStartPos + payoutCurvePieceSize;
|
|
119
|
+
|
|
120
|
+
instance.payoutFunctionPieces.push({
|
|
121
|
+
endPoint: {
|
|
122
|
+
eventOutcome,
|
|
123
|
+
outcomePayout,
|
|
124
|
+
extraPrecision,
|
|
125
|
+
},
|
|
126
|
+
payoutCurvePiece,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Read last_endpoint
|
|
131
|
+
instance.lastEndpoint = {
|
|
132
|
+
eventOutcome: reader.readUInt64BE(),
|
|
133
|
+
outcomePayout: reader.readUInt64BE(),
|
|
134
|
+
extraPrecision: reader.readUInt16BE(),
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
return instance;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* The type for payout_function message. payout_function = 42790
|
|
142
|
+
*/
|
|
143
|
+
public type = PayoutFunction.type;
|
|
144
|
+
|
|
145
|
+
public payoutFunctionPieces: IPayoutFunctionPiece[] = [];
|
|
146
|
+
public lastEndpoint: IPayoutPoint;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Constructor that ensures proper initialization
|
|
150
|
+
*/
|
|
151
|
+
constructor() {
|
|
152
|
+
// Explicitly initialize arrays to handle file-linking issues
|
|
153
|
+
this.payoutFunctionPieces = [];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Converts payout_function to JSON
|
|
158
|
+
*/
|
|
159
|
+
public toJSON(): PayoutFunctionJSON {
|
|
160
|
+
return {
|
|
161
|
+
payoutFunctionPieces: this.payoutFunctionPieces.map((piece) => ({
|
|
162
|
+
endPoint: {
|
|
163
|
+
eventOutcome: bigIntToNumber(piece.endPoint.eventOutcome),
|
|
164
|
+
outcomePayout: bigIntToNumber(piece.endPoint.outcomePayout),
|
|
165
|
+
extraPrecision: piece.endPoint.extraPrecision,
|
|
166
|
+
},
|
|
167
|
+
payoutCurvePiece: piece.payoutCurvePiece.toJSON(),
|
|
168
|
+
})),
|
|
169
|
+
lastEndpoint: {
|
|
170
|
+
eventOutcome: bigIntToNumber(this.lastEndpoint.eventOutcome),
|
|
171
|
+
outcomePayout: bigIntToNumber(this.lastEndpoint.outcomePayout),
|
|
172
|
+
extraPrecision: this.lastEndpoint.extraPrecision,
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Serializes the payout_function message into a Buffer
|
|
179
|
+
*/
|
|
180
|
+
public serialize(): Buffer {
|
|
181
|
+
const writer = new BufferWriter();
|
|
182
|
+
|
|
183
|
+
// Write payout_function_pieces as vec (length + elements)
|
|
184
|
+
writer.writeBigSize(this.payoutFunctionPieces.length);
|
|
185
|
+
|
|
186
|
+
for (const piece of this.payoutFunctionPieces) {
|
|
187
|
+
// Write end_point first (matches rust order)
|
|
188
|
+
writer.writeUInt64BE(piece.endPoint.eventOutcome);
|
|
189
|
+
writer.writeUInt64BE(piece.endPoint.outcomePayout);
|
|
190
|
+
writer.writeUInt16BE(piece.endPoint.extraPrecision);
|
|
191
|
+
|
|
192
|
+
// Write payout_curve_piece second
|
|
193
|
+
writer.writeBytes(piece.payoutCurvePiece.serialize());
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Write last_endpoint
|
|
197
|
+
writer.writeUInt64BE(this.lastEndpoint.eventOutcome);
|
|
198
|
+
writer.writeUInt64BE(this.lastEndpoint.outcomePayout);
|
|
199
|
+
writer.writeUInt16BE(this.lastEndpoint.extraPrecision);
|
|
200
|
+
|
|
201
|
+
return writer.toBuffer();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Legacy support
|
|
206
|
+
export const PayoutFunctionV0 = PayoutFunction;
|
|
207
|
+
export type PayoutFunctionV0 = PayoutFunction;
|
|
208
|
+
|
|
209
|
+
interface IPayoutPoint {
|
|
210
|
+
eventOutcome: bigint;
|
|
211
|
+
outcomePayout: bigint;
|
|
212
|
+
extraPrecision: number;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
interface IPayoutPointJSON {
|
|
216
|
+
eventOutcome: number;
|
|
217
|
+
outcomePayout: number;
|
|
218
|
+
extraPrecision: number;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
interface IPayoutFunctionPiece {
|
|
222
|
+
endPoint: IPayoutPoint;
|
|
223
|
+
payoutCurvePiece: PayoutCurvePiece;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
interface IPayoutFunctionPieceJSON {
|
|
227
|
+
endPoint: IPayoutPointJSON;
|
|
228
|
+
payoutCurvePiece:
|
|
229
|
+
| PolynomialPayoutCurvePieceJSON
|
|
230
|
+
| HyperbolaPayoutCurvePieceJSON;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export interface PayoutFunctionJSON {
|
|
234
|
+
type?: number; // Optional for rust-dlc compatibility
|
|
235
|
+
payoutFunctionPieces: IPayoutFunctionPieceJSON[];
|
|
236
|
+
lastEndpoint: IPayoutPointJSON;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Legacy interface
|
|
240
|
+
export type PayoutFunctionV0JSON = PayoutFunctionJSON;
|