@atomicfinance/bitcoin-dlc-provider 3.6.0 → 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/.turbo/turbo-build.log +1 -0
- package/.turbo/turbo-test.log +0 -0
- 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 +83 -0
- package/dist/BitcoinDlcProvider.d.ts +17 -16
- package/dist/BitcoinDlcProvider.js +375 -317
- 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 +637 -621
- package/lib/utils/Utils.ts +19 -24
- package/package.json +13 -11
- package/yalc.lock +10 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RoundingIntervals = void 0;
|
|
4
|
+
const bufio_1 = require("@node-dlc/bufio");
|
|
5
|
+
const MessageType_1 = require("../MessageType");
|
|
6
|
+
const util_1 = require("../util");
|
|
7
|
+
/**
|
|
8
|
+
* RoundingIntervals defines rounding intervals for numeric outcome contracts.
|
|
9
|
+
* Updated to match dlcspecs format (no longer uses TLV).
|
|
10
|
+
*/
|
|
11
|
+
class RoundingIntervals {
|
|
12
|
+
constructor() {
|
|
13
|
+
/**
|
|
14
|
+
* The type for rounding_intervals message. rounding_intervals = 42788
|
|
15
|
+
*/
|
|
16
|
+
this.type = RoundingIntervals.type;
|
|
17
|
+
this.intervals = [];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a RoundingIntervals from JSON data
|
|
21
|
+
* @param json JSON object representing rounding intervals
|
|
22
|
+
*/
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
|
|
24
|
+
static fromJSON(json) {
|
|
25
|
+
const instance = new RoundingIntervals();
|
|
26
|
+
const intervals = json.intervals || [];
|
|
27
|
+
instance.intervals = intervals.map((interval) => ({
|
|
28
|
+
beginInterval: (0, util_1.toBigInt)(interval.beginInterval || interval.begin_interval),
|
|
29
|
+
roundingMod: (0, util_1.toBigInt)(interval.roundingMod || interval.rounding_mod),
|
|
30
|
+
}));
|
|
31
|
+
return instance;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Deserializes a rounding_intervals message
|
|
35
|
+
* @param buf
|
|
36
|
+
*/
|
|
37
|
+
static deserialize(buf) {
|
|
38
|
+
const instance = new RoundingIntervals();
|
|
39
|
+
const reader = new bufio_1.BufferReader(buf);
|
|
40
|
+
const numRoundingIntervals = Number(reader.readBigSize());
|
|
41
|
+
for (let i = 0; i < numRoundingIntervals; i++) {
|
|
42
|
+
const beginInterval = reader.readUInt64BE();
|
|
43
|
+
const roundingMod = reader.readUInt64BE();
|
|
44
|
+
instance.intervals.push({ beginInterval, roundingMod });
|
|
45
|
+
}
|
|
46
|
+
return instance;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validates correctness of all fields in the message
|
|
50
|
+
* https://github.com/discreetlogcontracts/dlcspecs/blob/master/NumericOutcome.md#requirements
|
|
51
|
+
* @throws Will throw an error if validation fails
|
|
52
|
+
*/
|
|
53
|
+
validate() {
|
|
54
|
+
// 1. Intervals must be non-negative
|
|
55
|
+
for (const interval of this.intervals) {
|
|
56
|
+
if (interval.beginInterval < 0) {
|
|
57
|
+
throw new Error('beginInterval must be non-negative');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 2. Intervals must be strictly increasing
|
|
61
|
+
for (let i = 1; i < this.intervals.length; ++i) {
|
|
62
|
+
if (this.intervals[i - 1].beginInterval >= this.intervals[i].beginInterval) {
|
|
63
|
+
throw new Error(`Intervals must be strictly increasing`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Converts rounding_intervals to JSON
|
|
69
|
+
*/
|
|
70
|
+
toJSON() {
|
|
71
|
+
return {
|
|
72
|
+
intervals: this.intervals.map((interval) => {
|
|
73
|
+
return {
|
|
74
|
+
beginInterval: Number(interval.beginInterval),
|
|
75
|
+
roundingMod: Number(interval.roundingMod),
|
|
76
|
+
};
|
|
77
|
+
}),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Serializes the rounding_intervals message into a Buffer
|
|
82
|
+
*/
|
|
83
|
+
serialize() {
|
|
84
|
+
const writer = new bufio_1.BufferWriter();
|
|
85
|
+
writer.writeBigSize(this.intervals.length);
|
|
86
|
+
for (const interval of this.intervals) {
|
|
87
|
+
writer.writeUInt64BE(interval.beginInterval);
|
|
88
|
+
writer.writeUInt64BE(interval.roundingMod);
|
|
89
|
+
}
|
|
90
|
+
return writer.toBuffer();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.RoundingIntervals = RoundingIntervals;
|
|
94
|
+
RoundingIntervals.type = MessageType_1.MessageType.RoundingIntervals;
|
|
95
|
+
//# sourceMappingURL=RoundingIntervals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoundingIntervals.js","sourceRoot":"","sources":["../../lib/messages/RoundingIntervals.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,gDAA6C;AAC7C,kCAAmC;AAGnC;;;GAGG;AACH,MAAa,iBAAiB;IAA9B;QA0CE;;WAEG;QACI,SAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;QAE9B,cAAS,GAAgB,EAAE,CAAC;IAsDrC,CAAC;IAlGC;;;OAGG;IACH,iHAAiH;IAC1G,MAAM,CAAC,QAAQ,CAAC,IAAS;QAC9B,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC;YACrD,aAAa,EAAE,IAAA,eAAQ,EACrB,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,cAAc,CAClD;YACD,WAAW,EAAE,IAAA,eAAQ,EAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,YAAY,CAAC;SACrE,CAAC,CAAC,CAAC;QAEJ,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;YAE1C,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC;SACzD;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IASD;;;;OAIG;IACI,QAAQ;QACb,oCAAoC;QACpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,QAAQ,CAAC,aAAa,GAAG,CAAC,EAAE;gBAC9B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;aACvD;SACF;QAED,2CAA2C;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC9C,IACE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,EACtE;gBACA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;aAC1D;SACF;IACH,CAAC;IAED;;OAEG;IACI,MAAM;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACzC,OAAO;oBACL,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC7C,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;iBAC1C,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAElC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE3C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC7C,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SAC5C;QAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AApGH,8CAqGC;AApGe,sBAAI,GAAG,yBAAW,CAAC,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BufferReader } from '@node-dlc/bufio';
|
|
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 declare class ScriptWitnessV0 {
|
|
10
|
+
/**
|
|
11
|
+
* Deserializes an script_witness_v0 message
|
|
12
|
+
* @param buf
|
|
13
|
+
*/
|
|
14
|
+
static deserialize(buf: Buffer): ScriptWitnessV0;
|
|
15
|
+
static getWitness(reader: BufferReader): Buffer;
|
|
16
|
+
length: number;
|
|
17
|
+
witness: Buffer;
|
|
18
|
+
/**
|
|
19
|
+
* Converts script_witness_v0 to JSON
|
|
20
|
+
*/
|
|
21
|
+
toJSON(): IScriptWitnessV0JSON;
|
|
22
|
+
/**
|
|
23
|
+
* Serializes the script_witness_v0 message into a Buffer
|
|
24
|
+
*/
|
|
25
|
+
serialize(): Buffer;
|
|
26
|
+
}
|
|
27
|
+
export interface IScriptWitnessV0JSON {
|
|
28
|
+
witness: string;
|
|
29
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ScriptWitnessV0 = void 0;
|
|
4
|
+
const bufio_1 = require("@node-dlc/bufio");
|
|
5
|
+
/**
|
|
6
|
+
* ScriptWitness is the data for a witness element in a witness stack.
|
|
7
|
+
* An empty witness_stack is an error, as every input must be Segwit.
|
|
8
|
+
* Witness elements should not include their length as part of the witness
|
|
9
|
+
* data.
|
|
10
|
+
*/
|
|
11
|
+
class ScriptWitnessV0 {
|
|
12
|
+
/**
|
|
13
|
+
* Deserializes an script_witness_v0 message
|
|
14
|
+
* @param buf
|
|
15
|
+
*/
|
|
16
|
+
static deserialize(buf) {
|
|
17
|
+
const instance = new ScriptWitnessV0();
|
|
18
|
+
const reader = new bufio_1.BufferReader(buf);
|
|
19
|
+
instance.length = Number(reader.readBigSize());
|
|
20
|
+
instance.witness = reader.readBytes(instance.length);
|
|
21
|
+
return instance;
|
|
22
|
+
}
|
|
23
|
+
static getWitness(reader) {
|
|
24
|
+
const length = Number(reader.readBigSize());
|
|
25
|
+
const body = reader.readBytes(Number(length));
|
|
26
|
+
const writer = new bufio_1.BufferWriter();
|
|
27
|
+
writer.writeBigSize(length);
|
|
28
|
+
writer.writeBytes(body);
|
|
29
|
+
return writer.toBuffer();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Converts script_witness_v0 to JSON
|
|
33
|
+
*/
|
|
34
|
+
toJSON() {
|
|
35
|
+
return {
|
|
36
|
+
witness: this.witness.toString('hex'),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Serializes the script_witness_v0 message into a Buffer
|
|
41
|
+
*/
|
|
42
|
+
serialize() {
|
|
43
|
+
const writer = new bufio_1.BufferWriter();
|
|
44
|
+
writer.writeBigSize(this.witness.length);
|
|
45
|
+
writer.writeBytes(this.witness);
|
|
46
|
+
return writer.toBuffer();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ScriptWitnessV0 = ScriptWitnessV0;
|
|
50
|
+
//# sourceMappingURL=ScriptWitnessV0.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptWitnessV0.js","sourceRoot":"","sources":["../../lib/messages/ScriptWitnessV0.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D;;;;;GAKG;AACH,MAAa,eAAe;IAC1B;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAErD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAoB;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAMD;;OAEG;IACI,MAAM;QACX,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;SACtC,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAElC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEhC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AAlDD,0CAkDC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export declare class Tlv {
|
|
3
|
+
/**
|
|
4
|
+
* Deserializes an tlv message
|
|
5
|
+
* @param buf
|
|
6
|
+
*/
|
|
7
|
+
static deserialize(buf: Buffer): Tlv;
|
|
8
|
+
type: number;
|
|
9
|
+
length: bigint;
|
|
10
|
+
body: Buffer;
|
|
11
|
+
/**
|
|
12
|
+
* Serializes the tlv message into a Buffer
|
|
13
|
+
*/
|
|
14
|
+
serialize(): Buffer;
|
|
15
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Tlv = void 0;
|
|
4
|
+
const bufio_1 = require("@node-dlc/bufio");
|
|
5
|
+
class Tlv {
|
|
6
|
+
/**
|
|
7
|
+
* Deserializes an tlv message
|
|
8
|
+
* @param buf
|
|
9
|
+
*/
|
|
10
|
+
static deserialize(buf) {
|
|
11
|
+
const instance = new Tlv();
|
|
12
|
+
const reader = new bufio_1.BufferReader(buf);
|
|
13
|
+
instance.type = Number(reader.readBigSize()); // read type
|
|
14
|
+
instance.length = reader.readBigSize();
|
|
15
|
+
instance.body = reader.readBytes(Number(instance.length));
|
|
16
|
+
return instance;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Serializes the tlv message into a Buffer
|
|
20
|
+
*/
|
|
21
|
+
serialize() {
|
|
22
|
+
const writer = new bufio_1.BufferWriter();
|
|
23
|
+
writer.writeBigSize(this.type);
|
|
24
|
+
const dataWriter = new bufio_1.BufferWriter();
|
|
25
|
+
dataWriter.writeBytes(this.body);
|
|
26
|
+
writer.writeBigSize(dataWriter.size);
|
|
27
|
+
writer.writeBytes(dataWriter.toBuffer());
|
|
28
|
+
return writer.toBuffer();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.Tlv = Tlv;
|
|
32
|
+
//# sourceMappingURL=Tlv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tlv.js","sourceRoot":"","sources":["../../lib/messages/Tlv.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,MAAa,GAAG;IACd;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY;QAC1D,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAE1D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAQD;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,oBAAY,EAAE,CAAC;QAEtC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AArCD,kBAqCC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import Decimal from 'decimal.js';
|
|
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 declare class F64 {
|
|
12
|
+
private _buffer;
|
|
13
|
+
/**
|
|
14
|
+
* Create an F64 from raw bytes (IEEE 754 format)
|
|
15
|
+
*/
|
|
16
|
+
constructor(buffer?: Buffer);
|
|
17
|
+
/**
|
|
18
|
+
* Create F64 from JavaScript number
|
|
19
|
+
*/
|
|
20
|
+
static fromNumber(num: number): F64;
|
|
21
|
+
/**
|
|
22
|
+
* Create F64 from Decimal.js value
|
|
23
|
+
* Uses the most precise conversion possible
|
|
24
|
+
*/
|
|
25
|
+
static fromDecimal(decimal: Decimal): F64;
|
|
26
|
+
/**
|
|
27
|
+
* Create F64 from string representation
|
|
28
|
+
* Uses Decimal.js to parse the string without precision loss from JavaScript Number
|
|
29
|
+
*/
|
|
30
|
+
static fromString(str: string): F64;
|
|
31
|
+
/**
|
|
32
|
+
* Create F64 from bigint (treating as integer value)
|
|
33
|
+
*/
|
|
34
|
+
static fromBigInt(bigint: bigint): F64;
|
|
35
|
+
/**
|
|
36
|
+
* Create F64 representing zero (static method for API compatibility)
|
|
37
|
+
*/
|
|
38
|
+
static zero(): F64;
|
|
39
|
+
/**
|
|
40
|
+
* Create F64 with specific IEEE 754 components
|
|
41
|
+
*/
|
|
42
|
+
static fromComponents(sign: boolean, exponent: number, mantissa: bigint): F64;
|
|
43
|
+
/**
|
|
44
|
+
* Get the raw buffer containing IEEE 754 representation
|
|
45
|
+
*/
|
|
46
|
+
getBuffer(): Buffer;
|
|
47
|
+
/**
|
|
48
|
+
* Serialize to buffer (big-endian)
|
|
49
|
+
*/
|
|
50
|
+
serialize(): Buffer;
|
|
51
|
+
/**
|
|
52
|
+
* Deserialize from buffer (big-endian)
|
|
53
|
+
*/
|
|
54
|
+
static deserialize(buffer: Buffer): F64;
|
|
55
|
+
/**
|
|
56
|
+
* Write to BufferWriter
|
|
57
|
+
*/
|
|
58
|
+
writeTo(writer: any): void;
|
|
59
|
+
/**
|
|
60
|
+
* Read from BufferReader
|
|
61
|
+
*/
|
|
62
|
+
static readFrom(reader: any): F64;
|
|
63
|
+
/**
|
|
64
|
+
* Convert to JavaScript number
|
|
65
|
+
* This may lose precision for very large or very precise values
|
|
66
|
+
*/
|
|
67
|
+
toNumber(): number;
|
|
68
|
+
/**
|
|
69
|
+
* Convert to Decimal.js for arbitrary precision
|
|
70
|
+
*/
|
|
71
|
+
toDecimal(): Decimal;
|
|
72
|
+
/**
|
|
73
|
+
* Extract IEEE 754 components
|
|
74
|
+
*/
|
|
75
|
+
getComponents(): {
|
|
76
|
+
sign: boolean;
|
|
77
|
+
exponent: number;
|
|
78
|
+
mantissa: bigint;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Check if the value is finite
|
|
82
|
+
*/
|
|
83
|
+
isFinite(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Check if the value is NaN
|
|
86
|
+
*/
|
|
87
|
+
isNaN(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Check if the value is infinite
|
|
90
|
+
*/
|
|
91
|
+
isInfinite(): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Check if the value is zero
|
|
94
|
+
*/
|
|
95
|
+
isZero(): boolean;
|
|
96
|
+
/**
|
|
97
|
+
* Get string representation
|
|
98
|
+
*/
|
|
99
|
+
toString(): string;
|
|
100
|
+
/**
|
|
101
|
+
* Convert to JSON-safe value: number if within safe range, string if too large
|
|
102
|
+
* This preserves precision for very large numbers that exceed JavaScript's MAX_SAFE_INTEGER
|
|
103
|
+
*/
|
|
104
|
+
toJSONValue(): number | string;
|
|
105
|
+
/**
|
|
106
|
+
* Create F64 from JSON value (handles both number and string inputs)
|
|
107
|
+
*/
|
|
108
|
+
static fromJSONValue(value: number | string): F64;
|
|
109
|
+
/**
|
|
110
|
+
* Get hex representation of the raw bytes
|
|
111
|
+
*/
|
|
112
|
+
toHex(): string;
|
|
113
|
+
/**
|
|
114
|
+
* Create F64 from hex string
|
|
115
|
+
*/
|
|
116
|
+
static fromHex(hex: string): F64;
|
|
117
|
+
/**
|
|
118
|
+
* Compare with another F64
|
|
119
|
+
*/
|
|
120
|
+
equals(other: F64): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Equality comparison (alias for equals, for API compatibility)
|
|
123
|
+
*/
|
|
124
|
+
eq(other: F64 | number): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Greater than comparison
|
|
127
|
+
*/
|
|
128
|
+
gt(other: F64 | number): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Less than comparison
|
|
131
|
+
*/
|
|
132
|
+
lt(other: F64 | number): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Greater than or equal comparison
|
|
135
|
+
*/
|
|
136
|
+
gte(other: F64 | number): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Less than or equal comparison
|
|
139
|
+
*/
|
|
140
|
+
lte(other: F64 | number): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Create a copy
|
|
143
|
+
*/
|
|
144
|
+
clone(): F64;
|
|
145
|
+
/**
|
|
146
|
+
* Constants
|
|
147
|
+
*/
|
|
148
|
+
static get ZERO(): F64;
|
|
149
|
+
static get ONE(): F64;
|
|
150
|
+
static get NEGATIVE_ONE(): F64;
|
|
151
|
+
static get INFINITY(): F64;
|
|
152
|
+
static get NEGATIVE_INFINITY(): F64;
|
|
153
|
+
static get NaN(): F64;
|
|
154
|
+
}
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.F64 = void 0;
|
|
7
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
8
|
+
/**
|
|
9
|
+
* IEEE 754 double-precision floating-point number implementation
|
|
10
|
+
*
|
|
11
|
+
* Format: 1 bit sign + 11 bits exponent + 52 bits mantissa
|
|
12
|
+
*
|
|
13
|
+
* This class works directly with the binary representation to avoid
|
|
14
|
+
* precision loss when serializing/deserializing f64 values to/from buffers.
|
|
15
|
+
*/
|
|
16
|
+
class F64 {
|
|
17
|
+
/**
|
|
18
|
+
* Create an F64 from raw bytes (IEEE 754 format)
|
|
19
|
+
*/
|
|
20
|
+
constructor(buffer) {
|
|
21
|
+
if (buffer) {
|
|
22
|
+
if (buffer.length !== 8) {
|
|
23
|
+
throw new Error('F64 buffer must be exactly 8 bytes');
|
|
24
|
+
}
|
|
25
|
+
this._buffer = Buffer.from(buffer);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this._buffer = Buffer.alloc(8);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Create F64 from JavaScript number
|
|
33
|
+
*/
|
|
34
|
+
static fromNumber(num) {
|
|
35
|
+
const buffer = Buffer.alloc(8);
|
|
36
|
+
buffer.writeDoubleBE(num, 0);
|
|
37
|
+
return new F64(buffer);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create F64 from Decimal.js value
|
|
41
|
+
* Uses the most precise conversion possible
|
|
42
|
+
*/
|
|
43
|
+
static fromDecimal(decimal) {
|
|
44
|
+
// Convert to number and let IEEE 754 handle the precision
|
|
45
|
+
const num = decimal.toNumber();
|
|
46
|
+
return F64.fromNumber(num);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create F64 from string representation
|
|
50
|
+
* Uses Decimal.js to parse the string without precision loss from JavaScript Number
|
|
51
|
+
*/
|
|
52
|
+
static fromString(str) {
|
|
53
|
+
// Parse string using Decimal.js to avoid JavaScript Number precision loss
|
|
54
|
+
const decimal = new decimal_js_1.default(str);
|
|
55
|
+
return F64.fromDecimal(decimal);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Create F64 from bigint (treating as integer value)
|
|
59
|
+
*/
|
|
60
|
+
static fromBigInt(bigint) {
|
|
61
|
+
const num = Number(bigint);
|
|
62
|
+
return F64.fromNumber(num);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create F64 representing zero (static method for API compatibility)
|
|
66
|
+
*/
|
|
67
|
+
static zero() {
|
|
68
|
+
return F64.fromNumber(0);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create F64 with specific IEEE 754 components
|
|
72
|
+
*/
|
|
73
|
+
static fromComponents(sign, exponent, mantissa) {
|
|
74
|
+
if (exponent < 0 || exponent > 2047) {
|
|
75
|
+
throw new Error('Exponent must be between 0 and 2047');
|
|
76
|
+
}
|
|
77
|
+
if (mantissa < BigInt(0) || mantissa >= BigInt(1) << BigInt(52)) {
|
|
78
|
+
throw new Error('Mantissa must be between 0 and 2^52-1');
|
|
79
|
+
}
|
|
80
|
+
const buffer = Buffer.alloc(8);
|
|
81
|
+
// Pack into 64-bit big-endian format
|
|
82
|
+
// Bit layout: SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
|
|
83
|
+
const signBit = sign ? BigInt(1) : BigInt(0);
|
|
84
|
+
const expBits = BigInt(exponent);
|
|
85
|
+
const mantissaBits = mantissa;
|
|
86
|
+
const ieee754Bits = (signBit << BigInt(63)) | (expBits << BigInt(52)) | mantissaBits;
|
|
87
|
+
// Write as big-endian bytes
|
|
88
|
+
for (let i = 0; i < 8; i++) {
|
|
89
|
+
const byteValue = Number((ieee754Bits >> BigInt(56 - i * 8)) & BigInt(0xff));
|
|
90
|
+
buffer.writeUInt8(byteValue, i);
|
|
91
|
+
}
|
|
92
|
+
return new F64(buffer);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the raw buffer containing IEEE 754 representation
|
|
96
|
+
*/
|
|
97
|
+
getBuffer() {
|
|
98
|
+
return Buffer.from(this._buffer);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Serialize to buffer (big-endian)
|
|
102
|
+
*/
|
|
103
|
+
serialize() {
|
|
104
|
+
return this.getBuffer();
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Deserialize from buffer (big-endian)
|
|
108
|
+
*/
|
|
109
|
+
static deserialize(buffer) {
|
|
110
|
+
return new F64(buffer);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Write to BufferWriter
|
|
114
|
+
*/
|
|
115
|
+
writeTo(writer) {
|
|
116
|
+
writer.writeBytes(this._buffer);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Read from BufferReader
|
|
120
|
+
*/
|
|
121
|
+
static readFrom(reader) {
|
|
122
|
+
const buffer = reader.readBytes(8);
|
|
123
|
+
return new F64(buffer);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Convert to JavaScript number
|
|
127
|
+
* This may lose precision for very large or very precise values
|
|
128
|
+
*/
|
|
129
|
+
toNumber() {
|
|
130
|
+
return this._buffer.readDoubleBE(0);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Convert to Decimal.js for arbitrary precision
|
|
134
|
+
*/
|
|
135
|
+
toDecimal() {
|
|
136
|
+
return new decimal_js_1.default(this.toNumber());
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Extract IEEE 754 components
|
|
140
|
+
*/
|
|
141
|
+
getComponents() {
|
|
142
|
+
// Read as big-endian 64-bit integer
|
|
143
|
+
let ieee754Bits = BigInt(0);
|
|
144
|
+
for (let i = 0; i < 8; i++) {
|
|
145
|
+
ieee754Bits =
|
|
146
|
+
(ieee754Bits << BigInt(8)) | BigInt(this._buffer.readUInt8(i));
|
|
147
|
+
}
|
|
148
|
+
const sign = (ieee754Bits & (BigInt(1) << BigInt(63))) !== BigInt(0);
|
|
149
|
+
const exponent = Number((ieee754Bits >> BigInt(52)) & BigInt(0x7ff));
|
|
150
|
+
const mantissa = ieee754Bits & ((BigInt(1) << BigInt(52)) - BigInt(1));
|
|
151
|
+
return { sign, exponent, mantissa };
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if the value is finite
|
|
155
|
+
*/
|
|
156
|
+
isFinite() {
|
|
157
|
+
const { exponent } = this.getComponents();
|
|
158
|
+
return exponent !== 2047; // NaN and Infinity have exponent = 2047
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Check if the value is NaN
|
|
162
|
+
*/
|
|
163
|
+
isNaN() {
|
|
164
|
+
const { exponent, mantissa } = this.getComponents();
|
|
165
|
+
return exponent === 2047 && mantissa !== BigInt(0);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Check if the value is infinite
|
|
169
|
+
*/
|
|
170
|
+
isInfinite() {
|
|
171
|
+
const { exponent, mantissa } = this.getComponents();
|
|
172
|
+
return exponent === 2047 && mantissa === BigInt(0);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Check if the value is zero
|
|
176
|
+
*/
|
|
177
|
+
isZero() {
|
|
178
|
+
const { exponent, mantissa } = this.getComponents();
|
|
179
|
+
return exponent === 0 && mantissa === BigInt(0);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get string representation
|
|
183
|
+
*/
|
|
184
|
+
toString() {
|
|
185
|
+
return this.toNumber().toString();
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Convert to JSON-safe value: number if within safe range, string if too large
|
|
189
|
+
* This preserves precision for very large numbers that exceed JavaScript's MAX_SAFE_INTEGER
|
|
190
|
+
*/
|
|
191
|
+
toJSONValue() {
|
|
192
|
+
const num = this.toNumber();
|
|
193
|
+
// Check if the number is within JavaScript's safe integer range
|
|
194
|
+
if (num <= Number.MAX_SAFE_INTEGER && num >= Number.MIN_SAFE_INTEGER) {
|
|
195
|
+
return num;
|
|
196
|
+
}
|
|
197
|
+
// For very large numbers, return as string to preserve precision
|
|
198
|
+
return num.toString();
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Create F64 from JSON value (handles both number and string inputs)
|
|
202
|
+
*/
|
|
203
|
+
static fromJSONValue(value) {
|
|
204
|
+
if (typeof value === 'string') {
|
|
205
|
+
return F64.fromString(value);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
return F64.fromNumber(value);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get hex representation of the raw bytes
|
|
213
|
+
*/
|
|
214
|
+
toHex() {
|
|
215
|
+
return this._buffer.toString('hex');
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Create F64 from hex string
|
|
219
|
+
*/
|
|
220
|
+
static fromHex(hex) {
|
|
221
|
+
const buffer = Buffer.from(hex, 'hex');
|
|
222
|
+
if (buffer.length !== 8) {
|
|
223
|
+
throw new Error('Hex string must represent exactly 8 bytes');
|
|
224
|
+
}
|
|
225
|
+
return new F64(buffer);
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Compare with another F64
|
|
229
|
+
*/
|
|
230
|
+
equals(other) {
|
|
231
|
+
return this._buffer.equals(other._buffer);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Equality comparison (alias for equals, for API compatibility)
|
|
235
|
+
*/
|
|
236
|
+
eq(other) {
|
|
237
|
+
if (typeof other === 'number') {
|
|
238
|
+
return this.toNumber() === other;
|
|
239
|
+
}
|
|
240
|
+
return this.equals(other);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Greater than comparison
|
|
244
|
+
*/
|
|
245
|
+
gt(other) {
|
|
246
|
+
if (typeof other === 'number') {
|
|
247
|
+
return this.toNumber() > other;
|
|
248
|
+
}
|
|
249
|
+
return this.toNumber() > other.toNumber();
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Less than comparison
|
|
253
|
+
*/
|
|
254
|
+
lt(other) {
|
|
255
|
+
if (typeof other === 'number') {
|
|
256
|
+
return this.toNumber() < other;
|
|
257
|
+
}
|
|
258
|
+
return this.toNumber() < other.toNumber();
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Greater than or equal comparison
|
|
262
|
+
*/
|
|
263
|
+
gte(other) {
|
|
264
|
+
if (typeof other === 'number') {
|
|
265
|
+
return this.toNumber() >= other;
|
|
266
|
+
}
|
|
267
|
+
return this.toNumber() >= other.toNumber();
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Less than or equal comparison
|
|
271
|
+
*/
|
|
272
|
+
lte(other) {
|
|
273
|
+
if (typeof other === 'number') {
|
|
274
|
+
return this.toNumber() <= other;
|
|
275
|
+
}
|
|
276
|
+
return this.toNumber() <= other.toNumber();
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Create a copy
|
|
280
|
+
*/
|
|
281
|
+
clone() {
|
|
282
|
+
return new F64(this._buffer);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Constants
|
|
286
|
+
*/
|
|
287
|
+
static get ZERO() {
|
|
288
|
+
return F64.fromNumber(0);
|
|
289
|
+
}
|
|
290
|
+
static get ONE() {
|
|
291
|
+
return F64.fromNumber(1);
|
|
292
|
+
}
|
|
293
|
+
static get NEGATIVE_ONE() {
|
|
294
|
+
return F64.fromNumber(-1);
|
|
295
|
+
}
|
|
296
|
+
static get INFINITY() {
|
|
297
|
+
return F64.fromNumber(Number.POSITIVE_INFINITY);
|
|
298
|
+
}
|
|
299
|
+
static get NEGATIVE_INFINITY() {
|
|
300
|
+
return F64.fromNumber(Number.NEGATIVE_INFINITY);
|
|
301
|
+
}
|
|
302
|
+
static get NaN() {
|
|
303
|
+
return F64.fromNumber(Number.NaN);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
exports.F64 = F64;
|
|
307
|
+
//# sourceMappingURL=F64.js.map
|