@velocity-exchange/sdk 0.2.5 → 0.4.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/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
|
@@ -1,65 +1,136 @@
|
|
|
1
1
|
import { BN } from '../isomorphic/anchor';
|
|
2
2
|
import { MarketTypeStr, Order } from '../types';
|
|
3
3
|
import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
|
|
4
|
+
/**
|
|
5
|
+
* Picks the oracle price data shape a `DLOBNode` needs to compute its limit price for a given
|
|
6
|
+
* market type: `OraclePriceData` for spot markets, `MMOraclePriceData` (which layers in the
|
|
7
|
+
* market-maker oracle) for perp markets.
|
|
8
|
+
*/
|
|
4
9
|
export type NodeOraclePriceData<T extends MarketTypeStr = MarketTypeStr> = T extends 'spot' ? OraclePriceData : MMOraclePriceData;
|
|
10
|
+
/**
|
|
11
|
+
* A single order sitting in the DLOB, indexed by one of the sorted `NodeList`s. Wraps one
|
|
12
|
+
* on-chain `Order` plus DLOB-local bookkeeping (fill progress, sort key) used by
|
|
13
|
+
* `DLOB`'s crossing/fill-finding and L2/L3 book construction.
|
|
14
|
+
*/
|
|
5
15
|
export interface DLOBNode {
|
|
6
|
-
|
|
7
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Computes the node's current limit price, or `undefined` if it has none right now (e.g. a
|
|
18
|
+
* market/auction order still mid-auction with no fallback price, or an unset oracle-offset
|
|
19
|
+
* order below the tick floor). Callers that can tolerate "no price" (market orders crossing
|
|
20
|
+
* on a taker/maker basis, fallback-liquidity checks) should use this; callers that require a
|
|
21
|
+
* price to proceed should use `getPriceOrThrow` instead.
|
|
22
|
+
*
|
|
23
|
+
* @param oraclePriceData current oracle price data for the node's market (price in
|
|
24
|
+
* PRICE_PRECISION, 1e6)
|
|
25
|
+
* @param slot current slot, used to resolve auction/oracle-offset pricing
|
|
26
|
+
* @param tickSize market's order tick size, PRICE_PRECISION (1e6); when omitted this
|
|
27
|
+
* effectively rounds to the smallest price unit (no meaningful rounding) — pass the
|
|
28
|
+
* market's `orderTickSize` to match on-chain price standardization
|
|
29
|
+
* @returns limit price, PRICE_PRECISION (1e6), or `undefined` if the node has no price yet
|
|
30
|
+
*/
|
|
31
|
+
getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Same as `getPrice`, but throws instead of returning `undefined` when the node has no limit
|
|
34
|
+
* price. Use this wherever a missing price would be a bug (e.g. iterating resting limit
|
|
35
|
+
* orders, which always have a determinable price once the auction is complete).
|
|
36
|
+
*
|
|
37
|
+
* @param oraclePriceData current oracle price data for the node's market (price in
|
|
38
|
+
* PRICE_PRECISION, 1e6)
|
|
39
|
+
* @param slot current slot, used to resolve auction/oracle-offset pricing
|
|
40
|
+
* @param tickSize market's order tick size, PRICE_PRECISION (1e6); defaults to no rounding
|
|
41
|
+
* if omitted
|
|
42
|
+
* @returns limit price, PRICE_PRECISION (1e6)
|
|
43
|
+
* @throws if the underlying order has no limit price at this slot
|
|
44
|
+
*/
|
|
45
|
+
getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN;
|
|
46
|
+
/** True for synthetic vAMM liquidity nodes (not backed by an on-chain `Order`); always `false` for `OrderNode` subclasses. */
|
|
8
47
|
isVammNode(): boolean;
|
|
48
|
+
/** The on-chain order this node mirrors, or `undefined` for non-order (e.g. vAMM) nodes. */
|
|
9
49
|
order: Order | undefined;
|
|
50
|
+
/** True once `order.baseAssetAmountFilled` equals `order.baseAssetAmount` (fully filled). */
|
|
10
51
|
isBaseFilled(): boolean;
|
|
52
|
+
/** DLOB-local flag set by crossing/fill-finding once this node has been matched in the current pass, so it isn't matched twice. */
|
|
11
53
|
haveFilled: boolean;
|
|
54
|
+
/** Base58 pubkey string of the `User` account that owns this order, or `undefined` if not applicable. */
|
|
12
55
|
userAccount: string | undefined;
|
|
56
|
+
/** True if this order arrived as an off-chain signed message (not yet landed on-chain) rather than a resting on-chain order. */
|
|
13
57
|
isSignedMsg: boolean | undefined;
|
|
58
|
+
/** Remaining base asset amount tracked by this node, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount` if not overridden at insert time. */
|
|
14
59
|
baseAssetAmount: BN;
|
|
15
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Base class for all order-backed DLOB nodes. Holds a defensive copy of the on-chain `Order`
|
|
63
|
+
* plus a `sortValue` (the field each `NodeList` sorts on) computed by the concrete subclass's
|
|
64
|
+
* `getSortValue`. Concrete subclasses (`RestingLimitOrderNode`, `TakingLimitOrderNode`, etc.)
|
|
65
|
+
* only differ in which `Order` field they sort by and which `NodeList` bucket they belong to.
|
|
66
|
+
*/
|
|
16
67
|
export declare abstract class OrderNode implements DLOBNode {
|
|
17
68
|
order: Order;
|
|
18
69
|
userAccount: string;
|
|
70
|
+
/** The value this node is sorted by within its `NodeList`; set from `getSortValue(order)` at construction and not auto-updated on order changes. */
|
|
19
71
|
sortValue: BN;
|
|
20
72
|
haveFilled: boolean;
|
|
21
73
|
haveTrigger: boolean;
|
|
22
74
|
baseAssetAmount: BN;
|
|
23
75
|
isSignedMsg: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* @param order on-chain order to wrap; a shallow copy is stored so DLOB mutations don't alias the caller's object
|
|
78
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
79
|
+
* @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount` (used for reduce-only orders where the fillable amount is smaller than the order's stated size)
|
|
80
|
+
* @param isSignedMsg whether this node represents an off-chain signed-message order rather than a resting on-chain order; defaults to `false`
|
|
81
|
+
*/
|
|
24
82
|
constructor(order: Order, userAccount: string, baseAssetAmount?: BN, isSignedMsg?: boolean);
|
|
83
|
+
/** Returns the field of `order` this node type sorts on within its `NodeList` (e.g. price, slot, trigger price, or oracle offset). */
|
|
25
84
|
abstract getSortValue(order: Order): BN;
|
|
85
|
+
/** Builds a one-line human-readable summary of the order (id, side, size, price, trigger) for `NodeList.print`/`printTop` debugging output. */
|
|
26
86
|
getLabel(): string;
|
|
27
|
-
getPrice
|
|
28
|
-
|
|
87
|
+
/** See `DLOBNode.getPrice`. Delegates to `getLimitPrice`, which resolves auction, oracle-offset, and fixed-price orders in that priority. */
|
|
88
|
+
getPrice<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN | undefined;
|
|
89
|
+
/** See `DLOBNode.getPriceOrThrow`. @throws if `getPrice` returns `undefined` for this order. */
|
|
90
|
+
getPriceOrThrow<T extends MarketTypeStr>(oraclePriceData: NodeOraclePriceData<T>, slot: number, tickSize?: BN): BN;
|
|
91
|
+
/** True once the wrapped order's `baseAssetAmountFilled` equals its `baseAssetAmount` (BASE_PRECISION, 1e9). */
|
|
29
92
|
isBaseFilled(): boolean;
|
|
93
|
+
/** Always `false` — order-backed nodes are never vAMM nodes. */
|
|
30
94
|
isVammNode(): boolean;
|
|
31
95
|
}
|
|
96
|
+
/** A limit order whose auction has not yet completed (still crossable as a taker); sorted ascending by `order.slot` (arrival order) within its `NodeList`. Promoted to a `RestingLimitOrderNode` once its auction completes or it settles as post-only, via `DLOB.updateRestingLimitOrders`. */
|
|
32
97
|
export declare class TakingLimitOrderNode extends OrderNode {
|
|
33
98
|
next?: TakingLimitOrderNode;
|
|
34
99
|
previous?: TakingLimitOrderNode;
|
|
35
100
|
getSortValue(order: Order): BN;
|
|
36
101
|
}
|
|
102
|
+
/** A limit order with a fixed (non-oracle-relative) price whose auction has completed, or that is post-only; sorted by `order.price` (PRICE_PRECISION, 1e6) — ascending for asks, descending for bids. This is the DLOB's standard resting maker order. */
|
|
37
103
|
export declare class RestingLimitOrderNode extends OrderNode {
|
|
38
104
|
next?: RestingLimitOrderNode;
|
|
39
105
|
previous?: RestingLimitOrderNode;
|
|
40
106
|
getSortValue(order: Order): BN;
|
|
41
107
|
}
|
|
108
|
+
/** A resting limit order priced relative to the oracle (`oraclePriceOffset != 0`); sorted by `order.oraclePriceOffset` (PRICE_PRECISION, 1e6, signed) rather than an absolute price, since its effective price moves with the oracle. */
|
|
42
109
|
export declare class FloatingLimitOrderNode extends OrderNode {
|
|
43
110
|
next?: FloatingLimitOrderNode;
|
|
44
111
|
previous?: FloatingLimitOrderNode;
|
|
45
112
|
getSortValue(order: Order): BN;
|
|
46
113
|
}
|
|
114
|
+
/** A market order (or an order otherwise treated as market/oracle-priced); sorted ascending by `order.slot` (arrival order) since market orders have no fixed price to sort by. */
|
|
47
115
|
export declare class MarketOrderNode extends OrderNode {
|
|
48
116
|
next?: MarketOrderNode;
|
|
49
117
|
previous?: MarketOrderNode;
|
|
50
118
|
getSortValue(order: Order): BN;
|
|
51
119
|
}
|
|
120
|
+
/** A trigger (stop-loss/take-profit) order that has not yet fired; sorted by `order.triggerPrice` (PRICE_PRECISION, 1e6) — ascending in the "above" list, descending in the "below" list — so `DLOB.findNodesToTrigger` can stop scanning as soon as the trigger price is no longer crossed. */
|
|
52
121
|
export declare class TriggerOrderNode extends OrderNode {
|
|
53
122
|
next?: TriggerOrderNode;
|
|
54
123
|
previous?: TriggerOrderNode;
|
|
55
124
|
getSortValue(order: Order): BN;
|
|
56
125
|
}
|
|
126
|
+
/** An order that arrived as an off-chain signed message and has not yet landed on-chain; always constructed with `isSignedMsg = true`. Sorted ascending by `order.slot`. */
|
|
57
127
|
export declare class SignedMsgOrderNode extends OrderNode {
|
|
58
128
|
next?: SignedMsgOrderNode;
|
|
59
129
|
previous?: SignedMsgOrderNode;
|
|
60
130
|
constructor(order: Order, userAccount: string, baseAssetAmount?: BN);
|
|
61
131
|
getSortValue(order: Order): BN;
|
|
62
132
|
}
|
|
133
|
+
/** Maps each `DLOBNodeType` key to its concrete `OrderNode` subclass; used to type `NodeList<T>` and `createNode`'s return value. */
|
|
63
134
|
export type DLOBNodeMap = {
|
|
64
135
|
restingLimit: RestingLimitOrderNode;
|
|
65
136
|
takingLimit: TakingLimitOrderNode;
|
|
@@ -68,6 +139,17 @@ export type DLOBNodeMap = {
|
|
|
68
139
|
trigger: TriggerOrderNode;
|
|
69
140
|
signedMsg: SignedMsgOrderNode;
|
|
70
141
|
};
|
|
142
|
+
/** The discriminant used to pick which `NodeList` (and thus sort order) an order belongs in. */
|
|
71
143
|
export type DLOBNodeType = 'signedMsg' | 'restingLimit' | 'takingLimit' | 'floatingLimit' | 'market' | ('trigger' & keyof DLOBNodeMap);
|
|
144
|
+
/**
|
|
145
|
+
* Constructs the concrete `OrderNode` subclass for a given `DLOBNodeType`.
|
|
146
|
+
*
|
|
147
|
+
* @param nodeType which node subclass to build; determines the node's sort key (see `DLOBNodeMap`)
|
|
148
|
+
* @param order on-chain order to wrap (copied, not mutated)
|
|
149
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
150
|
+
* @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount`
|
|
151
|
+
* @returns a new node instance of the type matching `nodeType`
|
|
152
|
+
* @throws if `nodeType` is not one of the known `DLOBNodeType` values
|
|
153
|
+
*/
|
|
72
154
|
export declare function createNode<T extends DLOBNodeType>(nodeType: T, order: Order, userAccount: string, baseAssetAmount?: BN): DLOBNodeMap[T];
|
|
73
155
|
//# sourceMappingURL=DLOBNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DLOBNode.d.ts","sourceRoot":"","sources":["../../../src/dlob/DLOBNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAO1C,OAAO,EAAa,aAAa,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAItE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IACtE,CAAC,SAAS,MAAM,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAExD,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,CAAC,SAAS,aAAa,EAC/B,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"DLOBNode.d.ts","sourceRoot":"","sources":["../../../src/dlob/DLOBNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAO1C,OAAO,EAAa,aAAa,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAItE;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IACtE,CAAC,SAAS,MAAM,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAExD;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACxB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,CAAC,SAAS,aAAa,EAC/B,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,EAAE,GACX,EAAE,GAAG,SAAS,CAAC;IAClB;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,CAAC,SAAS,aAAa,EACtC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,EAAE,GACX,EAAE,CAAC;IACN,8HAA8H;IAC9H,UAAU,IAAI,OAAO,CAAC;IACtB,4FAA4F;IAC5F,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,6FAA6F;IAC7F,YAAY,IAAI,OAAO,CAAC;IACxB,mIAAmI;IACnI,UAAU,EAAE,OAAO,CAAC;IACpB,yGAAyG;IACzG,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,gIAAgI;IAChI,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,oJAAoJ;IACpJ,eAAe,EAAE,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,8BAAsB,SAAU,YAAW,QAAQ;IAClD,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,oJAAoJ;IACpJ,SAAS,EAAE,EAAE,CAAC;IACd,UAAU,UAAS;IACnB,WAAW,UAAS;IACpB,eAAe,EAAE,EAAE,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IAErB;;;;;OAKG;gBAEF,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,EAAE,EACpB,WAAW,UAAQ;IAUpB,sIAAsI;IACtI,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE;IAEvC,+IAA+I;IACxI,QAAQ,IAAI,MAAM;IA2BzB,6IAA6I;IAC7I,QAAQ,CAAC,CAAC,SAAS,aAAa,EAC/B,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,EAAE,GACX,EAAE,GAAG,SAAS;IAUjB,gGAAgG;IAChG,eAAe,CAAC,CAAC,SAAS,aAAa,EACtC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,EAAE,GACX,EAAE;IAUL,gHAAgH;IAChH,YAAY,IAAI,OAAO;IAIvB,gEAAgE;IAChE,UAAU,IAAI,OAAO;CAGrB;AAED,gSAAgS;AAChS,qBAAa,oBAAqB,SAAQ,SAAS;IAClD,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAEhC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE;CAG9B;AAED,2PAA2P;AAC3P,qBAAa,qBAAsB,SAAQ,SAAS;IACnD,IAAI,CAAC,EAAE,qBAAqB,CAAC;IAC7B,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAEjC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE;CAG9B;AAED,yOAAyO;AACzO,qBAAa,sBAAuB,SAAQ,SAAS;IACpD,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAElC,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE;CAG9B;AAED,mLAAmL;AACnL,qBAAa,eAAgB,SAAQ,SAAS;IAC7C,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE;CAG9B;AAED,gSAAgS;AAChS,qBAAa,gBAAiB,SAAQ,SAAS;IAC9C,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE;CAG9B;AAGD,4KAA4K;AAC5K,qBAAa,kBAAmB,SAAQ,SAAS;IAChD,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;gBAElB,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,EAAE;IAInE,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE;CAG9B;AAED,qIAAqI;AACrI,MAAM,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE,qBAAqB,CAAC;IACpC,WAAW,EAAE,oBAAoB,CAAC;IAClC,aAAa,EAAE,sBAAsB,CAAC;IACtC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,SAAS,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AAEF,gGAAgG;AAChG,MAAM,MAAM,YAAY,GACrB,WAAW,GACX,cAAc,GACd,aAAa,GACb,eAAe,GACf,QAAQ,GACR,CAAC,SAAS,GAAG,MAAM,WAAW,CAAC,CAAC;AAEnC;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,YAAY,EAChD,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,EAAE,GAClB,WAAW,CAAC,CAAC,CAAC,CAiBhB"}
|
|
@@ -6,7 +6,19 @@ const orders_1 = require("../math/orders");
|
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
const conversion_1 = require("../math/conversion");
|
|
8
8
|
const NodeList_1 = require("./NodeList");
|
|
9
|
+
/**
|
|
10
|
+
* Base class for all order-backed DLOB nodes. Holds a defensive copy of the on-chain `Order`
|
|
11
|
+
* plus a `sortValue` (the field each `NodeList` sorts on) computed by the concrete subclass's
|
|
12
|
+
* `getSortValue`. Concrete subclasses (`RestingLimitOrderNode`, `TakingLimitOrderNode`, etc.)
|
|
13
|
+
* only differ in which `Order` field they sort by and which `NodeList` bucket they belong to.
|
|
14
|
+
*/
|
|
9
15
|
class OrderNode {
|
|
16
|
+
/**
|
|
17
|
+
* @param order on-chain order to wrap; a shallow copy is stored so DLOB mutations don't alias the caller's object
|
|
18
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
19
|
+
* @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount` (used for reduce-only orders where the fillable amount is smaller than the order's stated size)
|
|
20
|
+
* @param isSignedMsg whether this node represents an off-chain signed-message order rather than a resting on-chain order; defaults to `false`
|
|
21
|
+
*/
|
|
10
22
|
constructor(order, userAccount, baseAssetAmount, isSignedMsg = false) {
|
|
11
23
|
this.haveFilled = false;
|
|
12
24
|
this.haveTrigger = false;
|
|
@@ -17,6 +29,7 @@ class OrderNode {
|
|
|
17
29
|
this.baseAssetAmount = baseAssetAmount !== null && baseAssetAmount !== void 0 ? baseAssetAmount : order.baseAssetAmount;
|
|
18
30
|
this.isSignedMsg = isSignedMsg;
|
|
19
31
|
}
|
|
32
|
+
/** Builds a one-line human-readable summary of the order (id, side, size, price, trigger) for `NodeList.print`/`printTop` debugging output. */
|
|
20
33
|
getLabel() {
|
|
21
34
|
let msg = `Order ${(0, NodeList_1.getOrderSignature)(this.order.orderId, this.userAccount)}`;
|
|
22
35
|
msg += ` ${(0, types_1.isVariant)(this.order.direction, 'long') ? 'LONG' : 'SHORT'} `;
|
|
@@ -30,48 +43,57 @@ class OrderNode {
|
|
|
30
43
|
}
|
|
31
44
|
return msg;
|
|
32
45
|
}
|
|
33
|
-
getPrice
|
|
34
|
-
|
|
46
|
+
/** See `DLOBNode.getPrice`. Delegates to `getLimitPrice`, which resolves auction, oracle-offset, and fixed-price orders in that priority. */
|
|
47
|
+
getPrice(oraclePriceData, slot, tickSize) {
|
|
48
|
+
return (0, orders_1.getLimitPrice)(this.order, oraclePriceData, slot, undefined, tickSize);
|
|
35
49
|
}
|
|
36
|
-
getPriceOrThrow
|
|
37
|
-
|
|
50
|
+
/** See `DLOBNode.getPriceOrThrow`. @throws if `getPrice` returns `undefined` for this order. */
|
|
51
|
+
getPriceOrThrow(oraclePriceData, slot, tickSize) {
|
|
52
|
+
const price = this.getPrice(oraclePriceData, slot, tickSize);
|
|
38
53
|
if (price === undefined) {
|
|
39
54
|
throw new Error(`OrderNode.getPrice: order ${this.order.orderId} has no limit price`);
|
|
40
55
|
}
|
|
41
56
|
return price;
|
|
42
57
|
}
|
|
58
|
+
/** True once the wrapped order's `baseAssetAmountFilled` equals its `baseAssetAmount` (BASE_PRECISION, 1e9). */
|
|
43
59
|
isBaseFilled() {
|
|
44
60
|
return this.order.baseAssetAmountFilled.eq(this.order.baseAssetAmount);
|
|
45
61
|
}
|
|
62
|
+
/** Always `false` — order-backed nodes are never vAMM nodes. */
|
|
46
63
|
isVammNode() {
|
|
47
64
|
return false;
|
|
48
65
|
}
|
|
49
66
|
}
|
|
50
67
|
exports.OrderNode = OrderNode;
|
|
68
|
+
/** A limit order whose auction has not yet completed (still crossable as a taker); sorted ascending by `order.slot` (arrival order) within its `NodeList`. Promoted to a `RestingLimitOrderNode` once its auction completes or it settles as post-only, via `DLOB.updateRestingLimitOrders`. */
|
|
51
69
|
class TakingLimitOrderNode extends OrderNode {
|
|
52
70
|
getSortValue(order) {
|
|
53
71
|
return order.slot;
|
|
54
72
|
}
|
|
55
73
|
}
|
|
56
74
|
exports.TakingLimitOrderNode = TakingLimitOrderNode;
|
|
75
|
+
/** A limit order with a fixed (non-oracle-relative) price whose auction has completed, or that is post-only; sorted by `order.price` (PRICE_PRECISION, 1e6) — ascending for asks, descending for bids. This is the DLOB's standard resting maker order. */
|
|
57
76
|
class RestingLimitOrderNode extends OrderNode {
|
|
58
77
|
getSortValue(order) {
|
|
59
78
|
return order.price;
|
|
60
79
|
}
|
|
61
80
|
}
|
|
62
81
|
exports.RestingLimitOrderNode = RestingLimitOrderNode;
|
|
82
|
+
/** A resting limit order priced relative to the oracle (`oraclePriceOffset != 0`); sorted by `order.oraclePriceOffset` (PRICE_PRECISION, 1e6, signed) rather than an absolute price, since its effective price moves with the oracle. */
|
|
63
83
|
class FloatingLimitOrderNode extends OrderNode {
|
|
64
84
|
getSortValue(order) {
|
|
65
85
|
return order.oraclePriceOffset;
|
|
66
86
|
}
|
|
67
87
|
}
|
|
68
88
|
exports.FloatingLimitOrderNode = FloatingLimitOrderNode;
|
|
89
|
+
/** A market order (or an order otherwise treated as market/oracle-priced); sorted ascending by `order.slot` (arrival order) since market orders have no fixed price to sort by. */
|
|
69
90
|
class MarketOrderNode extends OrderNode {
|
|
70
91
|
getSortValue(order) {
|
|
71
92
|
return order.slot;
|
|
72
93
|
}
|
|
73
94
|
}
|
|
74
95
|
exports.MarketOrderNode = MarketOrderNode;
|
|
96
|
+
/** A trigger (stop-loss/take-profit) order that has not yet fired; sorted by `order.triggerPrice` (PRICE_PRECISION, 1e6) — ascending in the "above" list, descending in the "below" list — so `DLOB.findNodesToTrigger` can stop scanning as soon as the trigger price is no longer crossed. */
|
|
75
97
|
class TriggerOrderNode extends OrderNode {
|
|
76
98
|
getSortValue(order) {
|
|
77
99
|
return order.triggerPrice;
|
|
@@ -79,6 +101,7 @@ class TriggerOrderNode extends OrderNode {
|
|
|
79
101
|
}
|
|
80
102
|
exports.TriggerOrderNode = TriggerOrderNode;
|
|
81
103
|
// We'll use the signedMsg uuid for the order id since it's not yet on-chain
|
|
104
|
+
/** An order that arrived as an off-chain signed message and has not yet landed on-chain; always constructed with `isSignedMsg = true`. Sorted ascending by `order.slot`. */
|
|
82
105
|
class SignedMsgOrderNode extends OrderNode {
|
|
83
106
|
constructor(order, userAccount, baseAssetAmount) {
|
|
84
107
|
super(order, userAccount, baseAssetAmount, true);
|
|
@@ -88,6 +111,16 @@ class SignedMsgOrderNode extends OrderNode {
|
|
|
88
111
|
}
|
|
89
112
|
}
|
|
90
113
|
exports.SignedMsgOrderNode = SignedMsgOrderNode;
|
|
114
|
+
/**
|
|
115
|
+
* Constructs the concrete `OrderNode` subclass for a given `DLOBNodeType`.
|
|
116
|
+
*
|
|
117
|
+
* @param nodeType which node subclass to build; determines the node's sort key (see `DLOBNodeMap`)
|
|
118
|
+
* @param order on-chain order to wrap (copied, not mutated)
|
|
119
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
120
|
+
* @param baseAssetAmount remaining base amount to track, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount`
|
|
121
|
+
* @returns a new node instance of the type matching `nodeType`
|
|
122
|
+
* @throws if `nodeType` is not one of the known `DLOBNodeType` values
|
|
123
|
+
*/
|
|
91
124
|
function createNode(nodeType, order, userAccount, baseAssetAmount) {
|
|
92
125
|
switch (nodeType) {
|
|
93
126
|
case 'floatingLimit':
|
|
@@ -7,28 +7,50 @@ import { VelocityClient } from '../velocityClient';
|
|
|
7
7
|
import { MarketType } from '../types';
|
|
8
8
|
import { L2OrderBook, L2OrderBookGenerator, L3OrderBook } from './orderBookLevels';
|
|
9
9
|
import { BN } from '../isomorphic/anchor';
|
|
10
|
+
/**
|
|
11
|
+
* Keeps a `DLOB` snapshot fresh on a timer and exposes convenience `getL2`/`getL3` accessors that
|
|
12
|
+
* resolve market name/index/type and oracle price data via `velocityClient` so callers don't have
|
|
13
|
+
* to. Until `subscribe()` resolves at least once, `getDLOB()`/`getL2`/`getL3` operate on an empty
|
|
14
|
+
* `DLOB`.
|
|
15
|
+
*/
|
|
10
16
|
export declare class DLOBSubscriber {
|
|
11
17
|
velocityClient: VelocityClient;
|
|
12
18
|
dlobSource: DLOBSource;
|
|
13
19
|
slotSource: SlotSource;
|
|
20
|
+
/** Polling interval in milliseconds between `DLOB` refreshes. */
|
|
14
21
|
updateFrequency: number;
|
|
22
|
+
/** Handle of the active polling timer, or `undefined` before `subscribe()`/after `unsubscribe()`. */
|
|
15
23
|
intervalId?: ReturnType<typeof setTimeout>;
|
|
24
|
+
/** The current `DLOB` snapshot; replaced wholesale on each refresh rather than mutated. */
|
|
16
25
|
dlob: DLOB;
|
|
26
|
+
/** Emits `'update'` after each successful refresh and `'error'` if a refresh throws. */
|
|
17
27
|
eventEmitter: StrictEventEmitter<EventEmitter, DLOBSubscriberEvents>;
|
|
28
|
+
/** @throws if `config.velocityClient` is not provided. */
|
|
18
29
|
constructor(config: DLOBSubscriptionConfig);
|
|
30
|
+
/**
|
|
31
|
+
* Fetches an initial `DLOB` snapshot (awaited before returning) and then starts a timer that
|
|
32
|
+
* refreshes it every `updateFrequency` ms, emitting `'update'` on success or `'error'` if the
|
|
33
|
+
* fetch throws. No-ops if already subscribed.
|
|
34
|
+
*/
|
|
19
35
|
subscribe(): Promise<void>;
|
|
36
|
+
/** Fetches a new `DLOB` snapshot at the current slot (from `slotSource`) via `dlobSource.getDLOB` and replaces `this.dlob`. */
|
|
20
37
|
updateDLOB(): Promise<void>;
|
|
38
|
+
/** @returns the most recently fetched `DLOB` snapshot (empty until the first successful `subscribe()`/`updateDLOB()`). */
|
|
21
39
|
getDLOB(): DLOB;
|
|
22
40
|
/**
|
|
23
|
-
* Get the L2 order book for a given market
|
|
41
|
+
* Get the L2 (aggregated price/size) order book for a given market, using the current
|
|
42
|
+
* `DLOB` snapshot and the current slot from `slotSource`.
|
|
24
43
|
*
|
|
25
|
-
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
|
|
26
|
-
* @param marketIndex
|
|
27
|
-
* @param marketType
|
|
28
|
-
* @param depth
|
|
29
|
-
* @param includeVamm
|
|
30
|
-
* @param
|
|
31
|
-
* @param
|
|
44
|
+
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
|
|
45
|
+
* @param marketIndex market index; ignored if `marketName` is provided
|
|
46
|
+
* @param marketType market type; ignored if `marketName` is provided
|
|
47
|
+
* @param depth number of price levels to include per side; defaults to 10
|
|
48
|
+
* @param includeVamm whether to synthesize and merge in vAMM liquidity (perp markets only) via `getVammL2Generator`; defaults to `false`. Throws if `true` and `fallbackL2Generators` is non-empty.
|
|
49
|
+
* @param numVammOrders number of vAMM levels to generate per side when `includeVamm` is true; defaults to `depth`
|
|
50
|
+
* @param fallbackL2Generators additional non-DLOB liquidity sources to merge in, e.g. `getVammL2Generator`'s output; defaults to `[]`
|
|
51
|
+
* @param latestSlot latest observed slot (e.g. from a `SlotSubscriber`), used for more accurate vAMM spread-reserve quotes when `includeVamm` is true; optional
|
|
52
|
+
* @returns the merged `L2OrderBook` (bids/asks with sizes, BASE_PRECISION 1e9, and prices, PRICE_PRECISION 1e6)
|
|
53
|
+
* @throws if `marketName` doesn't resolve to a known market, if neither `marketName` nor both `marketIndex`/`marketType` are given, or if `includeVamm` is combined with a non-empty `fallbackL2Generators`
|
|
32
54
|
*/
|
|
33
55
|
getL2({ marketName, marketIndex, marketType, depth, includeVamm, numVammOrders, fallbackL2Generators, latestSlot, }: {
|
|
34
56
|
marketName?: string;
|
|
@@ -41,17 +63,22 @@ export declare class DLOBSubscriber {
|
|
|
41
63
|
latestSlot?: BN;
|
|
42
64
|
}): L2OrderBook;
|
|
43
65
|
/**
|
|
44
|
-
* Get the L3 order book for a given market
|
|
66
|
+
* Get the L3 (individual resting order) book for a given market, using the current `DLOB`
|
|
67
|
+
* snapshot and the current slot from `slotSource`. Does not include fallback (e.g. vAMM)
|
|
68
|
+
* liquidity.
|
|
45
69
|
*
|
|
46
|
-
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
|
|
47
|
-
* @param marketIndex
|
|
48
|
-
* @param marketType
|
|
70
|
+
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
|
|
71
|
+
* @param marketIndex market index; ignored if `marketName` is provided
|
|
72
|
+
* @param marketType market type; ignored if `marketName` is provided
|
|
73
|
+
* @returns the `L3OrderBook` (per-order price/size/maker/orderId, prices PRICE_PRECISION 1e6, sizes BASE_PRECISION 1e9)
|
|
74
|
+
* @throws if `marketName` doesn't resolve to a known market, or if neither `marketName` nor both `marketIndex`/`marketType` are given
|
|
49
75
|
*/
|
|
50
76
|
getL3({ marketName, marketIndex, marketType, }: {
|
|
51
77
|
marketName?: string;
|
|
52
78
|
marketIndex?: number;
|
|
53
79
|
marketType?: MarketType;
|
|
54
80
|
}): L3OrderBook;
|
|
81
|
+
/** Stops the periodic refresh timer, if running. Safe to call when not subscribed. */
|
|
55
82
|
unsubscribe(): Promise<void>;
|
|
56
83
|
}
|
|
57
84
|
//# sourceMappingURL=DLOBSubscriber.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DLOBSubscriber.d.ts","sourceRoot":"","sources":["../../../src/dlob/DLOBSubscriber.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACN,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAa,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAIN,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C,qBAAa,cAAc;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC3C,IAAI,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"DLOBSubscriber.d.ts","sourceRoot":"","sources":["../../../src/dlob/DLOBSubscriber.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACN,UAAU,EACV,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAa,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAIN,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C;;;;;GAKG;AACH,qBAAa,cAAc;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,iEAAiE;IACjE,eAAe,EAAE,MAAM,CAAC;IACxB,qGAAqG;IACrG,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC3C,2FAA2F;IAC3F,IAAI,EAAE,IAAI,CAAC;IACX,wFAAwF;IACjF,YAAY,EAAE,kBAAkB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;IAC5E,0DAA0D;gBAC9C,MAAM,EAAE,sBAAsB;IAa1C;;;;OAIG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBvC,+HAA+H;IACzH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,0HAA0H;IACnH,OAAO,IAAI,IAAI;IAItB;;;;;;;;;;;;;;OAcG;IACI,KAAK,CAAC,EACZ,UAAU,EACV,WAAW,EACX,UAAU,EACV,KAAU,EACV,WAAmB,EACnB,aAAa,EACb,oBAAyB,EACzB,UAAU,GACV,EAAE;QACF,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,CAAC;QAC9C,UAAU,CAAC,EAAE,EAAE,CAAC;KAChB,GAAG,WAAW;IA0Ef;;;;;;;;;;OAUG;IACI,KAAK,CAAC,EACZ,UAAU,EACV,WAAW,EACX,UAAU,GACV,EAAE;QACF,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,UAAU,CAAC;KACxB,GAAG,WAAW;IA+Cf,sFAAsF;IACzE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAMzC"}
|
|
@@ -5,7 +5,14 @@ const DLOB_1 = require("./DLOB");
|
|
|
5
5
|
const events_1 = require("events");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
const orderBookLevels_1 = require("./orderBookLevels");
|
|
8
|
+
/**
|
|
9
|
+
* Keeps a `DLOB` snapshot fresh on a timer and exposes convenience `getL2`/`getL3` accessors that
|
|
10
|
+
* resolve market name/index/type and oracle price data via `velocityClient` so callers don't have
|
|
11
|
+
* to. Until `subscribe()` resolves at least once, `getDLOB()`/`getL2`/`getL3` operate on an empty
|
|
12
|
+
* `DLOB`.
|
|
13
|
+
*/
|
|
8
14
|
class DLOBSubscriber {
|
|
15
|
+
/** @throws if `config.velocityClient` is not provided. */
|
|
9
16
|
constructor(config) {
|
|
10
17
|
const velocityClient = config.velocityClient;
|
|
11
18
|
if (!velocityClient) {
|
|
@@ -18,6 +25,11 @@ class DLOBSubscriber {
|
|
|
18
25
|
this.dlob = new DLOB_1.DLOB();
|
|
19
26
|
this.eventEmitter = new events_1.EventEmitter();
|
|
20
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Fetches an initial `DLOB` snapshot (awaited before returning) and then starts a timer that
|
|
30
|
+
* refreshes it every `updateFrequency` ms, emitting `'update'` on success or `'error'` if the
|
|
31
|
+
* fetch throws. No-ops if already subscribed.
|
|
32
|
+
*/
|
|
21
33
|
async subscribe() {
|
|
22
34
|
if (this.intervalId) {
|
|
23
35
|
return;
|
|
@@ -33,22 +45,28 @@ class DLOBSubscriber {
|
|
|
33
45
|
}
|
|
34
46
|
}, this.updateFrequency);
|
|
35
47
|
}
|
|
48
|
+
/** Fetches a new `DLOB` snapshot at the current slot (from `slotSource`) via `dlobSource.getDLOB` and replaces `this.dlob`. */
|
|
36
49
|
async updateDLOB() {
|
|
37
50
|
this.dlob = await this.dlobSource.getDLOB(this.slotSource.getSlot());
|
|
38
51
|
}
|
|
52
|
+
/** @returns the most recently fetched `DLOB` snapshot (empty until the first successful `subscribe()`/`updateDLOB()`). */
|
|
39
53
|
getDLOB() {
|
|
40
54
|
return this.dlob;
|
|
41
55
|
}
|
|
42
56
|
/**
|
|
43
|
-
* Get the L2 order book for a given market
|
|
57
|
+
* Get the L2 (aggregated price/size) order book for a given market, using the current
|
|
58
|
+
* `DLOB` snapshot and the current slot from `slotSource`.
|
|
44
59
|
*
|
|
45
|
-
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
|
|
46
|
-
* @param marketIndex
|
|
47
|
-
* @param marketType
|
|
48
|
-
* @param depth
|
|
49
|
-
* @param includeVamm
|
|
50
|
-
* @param
|
|
51
|
-
* @param
|
|
60
|
+
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
|
|
61
|
+
* @param marketIndex market index; ignored if `marketName` is provided
|
|
62
|
+
* @param marketType market type; ignored if `marketName` is provided
|
|
63
|
+
* @param depth number of price levels to include per side; defaults to 10
|
|
64
|
+
* @param includeVamm whether to synthesize and merge in vAMM liquidity (perp markets only) via `getVammL2Generator`; defaults to `false`. Throws if `true` and `fallbackL2Generators` is non-empty.
|
|
65
|
+
* @param numVammOrders number of vAMM levels to generate per side when `includeVamm` is true; defaults to `depth`
|
|
66
|
+
* @param fallbackL2Generators additional non-DLOB liquidity sources to merge in, e.g. `getVammL2Generator`'s output; defaults to `[]`
|
|
67
|
+
* @param latestSlot latest observed slot (e.g. from a `SlotSubscriber`), used for more accurate vAMM spread-reserve quotes when `includeVamm` is true; optional
|
|
68
|
+
* @returns the merged `L2OrderBook` (bids/asks with sizes, BASE_PRECISION 1e9, and prices, PRICE_PRECISION 1e6)
|
|
69
|
+
* @throws if `marketName` doesn't resolve to a known market, if neither `marketName` nor both `marketIndex`/`marketType` are given, or if `includeVamm` is combined with a non-empty `fallbackL2Generators`
|
|
52
70
|
*/
|
|
53
71
|
getL2({ marketName, marketIndex, marketType, depth = 10, includeVamm = false, numVammOrders, fallbackL2Generators = [], latestSlot, }) {
|
|
54
72
|
if (marketName) {
|
|
@@ -91,9 +109,11 @@ class DLOBSubscriber {
|
|
|
91
109
|
oraclePriceData,
|
|
92
110
|
slot: this.slotSource.getSlot(),
|
|
93
111
|
fallbackL2Generators: fallbackL2Generators,
|
|
112
|
+
tickSize: perpMarketAccount.orderTickSize,
|
|
94
113
|
});
|
|
95
114
|
}
|
|
96
115
|
const oraclePriceData = this.velocityClient.getOracleDataForSpotMarket(marketIndex);
|
|
116
|
+
const spotMarketAccount = this.velocityClient.getSpotMarketAccountOrThrow(marketIndex);
|
|
97
117
|
return this.dlob.getL2({
|
|
98
118
|
marketIndex,
|
|
99
119
|
marketType: types_1.MarketType.SPOT,
|
|
@@ -101,14 +121,19 @@ class DLOBSubscriber {
|
|
|
101
121
|
oraclePriceData,
|
|
102
122
|
slot: this.slotSource.getSlot(),
|
|
103
123
|
fallbackL2Generators: fallbackL2Generators,
|
|
124
|
+
tickSize: spotMarketAccount.orderTickSize,
|
|
104
125
|
});
|
|
105
126
|
}
|
|
106
127
|
/**
|
|
107
|
-
* Get the L3 order book for a given market
|
|
128
|
+
* Get the L3 (individual resting order) book for a given market, using the current `DLOB`
|
|
129
|
+
* snapshot and the current slot from `slotSource`. Does not include fallback (e.g. vAMM)
|
|
130
|
+
* liquidity.
|
|
108
131
|
*
|
|
109
|
-
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, marketIndex and marketType must be provided.
|
|
110
|
-
* @param marketIndex
|
|
111
|
-
* @param marketType
|
|
132
|
+
* @param marketName e.g. "SOL-PERP" or "SOL". If not provided, `marketIndex` and `marketType` must both be provided.
|
|
133
|
+
* @param marketIndex market index; ignored if `marketName` is provided
|
|
134
|
+
* @param marketType market type; ignored if `marketName` is provided
|
|
135
|
+
* @returns the `L3OrderBook` (per-order price/size/maker/orderId, prices PRICE_PRECISION 1e6, sizes BASE_PRECISION 1e9)
|
|
136
|
+
* @throws if `marketName` doesn't resolve to a known market, or if neither `marketName` nor both `marketIndex`/`marketType` are given
|
|
112
137
|
*/
|
|
113
138
|
getL3({ marketName, marketIndex, marketType, }) {
|
|
114
139
|
if (marketName) {
|
|
@@ -127,21 +152,26 @@ class DLOBSubscriber {
|
|
|
127
152
|
const isPerp = (0, types_1.isVariant)(marketType, 'perp');
|
|
128
153
|
if (isPerp) {
|
|
129
154
|
const oraclePriceData = this.velocityClient.getMMOracleDataForPerpMarket(marketIndex);
|
|
155
|
+
const perpMarketAccount = this.velocityClient.getPerpMarketAccountOrThrow(marketIndex);
|
|
130
156
|
return this.dlob.getL3({
|
|
131
157
|
marketIndex,
|
|
132
158
|
marketType: types_1.MarketType.PERP,
|
|
133
159
|
oraclePriceData,
|
|
134
160
|
slot: this.slotSource.getSlot(),
|
|
161
|
+
tickSize: perpMarketAccount.orderTickSize,
|
|
135
162
|
});
|
|
136
163
|
}
|
|
137
164
|
const oraclePriceData = this.velocityClient.getOracleDataForSpotMarket(marketIndex);
|
|
165
|
+
const spotMarketAccount = this.velocityClient.getSpotMarketAccountOrThrow(marketIndex);
|
|
138
166
|
return this.dlob.getL3({
|
|
139
167
|
marketIndex,
|
|
140
168
|
marketType: types_1.MarketType.SPOT,
|
|
141
169
|
oraclePriceData,
|
|
142
170
|
slot: this.slotSource.getSlot(),
|
|
171
|
+
tickSize: spotMarketAccount.orderTickSize,
|
|
143
172
|
});
|
|
144
173
|
}
|
|
174
|
+
/** Stops the periodic refresh timer, if running. Safe to call when not subscribed. */
|
|
145
175
|
async unsubscribe() {
|
|
146
176
|
if (this.intervalId) {
|
|
147
177
|
clearInterval(this.intervalId);
|
|
@@ -1,27 +1,96 @@
|
|
|
1
1
|
import { MarketTypeStr, Order } from '../types';
|
|
2
2
|
import { DLOBNode, DLOBNodeMap } from './DLOBNode';
|
|
3
3
|
import { BN } from '../isomorphic/anchor';
|
|
4
|
+
/** Ordering of a `NodeList`'s sort key: `'asc'` for ascending (e.g. asks, lowest price first), `'desc'` for descending (e.g. bids, highest price first). */
|
|
4
5
|
export type SortDirection = 'asc' | 'desc';
|
|
6
|
+
/**
|
|
7
|
+
* Builds the key used to identify an order uniquely across a user's orders: `"{userAccount}-{orderId}"`.
|
|
8
|
+
* Used as the map key in `NodeList.nodeMap` and to de-duplicate/merge fills in `DLOB`.
|
|
9
|
+
*
|
|
10
|
+
* @param orderId the order's `orderId` (unique per user account, not globally)
|
|
11
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
12
|
+
* @returns a string uniquely identifying the order within the DLOB
|
|
13
|
+
*/
|
|
5
14
|
export declare function getOrderSignature(orderId: number, userAccount: string): string;
|
|
15
|
+
/** Implemented by anything that can produce a fresh `Generator<DLOBNode>` over its nodes, e.g. `NodeList` itself. */
|
|
6
16
|
export interface DLOBNodeGenerator {
|
|
7
17
|
getGenerator(): Generator<DLOBNode>;
|
|
8
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* A sorted, doubly-linked list of one order-node type (e.g. resting-limit asks) for one
|
|
21
|
+
* market/side. Insertion walks the list from `head` to find the correct sorted position — O(n)
|
|
22
|
+
* per insert — trading insert speed for cheap best-of-book access (`head`) and cheap iteration.
|
|
23
|
+
* Backed by a `Map` (`nodeMap`) keyed by `getOrderSignature` for O(1) lookup/update/removal by
|
|
24
|
+
* order id.
|
|
25
|
+
*/
|
|
9
26
|
export declare class NodeList<NodeType extends keyof DLOBNodeMap> implements DLOBNodeGenerator {
|
|
10
27
|
private nodeType;
|
|
11
28
|
private sortDirection;
|
|
29
|
+
/** The best (first-sorted) node in the list, or `undefined` if empty. For a `'desc'`-sorted bid list this is the highest bid; for `'asc'`-sorted ask list, the lowest ask. */
|
|
12
30
|
head?: DLOBNodeMap[NodeType];
|
|
31
|
+
/** Number of nodes currently in the list. */
|
|
13
32
|
length: number;
|
|
33
|
+
/** Nodes keyed by `getOrderSignature(orderId, userAccount)` for O(1) has/get/update/remove. */
|
|
14
34
|
nodeMap: Map<string, DLOBNodeMap[NodeType]>;
|
|
35
|
+
/**
|
|
36
|
+
* @param nodeType which `DLOBNodeMap` node subclass this list holds
|
|
37
|
+
* @param sortDirection `'asc'` or `'desc'` — the direction new nodes are ordered from `head`
|
|
38
|
+
*/
|
|
15
39
|
constructor(nodeType: NodeType, sortDirection: SortDirection);
|
|
40
|
+
/** Empties the list: clears `head`, resets `length` to 0, and clears `nodeMap`. */
|
|
16
41
|
clear(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Inserts an order into its sorted position. No-ops if the order's status is not `open`, or
|
|
44
|
+
* if an order with the same signature (`userAccount` + `orderId`) is already present.
|
|
45
|
+
*
|
|
46
|
+
* @param order on-chain order to insert (ignored if not `open`)
|
|
47
|
+
* @param marketType the order's market type, passed through to `createNode`
|
|
48
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
49
|
+
* @param baseAssetAmount remaining base amount to track on the node, BASE_PRECISION (1e9); defaults to `order.baseAssetAmount`
|
|
50
|
+
*/
|
|
17
51
|
insert(order: Order, marketType: MarketTypeStr, userAccount: string, baseAssetAmount?: BN): void;
|
|
52
|
+
/**
|
|
53
|
+
* Whether `newNode` should be spliced in immediately before `currentNode` given the list's
|
|
54
|
+
* `sortDirection`. Ties on `sortValue` are broken by earlier `order.slot` (arrival order)
|
|
55
|
+
* going first, regardless of sort direction.
|
|
56
|
+
*
|
|
57
|
+
* @param currentNode the node being compared against
|
|
58
|
+
* @param newNode the node being inserted
|
|
59
|
+
* @returns true if `newNode` sorts strictly before `currentNode`
|
|
60
|
+
*/
|
|
18
61
|
prependNode(currentNode: DLOBNodeMap[NodeType], newNode: DLOBNodeMap[NodeType]): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Updates the existing node's order in place (e.g. after a partial fill changes
|
|
64
|
+
* `baseAssetAmountFilled`) and resets `haveFilled` to `false`. No-ops if the order isn't in
|
|
65
|
+
* this list. Note: this does **not** re-sort the node, so it must not be used to change the
|
|
66
|
+
* node's `sortValue` field (price/slot/trigger price) — remove and re-insert instead.
|
|
67
|
+
*
|
|
68
|
+
* @param order the order's new state
|
|
69
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
70
|
+
*/
|
|
19
71
|
update(order: Order, userAccount: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Unlinks and removes the node matching `order`/`userAccount` from the list. No-ops if the
|
|
74
|
+
* order isn't present.
|
|
75
|
+
*
|
|
76
|
+
* @param order the order to remove (matched by `orderId`)
|
|
77
|
+
* @param userAccount base58 pubkey string of the order's owner
|
|
78
|
+
*/
|
|
20
79
|
remove(order: Order, userAccount: string): void;
|
|
80
|
+
/** Yields every node from `head` to tail, in the list's sorted order. A fresh generator is created on each call, so concurrent iteration is safe as long as the list isn't mutated mid-iteration. */
|
|
21
81
|
getGenerator(): Generator<DLOBNode>;
|
|
82
|
+
/** Returns whether an order with this `orderId`/`userAccount` signature is present in the list. */
|
|
22
83
|
has(order: Order, userAccount: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Looks up a node directly by its precomputed `getOrderSignature` string.
|
|
86
|
+
*
|
|
87
|
+
* @param orderSignature signature as produced by `getOrderSignature`
|
|
88
|
+
* @returns the matching node, or `undefined` if not present
|
|
89
|
+
*/
|
|
23
90
|
get(orderSignature: string): DLOBNodeMap[NodeType] | undefined;
|
|
91
|
+
/** Debug helper: logs every node's `getLabel()` output to the console, in sorted order. */
|
|
24
92
|
print(): void;
|
|
93
|
+
/** Debug helper: logs the sort direction and the `head` node's `getLabel()` output (or `'---'` if the list is empty). */
|
|
25
94
|
printTop(): void;
|
|
26
95
|
}
|
|
27
96
|
//# sourceMappingURL=NodeList.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeList.d.ts","sourceRoot":"","sources":["../../../src/dlob/NodeList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAc,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GACjB,MAAM,CAER;AAED,MAAM,WAAW,iBAAiB;IACjC,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;CACpC;AAED,qBAAa,QAAQ,CAAC,QAAQ,SAAS,MAAM,WAAW,CACvD,YAAW,iBAAiB;
|
|
1
|
+
{"version":3,"file":"NodeList.d.ts","sourceRoot":"","sources":["../../../src/dlob/NodeList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAc,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAE1C,4JAA4J;AAC5J,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GACjB,MAAM,CAER;AAED,qHAAqH;AACrH,MAAM,WAAW,iBAAiB;IACjC,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;CACpC;AAED;;;;;;GAMG;AACH,qBAAa,QAAQ,CAAC,QAAQ,SAAS,MAAM,WAAW,CACvD,YAAW,iBAAiB;IAc3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IAbtB,8KAA8K;IAC9K,IAAI,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7B,6CAA6C;IAC7C,MAAM,SAAK;IACX,+FAA+F;IAC/F,OAAO,qCAA4C;IAEnD;;;OAGG;gBAEM,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa;IAGrC,mFAAmF;IAC5E,KAAK;IAMZ;;;;;;;;OAQG;IACI,MAAM,CACZ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,aAAa,EACzB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,EAAE,GAClB,IAAI;IAiDP;;;;;;;;OAQG;IACH,WAAW,CACV,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,EAClC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,GAC5B,OAAO;IAkBV;;;;;;;;OAQG;IACI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAStD;;;;;;OAMG;IACI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAwBtD,qMAAqM;IACpM,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC;IAQpC,mGAAmG;IAC5F,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAItD;;;;;OAKG;IACI,GAAG,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,SAAS;IAIrE,2FAA2F;IACpF,KAAK,IAAI,IAAI;IAQpB,yHAAyH;IAClH,QAAQ,IAAI,IAAI;CAOvB"}
|