@velocity-exchange/sdk 0.3.0 → 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 +51 -0
- 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 +2136 -4
- package/lib/browser/adminClient.js +2150 -4
- 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 +4 -4
- package/lib/browser/idl/velocity.json +4 -4
- 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 +91 -0
- package/lib/browser/math/exchangeStatus.js +106 -3
- 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 -10
- package/lib/browser/math/orders.js +130 -19
- 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 +31 -0
- 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 +103 -2
- 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 +56 -0
- 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/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 +781 -13
- package/lib/browser/types.js +126 -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 +3322 -215
- package/lib/browser/velocityClient.js +3412 -245
- 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 +2136 -4
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2150 -4
- 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 +4 -4
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +4 -4
- 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 +91 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +106 -3
- 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 -10
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +130 -19
- 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 +31 -0
- 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 +103 -2
- 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 +56 -0
- 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/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 +781 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +126 -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 +3322 -215
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3412 -245
- 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 +2156 -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 +4 -4
- package/src/idl/velocity.ts +4 -4
- 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 +117 -2
- 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 +141 -19
- 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 +31 -0
- 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 +104 -2
- 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 +56 -0
- 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/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 +777 -24
- 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 +3439 -249
- 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/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
|
@@ -55,6 +55,16 @@ async function ensureAccountFetched<T>(
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
/**
|
|
59
|
+
* Default `VelocityClientAccountSubscriber` implementation: creates one `WebSocketAccountSubscriber`
|
|
60
|
+
* per tracked `State`/`PerpMarket`/`SpotMarket`/oracle account, giving the lowest update latency
|
|
61
|
+
* at the cost of one WebSocket subscription per account. Before subscribing each per-account
|
|
62
|
+
* subscriber, `setInitialData()` batch-fetches all of them via `getMultipleAccountsInfo` so the
|
|
63
|
+
* per-account `WebSocketAccountSubscriber.subscribe()` calls can seed from that data instead of
|
|
64
|
+
* each issuing its own `getAccountInfo` round trip. `customPerpMarketAccountSubscriber`/
|
|
65
|
+
* `customOracleAccountSubscriber` let a caller substitute `WebSocketAccountSubscriberV2` (or any
|
|
66
|
+
* other `AccountSubscriber` implementation) for those two account types specifically.
|
|
67
|
+
*/
|
|
58
68
|
export class WebSocketVelocityClientAccountSubscriber
|
|
59
69
|
implements VelocityClientAccountSubscriber
|
|
60
70
|
{
|
|
@@ -110,6 +120,18 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
110
120
|
protected subscriptionPromiseResolver: (val: boolean) => void = () => {};
|
|
111
121
|
protected subscriptionPromise: Promise<boolean> = Promise.resolve(false);
|
|
112
122
|
|
|
123
|
+
/**
|
|
124
|
+
* @param program Anchor program used to derive PDAs, decode accounts, and resolve oracle clients.
|
|
125
|
+
* @param perpMarketIndexes Perp market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
126
|
+
* @param spotMarketIndexes Spot market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
127
|
+
* @param oracleInfos Oracles to track up front, if `shouldFindAllMarketsAndOracles` is false.
|
|
128
|
+
* @param shouldFindAllMarketsAndOracles If true, `subscribe()` first discovers every market/oracle from on-chain state, ignoring the index/info args above.
|
|
129
|
+
* @param delistedMarketSetting Behavior applied to delisted perp markets/oracles after subscribing; see `DelistedMarketSetting`.
|
|
130
|
+
* @param resubOpts Resubscription watchdog options passed to every per-account `WebSocketAccountSubscriber`.
|
|
131
|
+
* @param commitment Commitment for every per-account subscription; defaults to the provider's configured commitment.
|
|
132
|
+
* @param customPerpMarketAccountSubscriber Optional alternate `AccountSubscriber` constructor (e.g. `WebSocketAccountSubscriberV2`) used for perp market accounts instead of the default `WebSocketAccountSubscriber`.
|
|
133
|
+
* @param customOracleAccountSubscriber Optional alternate `AccountSubscriber` constructor used for oracle accounts instead of the default `WebSocketAccountSubscriber`.
|
|
134
|
+
*/
|
|
113
135
|
public constructor(
|
|
114
136
|
program: VelocityProgram,
|
|
115
137
|
perpMarketIndexes: number[],
|
|
@@ -150,6 +172,16 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
150
172
|
this.customOracleAccountSubscriber = customOracleAccountSubscriber;
|
|
151
173
|
}
|
|
152
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Subscribes the `State` account, batch-seeds all market/oracle accounts via `setInitialData()`,
|
|
177
|
+
* then subscribes every per-account `WebSocketAccountSubscriber` (or the custom subscriber
|
|
178
|
+
* class, if configured) for perp markets, spot markets, and oracles. Applies
|
|
179
|
+
* `delistedMarketSetting` afterward. Idempotent: a no-op if already subscribed, and concurrent
|
|
180
|
+
* calls while a subscribe is in flight share the same result via `subscriptionPromise` rather
|
|
181
|
+
* than issuing duplicate subscriptions. Always resolves `true` (no retry/failure path — a
|
|
182
|
+
* per-account fetch failure surfaces via `ensureAccountFetched`'s retries, not by aborting
|
|
183
|
+
* subscribe).
|
|
184
|
+
*/
|
|
153
185
|
public async subscribe(): Promise<boolean> {
|
|
154
186
|
if (this.isSubscribed) {
|
|
155
187
|
return true;
|
|
@@ -238,6 +270,14 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
238
270
|
.map((begin) => array.slice(begin, begin + size));
|
|
239
271
|
};
|
|
240
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Batch-fetches every tracked perp market, spot market, and oracle account via chunked
|
|
275
|
+
* `getMultipleAccountsInfo` calls (75 pubkeys per chunk) and stashes the decoded results in
|
|
276
|
+
* `initialPerpMarketAccountData`/`initialSpotMarketAccountData`/`initialOraclePriceData`.
|
|
277
|
+
* Each per-account `WebSocketAccountSubscriber.subscribe()` call seeds from this data via
|
|
278
|
+
* `setData` instead of issuing its own `getAccountInfo` round trip. Skips markets already
|
|
279
|
+
* populated (e.g. by `findAllMarketAndOracles` when `shouldFindAllMarketsAndOracles` is set).
|
|
280
|
+
*/
|
|
241
281
|
async setInitialData(): Promise<void> {
|
|
242
282
|
const connection = this.program.provider.connection;
|
|
243
283
|
|
|
@@ -338,12 +378,14 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
338
378
|
);
|
|
339
379
|
}
|
|
340
380
|
|
|
381
|
+
/** Clears the seed data stashed by `setInitialData()` once every per-account subscriber has consumed it, freeing the memory. */
|
|
341
382
|
removeInitialData() {
|
|
342
383
|
this.initialPerpMarketAccountData = new Map();
|
|
343
384
|
this.initialSpotMarketAccountData = new Map();
|
|
344
385
|
this.initialOraclePriceData = new Map();
|
|
345
386
|
}
|
|
346
387
|
|
|
388
|
+
/** Subscribes a `WebSocketAccountSubscriber` for every tracked perp market index, in parallel. */
|
|
347
389
|
async subscribeToPerpMarketAccounts(): Promise<boolean> {
|
|
348
390
|
await Promise.all(
|
|
349
391
|
this.perpMarketIndexes.map((marketIndex) =>
|
|
@@ -353,6 +395,13 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
353
395
|
return true;
|
|
354
396
|
}
|
|
355
397
|
|
|
398
|
+
/**
|
|
399
|
+
* Creates and subscribes the per-account subscriber (custom class if `customPerpMarketAccountSubscriber`
|
|
400
|
+
* is set, else `WebSocketAccountSubscriber`) for one perp market, seeding it from
|
|
401
|
+
* `initialPerpMarketAccountData` if available, and waits (via `ensureAccountFetched`, up to 5
|
|
402
|
+
* retries with a 200ms backoff) for data to actually land before returning.
|
|
403
|
+
* @param marketIndex Perp market index to subscribe.
|
|
404
|
+
*/
|
|
356
405
|
async subscribeToPerpMarketAccount(marketIndex: number): Promise<boolean> {
|
|
357
406
|
const perpMarketPublicKey = await getPerpMarketPublicKey(
|
|
358
407
|
this.program.programId,
|
|
@@ -382,6 +431,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
382
431
|
return true;
|
|
383
432
|
}
|
|
384
433
|
|
|
434
|
+
/** Subscribes a `WebSocketAccountSubscriber` for every tracked spot market index, in parallel. */
|
|
385
435
|
async subscribeToSpotMarketAccounts(): Promise<boolean> {
|
|
386
436
|
await Promise.all(
|
|
387
437
|
this.spotMarketIndexes.map((marketIndex) =>
|
|
@@ -391,6 +441,12 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
391
441
|
return true;
|
|
392
442
|
}
|
|
393
443
|
|
|
444
|
+
/**
|
|
445
|
+
* Creates and subscribes a `WebSocketAccountSubscriber` for one spot market, seeding it from
|
|
446
|
+
* `initialSpotMarketAccountData` if available, and waits (via `ensureAccountFetched`) for data
|
|
447
|
+
* to land before returning.
|
|
448
|
+
* @param marketIndex Spot market index to subscribe.
|
|
449
|
+
*/
|
|
394
450
|
async subscribeToSpotMarketAccount(marketIndex: number): Promise<boolean> {
|
|
395
451
|
const marketPublicKey = await getSpotMarketPublicKey(
|
|
396
452
|
this.program.programId,
|
|
@@ -418,6 +474,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
418
474
|
return true;
|
|
419
475
|
}
|
|
420
476
|
|
|
477
|
+
/** Subscribes an account subscriber for every tracked oracle, in parallel, skipping the `PublicKey.default` (quote-asset "no oracle") sentinel. */
|
|
421
478
|
async subscribeToOracles(): Promise<boolean> {
|
|
422
479
|
await Promise.all(
|
|
423
480
|
this.oracleInfos
|
|
@@ -428,6 +485,14 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
428
485
|
return true;
|
|
429
486
|
}
|
|
430
487
|
|
|
488
|
+
/**
|
|
489
|
+
* Creates and subscribes the per-account subscriber (custom class if `customOracleAccountSubscriber`
|
|
490
|
+
* is set, else `WebSocketAccountSubscriber`) for one oracle, decoding buffers with the
|
|
491
|
+
* source-appropriate `OracleClient`. Seeds from `initialOraclePriceData` if available and
|
|
492
|
+
* waits (via `ensureAccountFetched`) for data to land before returning.
|
|
493
|
+
* @param oracleInfo Oracle pubkey and source to subscribe.
|
|
494
|
+
* @returns `false` if no `OracleClient` is registered for `oracleInfo.source`; otherwise `true`.
|
|
495
|
+
*/
|
|
431
496
|
async subscribeToOracle(oracleInfo: OracleInfo): Promise<boolean> {
|
|
432
497
|
const oracleId = getOracleId(oracleInfo.publicKey, oracleInfo.source);
|
|
433
498
|
const client = this.oracleClientCache.get(
|
|
@@ -469,6 +534,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
469
534
|
return true;
|
|
470
535
|
}
|
|
471
536
|
|
|
537
|
+
/** Unsubscribes every per-account subscriber tracking a perp market, in parallel. */
|
|
472
538
|
async unsubscribeFromMarketAccounts(): Promise<void> {
|
|
473
539
|
await Promise.all(
|
|
474
540
|
Array.from(this.perpMarketAccountSubscribers.values()).map(
|
|
@@ -477,6 +543,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
477
543
|
);
|
|
478
544
|
}
|
|
479
545
|
|
|
546
|
+
/** Unsubscribes every per-account subscriber tracking a spot market, in parallel. */
|
|
480
547
|
async unsubscribeFromSpotMarketAccounts(): Promise<void> {
|
|
481
548
|
await Promise.all(
|
|
482
549
|
Array.from(this.spotMarketAccountSubscribers.values()).map(
|
|
@@ -485,6 +552,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
485
552
|
);
|
|
486
553
|
}
|
|
487
554
|
|
|
555
|
+
/** Unsubscribes every per-account subscriber tracking an oracle, in parallel. */
|
|
488
556
|
async unsubscribeFromOracles(): Promise<void> {
|
|
489
557
|
await Promise.all(
|
|
490
558
|
Array.from(this.oracleSubscribers.values()).map((accountSubscriber) =>
|
|
@@ -493,6 +561,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
493
561
|
);
|
|
494
562
|
}
|
|
495
563
|
|
|
564
|
+
/** Fetches the `State` account and every subscribed perp/spot market's `WebSocketAccountSubscriber` in parallel. A no-op if not subscribed. Oracle accounts are not re-fetched here (they update via their own WS notifications). */
|
|
496
565
|
public async fetch(): Promise<void> {
|
|
497
566
|
if (!this.isSubscribed) {
|
|
498
567
|
return;
|
|
@@ -517,6 +586,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
517
586
|
await Promise.all(promises);
|
|
518
587
|
}
|
|
519
588
|
|
|
589
|
+
/** Tears down the `State` subscriber and every per-account market/oracle subscriber. A no-op if not subscribed. */
|
|
520
590
|
public async unsubscribe(): Promise<void> {
|
|
521
591
|
if (!this.isSubscribed) {
|
|
522
592
|
return;
|
|
@@ -531,24 +601,44 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
531
601
|
this.isSubscribed = false;
|
|
532
602
|
}
|
|
533
603
|
|
|
604
|
+
/**
|
|
605
|
+
* Adds a spot market (and its oracle, via `setSpotOracleMap`) to be tracked, subscribing a new
|
|
606
|
+
* `WebSocketAccountSubscriber` for it. Idempotent: returns `true` immediately if already tracked.
|
|
607
|
+
* @param marketIndex Spot market index to start tracking.
|
|
608
|
+
*/
|
|
534
609
|
async addSpotMarket(marketIndex: number): Promise<boolean> {
|
|
535
610
|
if (this.spotMarketAccountSubscribers.has(marketIndex)) {
|
|
536
611
|
return true;
|
|
537
612
|
}
|
|
538
|
-
const subscriptionSuccess = this.subscribeToSpotMarketAccount(
|
|
613
|
+
const subscriptionSuccess = await this.subscribeToSpotMarketAccount(
|
|
614
|
+
marketIndex
|
|
615
|
+
);
|
|
539
616
|
await this.setSpotOracleMap();
|
|
540
617
|
return subscriptionSuccess;
|
|
541
618
|
}
|
|
542
619
|
|
|
620
|
+
/**
|
|
621
|
+
* Adds a perp market (and its oracle, via `setPerpOracleMap`) to be tracked, subscribing a new
|
|
622
|
+
* `WebSocketAccountSubscriber` for it. Idempotent: returns `true` immediately if already tracked.
|
|
623
|
+
* @param marketIndex Perp market index to start tracking.
|
|
624
|
+
*/
|
|
543
625
|
async addPerpMarket(marketIndex: number): Promise<boolean> {
|
|
544
626
|
if (this.perpMarketAccountSubscribers.has(marketIndex)) {
|
|
545
627
|
return true;
|
|
546
628
|
}
|
|
547
|
-
const subscriptionSuccess = this.subscribeToPerpMarketAccount(
|
|
629
|
+
const subscriptionSuccess = await this.subscribeToPerpMarketAccount(
|
|
630
|
+
marketIndex
|
|
631
|
+
);
|
|
548
632
|
await this.setPerpOracleMap();
|
|
549
633
|
return subscriptionSuccess;
|
|
550
634
|
}
|
|
551
635
|
|
|
636
|
+
/**
|
|
637
|
+
* Adds an oracle to be tracked, subscribing a new per-account subscriber for it. A no-op that
|
|
638
|
+
* resolves `true` immediately for the `PublicKey.default` sentinel (quote-asset "no oracle")
|
|
639
|
+
* or an oracle already tracked.
|
|
640
|
+
* @param oracleInfo Oracle pubkey and source to start tracking.
|
|
641
|
+
*/
|
|
552
642
|
async addOracle(oracleInfo: OracleInfo): Promise<boolean> {
|
|
553
643
|
const oracleId = getOracleId(oracleInfo.publicKey, oracleInfo.source);
|
|
554
644
|
if (this.oracleSubscribers.has(oracleId)) {
|
|
@@ -562,6 +652,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
562
652
|
return this.subscribeToOracle(oracleInfo);
|
|
563
653
|
}
|
|
564
654
|
|
|
655
|
+
/** Rebuilds `perpOracleMap`/`perpOracleStringMap` from currently cached perp markets, calling `addOracle` for any oracle not yet tracked. */
|
|
565
656
|
async setPerpOracleMap() {
|
|
566
657
|
const perpMarkets = this.getMarketAccountsAndSlots();
|
|
567
658
|
const addOraclePromises = [];
|
|
@@ -587,6 +678,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
587
678
|
await Promise.all(addOraclePromises);
|
|
588
679
|
}
|
|
589
680
|
|
|
681
|
+
/** Rebuilds `spotOracleMap`/`spotOracleStringMap` from currently cached spot markets, calling `addOracle` for any oracle not yet tracked. */
|
|
590
682
|
async setSpotOracleMap() {
|
|
591
683
|
const spotMarkets = this.getSpotMarketAccountsAndSlots();
|
|
592
684
|
const addOraclePromises = [];
|
|
@@ -612,6 +704,12 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
612
704
|
await Promise.all(addOraclePromises);
|
|
613
705
|
}
|
|
614
706
|
|
|
707
|
+
/**
|
|
708
|
+
* Applies `delistedMarketSetting` to any perp market currently `status: delisted` (and its
|
|
709
|
+
* oracle, if not shared with a live spot market): unsubscribes the per-account subscriber, and
|
|
710
|
+
* additionally drops it from `perpMarketAccountSubscribers`/`oracleSubscribers` if the setting
|
|
711
|
+
* is `Discard`. A no-op if the setting is `Subscribe`.
|
|
712
|
+
*/
|
|
615
713
|
async handleDelistedMarkets(): Promise<void> {
|
|
616
714
|
if (this.delistedMarketSetting === DelistedMarketSetting.Subscribe) {
|
|
617
715
|
return;
|
|
@@ -640,6 +738,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
640
738
|
}
|
|
641
739
|
}
|
|
642
740
|
|
|
741
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
643
742
|
assertIsSubscribed(): void {
|
|
644
743
|
if (!this.isSubscribed) {
|
|
645
744
|
throw new NotSubscribedError(
|
|
@@ -648,6 +747,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
648
747
|
}
|
|
649
748
|
}
|
|
650
749
|
|
|
750
|
+
/** Throws `NotSubscribedError` if not subscribed, or a generic `Error` if subscribed but the `State` account hasn't loaded yet (should not normally happen after `subscribe()` resolves). */
|
|
651
751
|
public getStateAccountAndSlot(): DataAndSlot<StateAccount> {
|
|
652
752
|
this.assertIsSubscribed();
|
|
653
753
|
const dataAndSlot = this.stateAccountSubscriber?.dataAndSlot;
|
|
@@ -657,6 +757,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
657
757
|
return dataAndSlot;
|
|
658
758
|
}
|
|
659
759
|
|
|
760
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` isn't tracked (or hasn't loaded yet). */
|
|
660
761
|
public getMarketAccountAndSlot(
|
|
661
762
|
marketIndex: number
|
|
662
763
|
): DataAndSlot<PerpMarketAccount> | undefined {
|
|
@@ -664,6 +765,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
664
765
|
return this.perpMarketAccountSubscribers.get(marketIndex)?.dataAndSlot;
|
|
665
766
|
}
|
|
666
767
|
|
|
768
|
+
/** Returns every currently cached (loaded) perp market. Does not throw `NotSubscribedError`. */
|
|
667
769
|
public getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[] {
|
|
668
770
|
return Array.from(this.perpMarketAccountSubscribers.values())
|
|
669
771
|
.map((subscriber) => subscriber.dataAndSlot)
|
|
@@ -673,6 +775,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
673
775
|
);
|
|
674
776
|
}
|
|
675
777
|
|
|
778
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` isn't tracked (or hasn't loaded yet). */
|
|
676
779
|
public getSpotMarketAccountAndSlot(
|
|
677
780
|
marketIndex: number
|
|
678
781
|
): DataAndSlot<SpotMarketAccount> | undefined {
|
|
@@ -680,6 +783,7 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
680
783
|
return this.spotMarketAccountSubscribers.get(marketIndex)?.dataAndSlot;
|
|
681
784
|
}
|
|
682
785
|
|
|
786
|
+
/** Returns every currently cached (loaded) spot market. Does not throw `NotSubscribedError`. */
|
|
683
787
|
public getSpotMarketAccountsAndSlots(): DataAndSlot<SpotMarketAccount>[] {
|
|
684
788
|
return Array.from(this.spotMarketAccountSubscribers.values())
|
|
685
789
|
.map((subscriber) => subscriber.dataAndSlot)
|
|
@@ -689,6 +793,13 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
689
793
|
);
|
|
690
794
|
}
|
|
691
795
|
|
|
796
|
+
/**
|
|
797
|
+
* Looks up cached oracle price data by oracle id (see `getOracleId`). Special-cases the
|
|
798
|
+
* quote-asset default oracle id, returning the constant `QUOTE_ORACLE_PRICE_DATA` at slot 0
|
|
799
|
+
* rather than a subscriber lookup, since that oracle is never actually subscribed to.
|
|
800
|
+
* @param oracleId Oracle id string from `getOracleId(publicKey, source)`.
|
|
801
|
+
* @returns Cached price data/slot, or undefined if not tracked. Throws `NotSubscribedError` if not subscribed.
|
|
802
|
+
*/
|
|
692
803
|
public getOraclePriceDataAndSlot(
|
|
693
804
|
oracleId: string
|
|
694
805
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -702,6 +813,13 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
702
813
|
return this.oracleSubscribers.get(oracleId)?.dataAndSlot;
|
|
703
814
|
}
|
|
704
815
|
|
|
816
|
+
/**
|
|
817
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a perp market's
|
|
818
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
819
|
+
* `perpOracleMap`, triggers a background `setPerpOracleMap()` refresh and still returns the
|
|
820
|
+
* (possibly stale) mapping for this call.
|
|
821
|
+
* @param marketIndex Perp market index whose oracle price to look up.
|
|
822
|
+
*/
|
|
705
823
|
public getOraclePriceDataAndSlotForPerpMarket(
|
|
706
824
|
marketIndex: number
|
|
707
825
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -720,6 +838,13 @@ export class WebSocketVelocityClientAccountSubscriber
|
|
|
720
838
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
721
839
|
}
|
|
722
840
|
|
|
841
|
+
/**
|
|
842
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a spot market's
|
|
843
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
844
|
+
* `spotOracleMap`, triggers a background `setSpotOracleMap()` refresh and still returns the
|
|
845
|
+
* (possibly stale) mapping for this call.
|
|
846
|
+
* @param marketIndex Spot market index whose oracle price to look up.
|
|
847
|
+
*/
|
|
723
848
|
public getOraclePriceDataAndSlotForSpotMarket(
|
|
724
849
|
marketIndex: number
|
|
725
850
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -50,6 +50,15 @@ const ORACLE_DEFAULT_ID = getOracleId(
|
|
|
50
50
|
OracleSource.QUOTE_ASSET
|
|
51
51
|
);
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* `VelocityClientAccountSubscriber` variant that, unlike `WebSocketVelocityClientAccountSubscriber`
|
|
55
|
+
* (one `WebSocketAccountSubscriber` per market), multiplexes all perp markets onto a single
|
|
56
|
+
* `WebSocketProgramAccountsSubscriberV2` program-account stream and all spot markets onto a
|
|
57
|
+
* second — two WebSocket subscriptions total instead of one per market. `State` and each oracle
|
|
58
|
+
* still get their own `WebSocketAccountSubscriberV2`. Lower connection overhead at scale;
|
|
59
|
+
* `addPerpMarket`/`addSpotMarket` are no-ops here since new markets simply arrive automatically
|
|
60
|
+
* over the existing program-account stream rather than needing an explicit new subscription.
|
|
61
|
+
*/
|
|
53
62
|
export class WebSocketVelocityClientAccountSubscriberV2
|
|
54
63
|
implements VelocityClientAccountSubscriber
|
|
55
64
|
{
|
|
@@ -122,6 +131,17 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
122
131
|
private rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi> &
|
|
123
132
|
string;
|
|
124
133
|
|
|
134
|
+
/**
|
|
135
|
+
* @param program Anchor program used to derive PDAs, decode accounts, and resolve oracle clients.
|
|
136
|
+
* @param perpMarketIndexes Perp market indexes to track, if `shouldFindAllMarketsAndOracles` is false. Only used to derive the initial pubkeys handed to the perp program-account subscriber; new markets arrive automatically thereafter.
|
|
137
|
+
* @param spotMarketIndexes Spot market indexes to track, if `shouldFindAllMarketsAndOracles` is false. Same caveat as `perpMarketIndexes`.
|
|
138
|
+
* @param oracleInfos Oracles to track up front, if `shouldFindAllMarketsAndOracles` is false.
|
|
139
|
+
* @param shouldFindAllMarketsAndOracles If true, `subscribe()` first discovers every market/oracle from on-chain state, ignoring the index/info args above.
|
|
140
|
+
* @param delistedMarketSetting Behavior applied to delisted perp markets/oracles after subscribing; see `DelistedMarketSetting`.
|
|
141
|
+
* @param resubOpts Resubscription watchdog options passed to the underlying program-account and per-oracle subscribers.
|
|
142
|
+
* @param commitment Commitment for every subscription; defaults to the provider's configured commitment.
|
|
143
|
+
* @param skipInitialData Currently unused by `subscribe()`/`setInitialData()` (the field is set but never read); defaults to `false`.
|
|
144
|
+
*/
|
|
125
145
|
public constructor(
|
|
126
146
|
program: VelocityProgram,
|
|
127
147
|
perpMarketIndexes: number[],
|
|
@@ -152,6 +172,15 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
152
172
|
this.rpcSubscriptions = rpcSubscriptions;
|
|
153
173
|
}
|
|
154
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Derives all tracked perp/spot market pubkeys (or discovers them via `findAllMarketAndOracles`
|
|
177
|
+
* if `shouldFindAllMarketsAndOracles` is set), then in parallel: opens the perp and spot
|
|
178
|
+
* `WebSocketProgramAccountsSubscriberV2` streams, subscribes the `State` account, and seeds +
|
|
179
|
+
* subscribes every oracle. Applies `delistedMarketSetting` afterward. Idempotent: a no-op if
|
|
180
|
+
* already subscribed, and concurrent calls while a subscribe is in flight share the same
|
|
181
|
+
* result via `subscriptionPromise` rather than issuing duplicate subscriptions.
|
|
182
|
+
* @returns `true` on success; `false` if any step throws (subscription state is left partially applied in that case, and `isSubscribed` remains `false`).
|
|
183
|
+
*/
|
|
155
184
|
public async subscribe(): Promise<boolean> {
|
|
156
185
|
try {
|
|
157
186
|
const startTime = performance.now();
|
|
@@ -381,6 +410,20 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
381
410
|
return true;
|
|
382
411
|
} catch (error) {
|
|
383
412
|
console.error('Subscription failed:', error);
|
|
413
|
+
// Tear down any child subscribers that were created before the failure so a
|
|
414
|
+
// subsequent subscribe() attempt doesn't leak live connections; isSubscribed is
|
|
415
|
+
// still false at this point, so unsubscribe() alone would otherwise skip this.
|
|
416
|
+
await Promise.all([
|
|
417
|
+
this.stateAccountSubscriber?.unsubscribe(),
|
|
418
|
+
this.unsubscribeFromMarketAccounts(),
|
|
419
|
+
this.unsubscribeFromSpotMarketAccounts(),
|
|
420
|
+
this.unsubscribeFromOracles(),
|
|
421
|
+
]).catch((teardownError) => {
|
|
422
|
+
console.error(
|
|
423
|
+
'Error tearing down partial subscription:',
|
|
424
|
+
teardownError
|
|
425
|
+
);
|
|
426
|
+
});
|
|
384
427
|
this.isSubscribing = false;
|
|
385
428
|
this.subscriptionPromiseResolver(false);
|
|
386
429
|
return false;
|
|
@@ -395,6 +438,7 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
395
438
|
return result;
|
|
396
439
|
};
|
|
397
440
|
|
|
441
|
+
/** Re-runs `setInitialData()`, re-fetching and re-emitting oracle price data. Does not re-fetch perp/spot market or `State` accounts — those are kept current via their live WebSocket streams. */
|
|
398
442
|
public async fetch(): Promise<void> {
|
|
399
443
|
await this.setInitialData();
|
|
400
444
|
}
|
|
@@ -424,6 +468,14 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
424
468
|
}
|
|
425
469
|
|
|
426
470
|
// TODO: need more options to skip loading perp market and spot market data. Because of how we fetch within the program account subscribers, I am commenting this all out
|
|
471
|
+
/**
|
|
472
|
+
* Batch-fetches every tracked oracle account via chunked `getMultipleAccountsInfo` calls (100
|
|
473
|
+
* pubkeys per chunk), decodes each with the source-appropriate `OracleClient`, stashes the
|
|
474
|
+
* results in `initialOraclePriceData`, and immediately emits `oraclePriceUpdate`/`update` for
|
|
475
|
+
* each. Unlike the v1 subscriber's `setInitialData`, does not seed perp/spot market data —
|
|
476
|
+
* those markets are seeded directly by the program-account subscribers' own initial-account
|
|
477
|
+
* list instead.
|
|
478
|
+
*/
|
|
427
479
|
async setInitialData(): Promise<void> {
|
|
428
480
|
const connection = this.program.provider.connection;
|
|
429
481
|
// Profile oracle initial data setup
|
|
@@ -495,12 +547,14 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
495
547
|
this.eventEmitter.emit('update');
|
|
496
548
|
}
|
|
497
549
|
|
|
550
|
+
/** Clears the seed data stashed by `setInitialData()`/`findAllMarketAndOracles` once consumed, freeing the memory. */
|
|
498
551
|
removeInitialData() {
|
|
499
552
|
this.initialPerpMarketAccountData = new Map();
|
|
500
553
|
this.initialSpotMarketAccountData = new Map();
|
|
501
554
|
this.initialOraclePriceData = new Map();
|
|
502
555
|
}
|
|
503
556
|
|
|
557
|
+
/** Subscribes a `WebSocketAccountSubscriberV2` for every tracked oracle not already subscribed, in parallel, skipping duplicates already present in `oracleSubscribers`. */
|
|
504
558
|
async subscribeToOracles(): Promise<boolean> {
|
|
505
559
|
const startTime = performance.now();
|
|
506
560
|
|
|
@@ -526,6 +580,13 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
526
580
|
return true;
|
|
527
581
|
}
|
|
528
582
|
|
|
583
|
+
/**
|
|
584
|
+
* Creates and subscribes a `WebSocketAccountSubscriberV2` for one oracle, decoding buffers
|
|
585
|
+
* with the source-appropriate `OracleClient`. Seeds from `initialOraclePriceData` if available
|
|
586
|
+
* before subscribing.
|
|
587
|
+
* @param oracleInfo Oracle pubkey and source to subscribe.
|
|
588
|
+
* @returns `false` if no `OracleClient` is registered for `oracleInfo.source` or the subscribe call throws; otherwise `true`.
|
|
589
|
+
*/
|
|
529
590
|
async subscribeToOracle(oracleInfo: OracleInfo): Promise<boolean> {
|
|
530
591
|
try {
|
|
531
592
|
const oracleId = getOracleId(oracleInfo.publicKey, oracleInfo.source);
|
|
@@ -577,14 +638,17 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
577
638
|
}
|
|
578
639
|
}
|
|
579
640
|
|
|
641
|
+
/** Unsubscribes the single multiplexed perp-market program-account stream. */
|
|
580
642
|
async unsubscribeFromMarketAccounts(): Promise<void> {
|
|
581
643
|
await this.perpMarketAllAccountsSubscriber.unsubscribe();
|
|
582
644
|
}
|
|
583
645
|
|
|
646
|
+
/** Unsubscribes the single multiplexed spot-market program-account stream. */
|
|
584
647
|
async unsubscribeFromSpotMarketAccounts(): Promise<void> {
|
|
585
648
|
await this.spotMarketAllAccountsSubscriber.unsubscribe();
|
|
586
649
|
}
|
|
587
650
|
|
|
651
|
+
/** Unsubscribes every per-oracle `WebSocketAccountSubscriberV2`, in parallel. */
|
|
588
652
|
async unsubscribeFromOracles(): Promise<void> {
|
|
589
653
|
await Promise.all(
|
|
590
654
|
Array.from(this.oracleSubscribers.values()).map((accountSubscriber) =>
|
|
@@ -593,6 +657,7 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
593
657
|
);
|
|
594
658
|
}
|
|
595
659
|
|
|
660
|
+
/** Tears down the `State` subscriber, both market program-account streams, and every oracle subscriber. A no-op if not subscribed. */
|
|
596
661
|
public async unsubscribe(): Promise<void> {
|
|
597
662
|
if (!this.isSubscribed) {
|
|
598
663
|
return;
|
|
@@ -613,6 +678,12 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
613
678
|
this.subscriptionPromiseResolver = () => {};
|
|
614
679
|
}
|
|
615
680
|
|
|
681
|
+
/**
|
|
682
|
+
* Adds an oracle to be tracked, subscribing a new `WebSocketAccountSubscriberV2` for it. A
|
|
683
|
+
* no-op that resolves `true` immediately for the `PublicKey.default` sentinel (quote-asset "no
|
|
684
|
+
* oracle") or an oracle already tracked.
|
|
685
|
+
* @param oracleInfo Oracle pubkey and source to start tracking.
|
|
686
|
+
*/
|
|
616
687
|
async addOracle(oracleInfo: OracleInfo): Promise<boolean> {
|
|
617
688
|
const oracleId = getOracleId(oracleInfo.publicKey, oracleInfo.source);
|
|
618
689
|
if (this.oracleSubscribers.has(oracleId)) {
|
|
@@ -626,6 +697,7 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
626
697
|
return this.subscribeToOracle(oracleInfo);
|
|
627
698
|
}
|
|
628
699
|
|
|
700
|
+
/** Rebuilds `perpOracleMap`/`perpOracleStringMap` from currently cached perp markets, calling `addOracle` for any oracle not yet tracked. */
|
|
629
701
|
async setPerpOracleMap() {
|
|
630
702
|
const perpMarkets = this.getMarketAccountsAndSlots();
|
|
631
703
|
const addOraclePromises = [];
|
|
@@ -651,6 +723,7 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
651
723
|
await Promise.all(addOraclePromises);
|
|
652
724
|
}
|
|
653
725
|
|
|
726
|
+
/** Rebuilds `spotOracleMap`/`spotOracleStringMap` from currently cached spot markets, calling `addOracle` for any oracle not yet tracked. */
|
|
654
727
|
async setSpotOracleMap() {
|
|
655
728
|
const spotMarkets = this.getSpotMarketAccountsAndSlots();
|
|
656
729
|
const addOraclePromises = [];
|
|
@@ -676,6 +749,16 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
676
749
|
await Promise.all(addOraclePromises);
|
|
677
750
|
}
|
|
678
751
|
|
|
752
|
+
/**
|
|
753
|
+
* Applies `delistedMarketSetting` to any oracle backing a currently `status: delisted` perp
|
|
754
|
+
* market (and not still used by a live spot market, per `findDelistedPerpMarketsAndOracles`):
|
|
755
|
+
* unsubscribes the oracle's subscriber, and additionally drops it from `oracleSubscribers` if
|
|
756
|
+
* the setting is `Discard`. A no-op if the setting is `Subscribe`. Note this only manages
|
|
757
|
+
* oracle subscriptions — delisted market accounts themselves cannot be selectively unsubscribed
|
|
758
|
+
* from the shared perp/spot program-account stream; instead the `subscribe()` update callback
|
|
759
|
+
* drops any incoming update for a `status: delisted` market unless `delistedMarketSetting` is
|
|
760
|
+
* `Subscribe`, freezing that market's cached data at its last pre-delisting state.
|
|
761
|
+
*/
|
|
679
762
|
async handleDelistedMarketOracles(): Promise<void> {
|
|
680
763
|
if (this.delistedMarketSetting === DelistedMarketSetting.Subscribe) {
|
|
681
764
|
return;
|
|
@@ -698,6 +781,7 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
698
781
|
}
|
|
699
782
|
}
|
|
700
783
|
|
|
784
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
701
785
|
assertIsSubscribed(): void {
|
|
702
786
|
if (!this.isSubscribed) {
|
|
703
787
|
throw new NotSubscribedError(
|
|
@@ -706,6 +790,7 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
706
790
|
}
|
|
707
791
|
}
|
|
708
792
|
|
|
793
|
+
/** Throws `NotSubscribedError` if not subscribed, or a generic `Error` (via `assertDataAndSlot`) if subscribed but the `State` account hasn't loaded yet. */
|
|
709
794
|
public getStateAccountAndSlot(): DataAndSlot<StateAccount> {
|
|
710
795
|
this.assertIsSubscribed();
|
|
711
796
|
return assertDataAndSlot(
|
|
@@ -714,6 +799,7 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
714
799
|
);
|
|
715
800
|
}
|
|
716
801
|
|
|
802
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` hasn't been observed yet on the perp program-account stream. */
|
|
717
803
|
public getMarketAccountAndSlot(
|
|
718
804
|
marketIndex: number
|
|
719
805
|
): DataAndSlot<PerpMarketAccount> | undefined {
|
|
@@ -721,10 +807,12 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
721
807
|
return this.perpMarketAccountLatestData.get(marketIndex);
|
|
722
808
|
}
|
|
723
809
|
|
|
810
|
+
/** Returns every currently cached (loaded) perp market. Does not throw `NotSubscribedError`. */
|
|
724
811
|
public getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[] {
|
|
725
812
|
return Array.from(this.perpMarketAccountLatestData.values());
|
|
726
813
|
}
|
|
727
814
|
|
|
815
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` hasn't been observed yet on the spot program-account stream. */
|
|
728
816
|
public getSpotMarketAccountAndSlot(
|
|
729
817
|
marketIndex: number
|
|
730
818
|
): DataAndSlot<SpotMarketAccount> | undefined {
|
|
@@ -732,10 +820,18 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
732
820
|
return this.spotMarketAccountLatestData.get(marketIndex);
|
|
733
821
|
}
|
|
734
822
|
|
|
823
|
+
/** Returns every currently cached (loaded) spot market. Does not throw `NotSubscribedError`. */
|
|
735
824
|
public getSpotMarketAccountsAndSlots(): DataAndSlot<SpotMarketAccount>[] {
|
|
736
825
|
return Array.from(this.spotMarketAccountLatestData.values());
|
|
737
826
|
}
|
|
738
827
|
|
|
828
|
+
/**
|
|
829
|
+
* Looks up cached oracle price data by oracle id (see `getOracleId`). Special-cases the
|
|
830
|
+
* quote-asset default oracle id, returning the constant `QUOTE_ORACLE_PRICE_DATA` at slot 0
|
|
831
|
+
* rather than a subscriber lookup, since that oracle is never actually subscribed to.
|
|
832
|
+
* @param oracleId Oracle id string from `getOracleId(publicKey, source)`.
|
|
833
|
+
* @returns Cached price data/slot, or undefined if not tracked. Throws `NotSubscribedError` if not subscribed.
|
|
834
|
+
*/
|
|
739
835
|
public getOraclePriceDataAndSlot(
|
|
740
836
|
oracleId: string
|
|
741
837
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -749,6 +845,13 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
749
845
|
return this.oracleSubscribers.get(oracleId)?.dataAndSlot;
|
|
750
846
|
}
|
|
751
847
|
|
|
848
|
+
/**
|
|
849
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a perp market's
|
|
850
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
851
|
+
* `perpOracleMap`, triggers a background `setPerpOracleMap()` refresh and still returns the
|
|
852
|
+
* (possibly stale) mapping for this call.
|
|
853
|
+
* @param marketIndex Perp market index whose oracle price to look up.
|
|
854
|
+
*/
|
|
752
855
|
public getOraclePriceDataAndSlotForPerpMarket(
|
|
753
856
|
marketIndex: number
|
|
754
857
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -767,6 +870,13 @@ export class WebSocketVelocityClientAccountSubscriberV2
|
|
|
767
870
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
768
871
|
}
|
|
769
872
|
|
|
873
|
+
/**
|
|
874
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a spot market's
|
|
875
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
876
|
+
* `spotOracleMap`, triggers a background `setSpotOracleMap()` refresh and still returns the
|
|
877
|
+
* (possibly stale) mapping for this call.
|
|
878
|
+
* @param marketIndex Spot market index whose oracle price to look up.
|
|
879
|
+
*/
|
|
770
880
|
public getOraclePriceDataAndSlotForSpotMarket(
|
|
771
881
|
marketIndex: number
|
|
772
882
|
): DataAndSlot<OraclePriceData> | undefined {
|