@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,127 @@
|
|
|
1
|
+
import { BufferReader, BufferWriter } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
import { MessageType } from '../MessageType';
|
|
4
|
+
import { toBigInt } from '../util';
|
|
5
|
+
import { IDlcMessage } from './DlcMessage';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* RoundingIntervals defines rounding intervals for numeric outcome contracts.
|
|
9
|
+
* Updated to match dlcspecs format (no longer uses TLV).
|
|
10
|
+
*/
|
|
11
|
+
export class RoundingIntervals implements IDlcMessage {
|
|
12
|
+
public static type = MessageType.RoundingIntervals;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Creates a RoundingIntervals from JSON data
|
|
16
|
+
* @param json JSON object representing rounding intervals
|
|
17
|
+
*/
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
|
|
19
|
+
public static fromJSON(json: any): RoundingIntervals {
|
|
20
|
+
const instance = new RoundingIntervals();
|
|
21
|
+
|
|
22
|
+
const intervals = json.intervals || [];
|
|
23
|
+
instance.intervals = intervals.map((interval: any) => ({
|
|
24
|
+
beginInterval: toBigInt(
|
|
25
|
+
interval.beginInterval || interval.begin_interval,
|
|
26
|
+
),
|
|
27
|
+
roundingMod: toBigInt(interval.roundingMod || interval.rounding_mod),
|
|
28
|
+
}));
|
|
29
|
+
|
|
30
|
+
return instance;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Deserializes a rounding_intervals message
|
|
35
|
+
* @param buf
|
|
36
|
+
*/
|
|
37
|
+
public static deserialize(buf: Buffer): RoundingIntervals {
|
|
38
|
+
const instance = new RoundingIntervals();
|
|
39
|
+
const reader = new BufferReader(buf);
|
|
40
|
+
|
|
41
|
+
const numRoundingIntervals = Number(reader.readBigSize());
|
|
42
|
+
|
|
43
|
+
for (let i = 0; i < numRoundingIntervals; i++) {
|
|
44
|
+
const beginInterval = reader.readUInt64BE();
|
|
45
|
+
const roundingMod = reader.readUInt64BE();
|
|
46
|
+
|
|
47
|
+
instance.intervals.push({ beginInterval, roundingMod });
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return instance;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The type for rounding_intervals message. rounding_intervals = 42788
|
|
55
|
+
*/
|
|
56
|
+
public type = RoundingIntervals.type;
|
|
57
|
+
|
|
58
|
+
public intervals: IInterval[] = [];
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Validates correctness of all fields in the message
|
|
62
|
+
* https://github.com/discreetlogcontracts/dlcspecs/blob/master/NumericOutcome.md#requirements
|
|
63
|
+
* @throws Will throw an error if validation fails
|
|
64
|
+
*/
|
|
65
|
+
public validate(): void {
|
|
66
|
+
// 1. Intervals must be non-negative
|
|
67
|
+
for (const interval of this.intervals) {
|
|
68
|
+
if (interval.beginInterval < 0) {
|
|
69
|
+
throw new Error('beginInterval must be non-negative');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// 2. Intervals must be strictly increasing
|
|
74
|
+
for (let i = 1; i < this.intervals.length; ++i) {
|
|
75
|
+
if (
|
|
76
|
+
this.intervals[i - 1].beginInterval >= this.intervals[i].beginInterval
|
|
77
|
+
) {
|
|
78
|
+
throw new Error(`Intervals must be strictly increasing`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Converts rounding_intervals to JSON
|
|
85
|
+
*/
|
|
86
|
+
public toJSON(): IRoundingIntervalsJSON {
|
|
87
|
+
return {
|
|
88
|
+
intervals: this.intervals.map((interval) => {
|
|
89
|
+
return {
|
|
90
|
+
beginInterval: Number(interval.beginInterval),
|
|
91
|
+
roundingMod: Number(interval.roundingMod),
|
|
92
|
+
};
|
|
93
|
+
}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Serializes the rounding_intervals message into a Buffer
|
|
99
|
+
*/
|
|
100
|
+
public serialize(): Buffer {
|
|
101
|
+
const writer = new BufferWriter();
|
|
102
|
+
|
|
103
|
+
writer.writeBigSize(this.intervals.length);
|
|
104
|
+
|
|
105
|
+
for (const interval of this.intervals) {
|
|
106
|
+
writer.writeUInt64BE(interval.beginInterval);
|
|
107
|
+
writer.writeUInt64BE(interval.roundingMod);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return writer.toBuffer();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
interface IInterval {
|
|
115
|
+
beginInterval: bigint;
|
|
116
|
+
roundingMod: bigint;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
interface IIntervalJSON {
|
|
120
|
+
beginInterval: number;
|
|
121
|
+
roundingMod: number;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface IRoundingIntervalsJSON {
|
|
125
|
+
type?: number; // Optional for rust-dlc compatibility
|
|
126
|
+
intervals: IIntervalJSON[];
|
|
127
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { BufferReader, BufferWriter } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ScriptWitness is the data for a witness element in a witness stack.
|
|
5
|
+
* An empty witness_stack is an error, as every input must be Segwit.
|
|
6
|
+
* Witness elements should not include their length as part of the witness
|
|
7
|
+
* data.
|
|
8
|
+
*/
|
|
9
|
+
export class ScriptWitnessV0 {
|
|
10
|
+
/**
|
|
11
|
+
* Deserializes an script_witness_v0 message
|
|
12
|
+
* @param buf
|
|
13
|
+
*/
|
|
14
|
+
public static deserialize(buf: Buffer): ScriptWitnessV0 {
|
|
15
|
+
const instance = new ScriptWitnessV0();
|
|
16
|
+
const reader = new BufferReader(buf);
|
|
17
|
+
|
|
18
|
+
instance.length = Number(reader.readBigSize());
|
|
19
|
+
instance.witness = reader.readBytes(instance.length);
|
|
20
|
+
|
|
21
|
+
return instance;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
public static getWitness(reader: BufferReader): Buffer {
|
|
25
|
+
const length = Number(reader.readBigSize());
|
|
26
|
+
const body = reader.readBytes(Number(length));
|
|
27
|
+
|
|
28
|
+
const writer = new BufferWriter();
|
|
29
|
+
writer.writeBigSize(length);
|
|
30
|
+
writer.writeBytes(body);
|
|
31
|
+
|
|
32
|
+
return writer.toBuffer();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public length: number;
|
|
36
|
+
|
|
37
|
+
public witness: Buffer;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Converts script_witness_v0 to JSON
|
|
41
|
+
*/
|
|
42
|
+
public toJSON(): IScriptWitnessV0JSON {
|
|
43
|
+
return {
|
|
44
|
+
witness: this.witness.toString('hex'),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Serializes the script_witness_v0 message into a Buffer
|
|
50
|
+
*/
|
|
51
|
+
public serialize(): Buffer {
|
|
52
|
+
const writer = new BufferWriter();
|
|
53
|
+
|
|
54
|
+
writer.writeBigSize(this.witness.length);
|
|
55
|
+
writer.writeBytes(this.witness);
|
|
56
|
+
|
|
57
|
+
return writer.toBuffer();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface IScriptWitnessV0JSON {
|
|
62
|
+
witness: string;
|
|
63
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BufferReader, BufferWriter } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
export class Tlv {
|
|
4
|
+
/**
|
|
5
|
+
* Deserializes an tlv message
|
|
6
|
+
* @param buf
|
|
7
|
+
*/
|
|
8
|
+
public static deserialize(buf: Buffer): Tlv {
|
|
9
|
+
const instance = new Tlv();
|
|
10
|
+
const reader = new BufferReader(buf);
|
|
11
|
+
|
|
12
|
+
instance.type = Number(reader.readBigSize()); // read type
|
|
13
|
+
instance.length = reader.readBigSize();
|
|
14
|
+
instance.body = reader.readBytes(Number(instance.length));
|
|
15
|
+
|
|
16
|
+
return instance;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public type: number;
|
|
20
|
+
|
|
21
|
+
public length: bigint;
|
|
22
|
+
|
|
23
|
+
public body: Buffer;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Serializes the tlv message into a Buffer
|
|
27
|
+
*/
|
|
28
|
+
public serialize(): Buffer {
|
|
29
|
+
const writer = new BufferWriter();
|
|
30
|
+
writer.writeBigSize(this.type);
|
|
31
|
+
const dataWriter = new BufferWriter();
|
|
32
|
+
|
|
33
|
+
dataWriter.writeBytes(this.body);
|
|
34
|
+
|
|
35
|
+
writer.writeBigSize(dataWriter.size);
|
|
36
|
+
writer.writeBytes(dataWriter.toBuffer());
|
|
37
|
+
|
|
38
|
+
return writer.toBuffer();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import Decimal from 'decimal.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* IEEE 754 double-precision floating-point number implementation
|
|
5
|
+
*
|
|
6
|
+
* Format: 1 bit sign + 11 bits exponent + 52 bits mantissa
|
|
7
|
+
*
|
|
8
|
+
* This class works directly with the binary representation to avoid
|
|
9
|
+
* precision loss when serializing/deserializing f64 values to/from buffers.
|
|
10
|
+
*/
|
|
11
|
+
export class F64 {
|
|
12
|
+
private _buffer: Buffer; // 8 bytes storing the IEEE 754 representation
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Create an F64 from raw bytes (IEEE 754 format)
|
|
16
|
+
*/
|
|
17
|
+
constructor(buffer?: Buffer) {
|
|
18
|
+
if (buffer) {
|
|
19
|
+
if (buffer.length !== 8) {
|
|
20
|
+
throw new Error('F64 buffer must be exactly 8 bytes');
|
|
21
|
+
}
|
|
22
|
+
this._buffer = Buffer.from(buffer);
|
|
23
|
+
} else {
|
|
24
|
+
this._buffer = Buffer.alloc(8);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Create F64 from JavaScript number
|
|
30
|
+
*/
|
|
31
|
+
static fromNumber(num: number): F64 {
|
|
32
|
+
const buffer = Buffer.alloc(8);
|
|
33
|
+
buffer.writeDoubleBE(num, 0);
|
|
34
|
+
return new F64(buffer);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Create F64 from Decimal.js value
|
|
39
|
+
* Uses the most precise conversion possible
|
|
40
|
+
*/
|
|
41
|
+
static fromDecimal(decimal: Decimal): F64 {
|
|
42
|
+
// Convert to number and let IEEE 754 handle the precision
|
|
43
|
+
const num = decimal.toNumber();
|
|
44
|
+
return F64.fromNumber(num);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Create F64 from string representation
|
|
49
|
+
* Uses Decimal.js to parse the string without precision loss from JavaScript Number
|
|
50
|
+
*/
|
|
51
|
+
static fromString(str: string): F64 {
|
|
52
|
+
// Parse string using Decimal.js to avoid JavaScript Number precision loss
|
|
53
|
+
const decimal = new Decimal(str);
|
|
54
|
+
return F64.fromDecimal(decimal);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Create F64 from bigint (treating as integer value)
|
|
59
|
+
*/
|
|
60
|
+
static fromBigInt(bigint: bigint): F64 {
|
|
61
|
+
const num = Number(bigint);
|
|
62
|
+
return F64.fromNumber(num);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Create F64 representing zero (static method for API compatibility)
|
|
67
|
+
*/
|
|
68
|
+
static zero(): F64 {
|
|
69
|
+
return F64.fromNumber(0);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Create F64 with specific IEEE 754 components
|
|
74
|
+
*/
|
|
75
|
+
static fromComponents(
|
|
76
|
+
sign: boolean,
|
|
77
|
+
exponent: number,
|
|
78
|
+
mantissa: bigint,
|
|
79
|
+
): F64 {
|
|
80
|
+
if (exponent < 0 || exponent > 2047) {
|
|
81
|
+
throw new Error('Exponent must be between 0 and 2047');
|
|
82
|
+
}
|
|
83
|
+
if (mantissa < BigInt(0) || mantissa >= BigInt(1) << BigInt(52)) {
|
|
84
|
+
throw new Error('Mantissa must be between 0 and 2^52-1');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const buffer = Buffer.alloc(8);
|
|
88
|
+
|
|
89
|
+
// Pack into 64-bit big-endian format
|
|
90
|
+
// Bit layout: SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
|
|
91
|
+
const signBit = sign ? BigInt(1) : BigInt(0);
|
|
92
|
+
const expBits = BigInt(exponent);
|
|
93
|
+
const mantissaBits = mantissa;
|
|
94
|
+
|
|
95
|
+
const ieee754Bits =
|
|
96
|
+
(signBit << BigInt(63)) | (expBits << BigInt(52)) | mantissaBits;
|
|
97
|
+
|
|
98
|
+
// Write as big-endian bytes
|
|
99
|
+
for (let i = 0; i < 8; i++) {
|
|
100
|
+
const byteValue = Number(
|
|
101
|
+
(ieee754Bits >> BigInt(56 - i * 8)) & BigInt(0xff),
|
|
102
|
+
);
|
|
103
|
+
buffer.writeUInt8(byteValue, i);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return new F64(buffer);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Get the raw buffer containing IEEE 754 representation
|
|
111
|
+
*/
|
|
112
|
+
getBuffer(): Buffer {
|
|
113
|
+
return Buffer.from(this._buffer);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Serialize to buffer (big-endian)
|
|
118
|
+
*/
|
|
119
|
+
serialize(): Buffer {
|
|
120
|
+
return this.getBuffer();
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Deserialize from buffer (big-endian)
|
|
125
|
+
*/
|
|
126
|
+
static deserialize(buffer: Buffer): F64 {
|
|
127
|
+
return new F64(buffer);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Write to BufferWriter
|
|
132
|
+
*/
|
|
133
|
+
writeTo(writer: any): void {
|
|
134
|
+
writer.writeBytes(this._buffer);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Read from BufferReader
|
|
139
|
+
*/
|
|
140
|
+
static readFrom(reader: any): F64 {
|
|
141
|
+
const buffer = reader.readBytes(8);
|
|
142
|
+
return new F64(buffer);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Convert to JavaScript number
|
|
147
|
+
* This may lose precision for very large or very precise values
|
|
148
|
+
*/
|
|
149
|
+
toNumber(): number {
|
|
150
|
+
return this._buffer.readDoubleBE(0);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Convert to Decimal.js for arbitrary precision
|
|
155
|
+
*/
|
|
156
|
+
toDecimal(): Decimal {
|
|
157
|
+
return new Decimal(this.toNumber());
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Extract IEEE 754 components
|
|
162
|
+
*/
|
|
163
|
+
getComponents(): { sign: boolean; exponent: number; mantissa: bigint } {
|
|
164
|
+
// Read as big-endian 64-bit integer
|
|
165
|
+
let ieee754Bits = BigInt(0);
|
|
166
|
+
for (let i = 0; i < 8; i++) {
|
|
167
|
+
ieee754Bits =
|
|
168
|
+
(ieee754Bits << BigInt(8)) | BigInt(this._buffer.readUInt8(i));
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
const sign = (ieee754Bits & (BigInt(1) << BigInt(63))) !== BigInt(0);
|
|
172
|
+
const exponent = Number((ieee754Bits >> BigInt(52)) & BigInt(0x7ff));
|
|
173
|
+
const mantissa = ieee754Bits & ((BigInt(1) << BigInt(52)) - BigInt(1));
|
|
174
|
+
|
|
175
|
+
return { sign, exponent, mantissa };
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Check if the value is finite
|
|
180
|
+
*/
|
|
181
|
+
isFinite(): boolean {
|
|
182
|
+
const { exponent } = this.getComponents();
|
|
183
|
+
return exponent !== 2047; // NaN and Infinity have exponent = 2047
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Check if the value is NaN
|
|
188
|
+
*/
|
|
189
|
+
isNaN(): boolean {
|
|
190
|
+
const { exponent, mantissa } = this.getComponents();
|
|
191
|
+
return exponent === 2047 && mantissa !== BigInt(0);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Check if the value is infinite
|
|
196
|
+
*/
|
|
197
|
+
isInfinite(): boolean {
|
|
198
|
+
const { exponent, mantissa } = this.getComponents();
|
|
199
|
+
return exponent === 2047 && mantissa === BigInt(0);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Check if the value is zero
|
|
204
|
+
*/
|
|
205
|
+
isZero(): boolean {
|
|
206
|
+
const { exponent, mantissa } = this.getComponents();
|
|
207
|
+
return exponent === 0 && mantissa === BigInt(0);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Get string representation
|
|
212
|
+
*/
|
|
213
|
+
toString(): string {
|
|
214
|
+
return this.toNumber().toString();
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Convert to JSON-safe value: number if within safe range, string if too large
|
|
219
|
+
* This preserves precision for very large numbers that exceed JavaScript's MAX_SAFE_INTEGER
|
|
220
|
+
*/
|
|
221
|
+
toJSONValue(): number | string {
|
|
222
|
+
const num = this.toNumber();
|
|
223
|
+
|
|
224
|
+
// Check if the number is within JavaScript's safe integer range
|
|
225
|
+
if (num <= Number.MAX_SAFE_INTEGER && num >= Number.MIN_SAFE_INTEGER) {
|
|
226
|
+
return num;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// For very large numbers, return as string to preserve precision
|
|
230
|
+
return num.toString();
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Create F64 from JSON value (handles both number and string inputs)
|
|
235
|
+
*/
|
|
236
|
+
static fromJSONValue(value: number | string): F64 {
|
|
237
|
+
if (typeof value === 'string') {
|
|
238
|
+
return F64.fromString(value);
|
|
239
|
+
} else {
|
|
240
|
+
return F64.fromNumber(value);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Get hex representation of the raw bytes
|
|
246
|
+
*/
|
|
247
|
+
toHex(): string {
|
|
248
|
+
return this._buffer.toString('hex');
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Create F64 from hex string
|
|
253
|
+
*/
|
|
254
|
+
static fromHex(hex: string): F64 {
|
|
255
|
+
const buffer = Buffer.from(hex, 'hex');
|
|
256
|
+
if (buffer.length !== 8) {
|
|
257
|
+
throw new Error('Hex string must represent exactly 8 bytes');
|
|
258
|
+
}
|
|
259
|
+
return new F64(buffer);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Compare with another F64
|
|
264
|
+
*/
|
|
265
|
+
equals(other: F64): boolean {
|
|
266
|
+
return this._buffer.equals(other._buffer);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Equality comparison (alias for equals, for API compatibility)
|
|
271
|
+
*/
|
|
272
|
+
eq(other: F64 | number): boolean {
|
|
273
|
+
if (typeof other === 'number') {
|
|
274
|
+
return this.toNumber() === other;
|
|
275
|
+
}
|
|
276
|
+
return this.equals(other);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Greater than comparison
|
|
281
|
+
*/
|
|
282
|
+
gt(other: F64 | number): boolean {
|
|
283
|
+
if (typeof other === 'number') {
|
|
284
|
+
return this.toNumber() > other;
|
|
285
|
+
}
|
|
286
|
+
return this.toNumber() > other.toNumber();
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Less than comparison
|
|
291
|
+
*/
|
|
292
|
+
lt(other: F64 | number): boolean {
|
|
293
|
+
if (typeof other === 'number') {
|
|
294
|
+
return this.toNumber() < other;
|
|
295
|
+
}
|
|
296
|
+
return this.toNumber() < other.toNumber();
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Greater than or equal comparison
|
|
301
|
+
*/
|
|
302
|
+
gte(other: F64 | number): boolean {
|
|
303
|
+
if (typeof other === 'number') {
|
|
304
|
+
return this.toNumber() >= other;
|
|
305
|
+
}
|
|
306
|
+
return this.toNumber() >= other.toNumber();
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Less than or equal comparison
|
|
311
|
+
*/
|
|
312
|
+
lte(other: F64 | number): boolean {
|
|
313
|
+
if (typeof other === 'number') {
|
|
314
|
+
return this.toNumber() <= other;
|
|
315
|
+
}
|
|
316
|
+
return this.toNumber() <= other.toNumber();
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Create a copy
|
|
321
|
+
*/
|
|
322
|
+
clone(): F64 {
|
|
323
|
+
return new F64(this._buffer);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Constants
|
|
328
|
+
*/
|
|
329
|
+
static get ZERO(): F64 {
|
|
330
|
+
return F64.fromNumber(0);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
static get ONE(): F64 {
|
|
334
|
+
return F64.fromNumber(1);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
static get NEGATIVE_ONE(): F64 {
|
|
338
|
+
return F64.fromNumber(-1);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
static get INFINITY(): F64 {
|
|
342
|
+
return F64.fromNumber(Number.POSITIVE_INFINITY);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
static get NEGATIVE_INFINITY(): F64 {
|
|
346
|
+
return F64.fromNumber(Number.NEGATIVE_INFINITY);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
static get NaN(): F64 {
|
|
350
|
+
return F64.fromNumber(Number.NaN);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BufferReader } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
export function deserializeTlv(reader: BufferReader): ITlv {
|
|
4
|
+
const type = reader.readBigSize();
|
|
5
|
+
const length = reader.readBigSize();
|
|
6
|
+
const body = reader.readBytes(Number(length));
|
|
7
|
+
|
|
8
|
+
return { type, length, body };
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface ITlv {
|
|
12
|
+
type: bigint;
|
|
13
|
+
length: bigint;
|
|
14
|
+
body: Buffer;
|
|
15
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BufferReader, BufferWriter } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
// TODO: add unit tests
|
|
4
|
+
export function getTlv(reader: BufferReader): Buffer {
|
|
5
|
+
const type = reader.readBigSize();
|
|
6
|
+
const length = reader.readBigSize();
|
|
7
|
+
const body = reader.readBytes(Number(length));
|
|
8
|
+
|
|
9
|
+
const writer = new BufferWriter();
|
|
10
|
+
writer.writeBigSize(type);
|
|
11
|
+
writer.writeBigSize(length);
|
|
12
|
+
writer.writeBytes(body);
|
|
13
|
+
|
|
14
|
+
return writer.toBuffer();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function skipTlv(reader: BufferReader): void {
|
|
18
|
+
reader.readBigSize();
|
|
19
|
+
const length = reader.readBigSize();
|
|
20
|
+
reader.readBytes(Number(length));
|
|
21
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { BufferReader } from '@node-dlc/bufio';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Reads TLVs from a reader until the entire stream is processed. The handler is
|
|
5
|
+
* responsible for doing something with the data bytes.
|
|
6
|
+
* @param reader
|
|
7
|
+
* @param handler
|
|
8
|
+
*/
|
|
9
|
+
export function readTlvs(
|
|
10
|
+
reader: BufferReader,
|
|
11
|
+
handler: (type: bigint, value: BufferReader) => boolean,
|
|
12
|
+
) {
|
|
13
|
+
let lastType: bigint;
|
|
14
|
+
while (!reader.eof) {
|
|
15
|
+
const type = reader.readBigSize();
|
|
16
|
+
const len = reader.readBigSize();
|
|
17
|
+
const value = reader.readBytes(Number(len));
|
|
18
|
+
const valueReader = new BufferReader(value);
|
|
19
|
+
|
|
20
|
+
if (type <= lastType) {
|
|
21
|
+
throw new Error('Invalid TLV stream');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const isEven = type % BigInt(2) === BigInt(0);
|
|
25
|
+
const wasHandled = handler(type, valueReader);
|
|
26
|
+
|
|
27
|
+
if (!wasHandled && isEven) {
|
|
28
|
+
throw new Error('Unknown even type');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (wasHandled && !valueReader.eof) {
|
|
32
|
+
throw new Error('Non-canonical length');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
lastType = type;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function sleep(ms: number): Promise<void> {
|
|
2
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Safely converts various input types to BigInt
|
|
7
|
+
* @param value Value to convert to BigInt
|
|
8
|
+
* @returns BigInt representation of the value, or BigInt(0) for null/undefined
|
|
9
|
+
*/
|
|
10
|
+
export function toBigInt(value: any): bigint {
|
|
11
|
+
if (value === null || value === undefined) return BigInt(0);
|
|
12
|
+
if (typeof value === 'bigint') return value;
|
|
13
|
+
if (typeof value === 'string') return BigInt(value);
|
|
14
|
+
if (typeof value === 'number') return BigInt(value);
|
|
15
|
+
return BigInt(0);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Safely converts BigInt to number, preserving precision for safe integers
|
|
20
|
+
* @param value BigInt value to convert
|
|
21
|
+
* @returns Number if within safe range, otherwise returns the BigInt as-is for JSON serialization
|
|
22
|
+
*/
|
|
23
|
+
export function bigIntToNumber(value: bigint): number | any {
|
|
24
|
+
// For values within safe integer range, convert to number
|
|
25
|
+
if (
|
|
26
|
+
value <= BigInt(Number.MAX_SAFE_INTEGER) &&
|
|
27
|
+
value >= BigInt(Number.MIN_SAFE_INTEGER)
|
|
28
|
+
) {
|
|
29
|
+
return Number(value);
|
|
30
|
+
}
|
|
31
|
+
// For larger values, preserve as BigInt (json-bigint will handle serialization)
|
|
32
|
+
return value as any;
|
|
33
|
+
}
|