@velocity-exchange/sdk 0.2.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
|
@@ -4,6 +4,11 @@ exports.WebSocketUserAccountSubscriber = void 0;
|
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
const events_1 = require("events");
|
|
6
6
|
const webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
|
|
7
|
+
/**
|
|
8
|
+
* Default `UserAccountSubscriber` implementation: wraps a single `WebSocketAccountSubscriber`
|
|
9
|
+
* for the `UserAccount`. `userDataAccountSubscriber` throws if accessed before `subscribe()` has
|
|
10
|
+
* run (it is created there, not in the constructor).
|
|
11
|
+
*/
|
|
7
12
|
class WebSocketUserAccountSubscriber {
|
|
8
13
|
get userDataAccountSubscriber() {
|
|
9
14
|
if (!this._userDataAccountSubscriber) {
|
|
@@ -14,6 +19,12 @@ class WebSocketUserAccountSubscriber {
|
|
|
14
19
|
set userDataAccountSubscriber(subscriber) {
|
|
15
20
|
this._userDataAccountSubscriber = subscriber;
|
|
16
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* @param program Anchor program providing the connection and coder.
|
|
24
|
+
* @param userAccountPublicKey Address of the `UserAccount` to track.
|
|
25
|
+
* @param resubOpts Resubscription watchdog options passed through to the underlying `WebSocketAccountSubscriber`.
|
|
26
|
+
* @param commitment Commitment for the underlying subscription; defaults to the provider's configured commitment.
|
|
27
|
+
*/
|
|
17
28
|
constructor(program, userAccountPublicKey, resubOpts, commitment) {
|
|
18
29
|
this.isSubscribed = false;
|
|
19
30
|
this.program = program;
|
|
@@ -22,6 +33,11 @@ class WebSocketUserAccountSubscriber {
|
|
|
22
33
|
this.eventEmitter = new events_1.EventEmitter();
|
|
23
34
|
this.commitment = commitment;
|
|
24
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates the underlying `WebSocketAccountSubscriber` and subscribes it. Idempotent: a no-op
|
|
38
|
+
* (returns `true`) if already subscribed.
|
|
39
|
+
* @param userAccount Optional pre-fetched account data to seed the subscriber with, skipping the initial RPC fetch.
|
|
40
|
+
*/
|
|
25
41
|
async subscribe(userAccount) {
|
|
26
42
|
if (this.isSubscribed) {
|
|
27
43
|
return true;
|
|
@@ -38,9 +54,11 @@ class WebSocketUserAccountSubscriber {
|
|
|
38
54
|
this.isSubscribed = true;
|
|
39
55
|
return true;
|
|
40
56
|
}
|
|
57
|
+
/** Fetches the account once via the underlying `WebSocketAccountSubscriber`. */
|
|
41
58
|
async fetch() {
|
|
42
59
|
await Promise.all([this.userDataAccountSubscriber.fetch()]);
|
|
43
60
|
}
|
|
61
|
+
/** Tears down the underlying WebSocket subscription. A no-op if not subscribed. */
|
|
44
62
|
async unsubscribe() {
|
|
45
63
|
if (!this.isSubscribed) {
|
|
46
64
|
return;
|
|
@@ -48,15 +66,23 @@ class WebSocketUserAccountSubscriber {
|
|
|
48
66
|
await Promise.all([this.userDataAccountSubscriber.unsubscribe()]);
|
|
49
67
|
this.isSubscribed = false;
|
|
50
68
|
}
|
|
69
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
51
70
|
assertIsSubscribed() {
|
|
52
71
|
if (!this.isSubscribed) {
|
|
53
72
|
throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
|
|
54
73
|
}
|
|
55
74
|
}
|
|
75
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined only if subscribed but no data has loaded yet. */
|
|
56
76
|
getUserAccountAndSlot() {
|
|
57
77
|
this.assertIsSubscribed();
|
|
58
78
|
return this.userDataAccountSubscriber.dataAndSlot;
|
|
59
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Applies an externally-obtained account update if `slot` is not older than the currently
|
|
82
|
+
* cached slot.
|
|
83
|
+
* @param userAccount Decoded account data to apply.
|
|
84
|
+
* @param slot Slot the data was observed at.
|
|
85
|
+
*/
|
|
60
86
|
updateData(userAccount, slot) {
|
|
61
87
|
var _a;
|
|
62
88
|
const currentDataSlot = ((_a = this.userDataAccountSubscriber.dataAndSlot) === null || _a === void 0 ? void 0 : _a.slot) || 0;
|
|
@@ -5,6 +5,11 @@ import StrictEventEmitter from 'strict-event-emitter-types';
|
|
|
5
5
|
import { EventEmitter } from 'events';
|
|
6
6
|
import { Commitment, PublicKey } from '@solana/web3.js';
|
|
7
7
|
import { UserStatsAccount } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Default `UserStatsAccountSubscriber` implementation: wraps a single `WebSocketAccountSubscriber`
|
|
10
|
+
* for the `UserStatsAccount`, mirroring `WebSocketUserAccountSubscriber`.
|
|
11
|
+
* `userStatsAccountSubscriber` throws if accessed before `subscribe()` has run.
|
|
12
|
+
*/
|
|
8
13
|
export declare class WebSocketUserStatsAccountSubscriber implements UserStatsAccountSubscriber {
|
|
9
14
|
isSubscribed: boolean;
|
|
10
15
|
resubOpts?: ResubOpts;
|
|
@@ -15,10 +20,25 @@ export declare class WebSocketUserStatsAccountSubscriber implements UserStatsAcc
|
|
|
15
20
|
private _userStatsAccountSubscriber?;
|
|
16
21
|
get userStatsAccountSubscriber(): AccountSubscriber<UserStatsAccount>;
|
|
17
22
|
set userStatsAccountSubscriber(subscriber: AccountSubscriber<UserStatsAccount>);
|
|
23
|
+
/**
|
|
24
|
+
* @param program Anchor program providing the connection and coder.
|
|
25
|
+
* @param userStatsAccountPublicKey Address of the `UserStatsAccount` to track.
|
|
26
|
+
* @param resubOpts Resubscription watchdog options passed through to the underlying `WebSocketAccountSubscriber`.
|
|
27
|
+
* @param commitment Commitment for the underlying subscription; defaults to the provider's configured commitment.
|
|
28
|
+
*/
|
|
18
29
|
constructor(program: VelocityProgram, userStatsAccountPublicKey: PublicKey, resubOpts?: ResubOpts, commitment?: Commitment);
|
|
30
|
+
/**
|
|
31
|
+
* Creates the underlying `WebSocketAccountSubscriber` and subscribes it. Idempotent: a no-op
|
|
32
|
+
* (returns `true`) if already subscribed.
|
|
33
|
+
* @param userStatsAccount Optional pre-fetched account data to seed the subscriber with, skipping the initial RPC fetch.
|
|
34
|
+
*/
|
|
19
35
|
subscribe(userStatsAccount?: UserStatsAccount): Promise<boolean>;
|
|
36
|
+
/** Fetches the account once via the underlying `WebSocketAccountSubscriber`. */
|
|
20
37
|
fetch(): Promise<void>;
|
|
38
|
+
/** Tears down the underlying WebSocket subscription. A no-op if not subscribed. */
|
|
21
39
|
unsubscribe(): Promise<void>;
|
|
40
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
22
41
|
assertIsSubscribed(): void;
|
|
42
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined only if subscribed but no data has loaded yet. */
|
|
23
43
|
getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined;
|
|
24
44
|
}
|
|
@@ -4,6 +4,11 @@ exports.WebSocketUserStatsAccountSubscriber = void 0;
|
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
const events_1 = require("events");
|
|
6
6
|
const webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
|
|
7
|
+
/**
|
|
8
|
+
* Default `UserStatsAccountSubscriber` implementation: wraps a single `WebSocketAccountSubscriber`
|
|
9
|
+
* for the `UserStatsAccount`, mirroring `WebSocketUserAccountSubscriber`.
|
|
10
|
+
* `userStatsAccountSubscriber` throws if accessed before `subscribe()` has run.
|
|
11
|
+
*/
|
|
7
12
|
class WebSocketUserStatsAccountSubscriber {
|
|
8
13
|
get userStatsAccountSubscriber() {
|
|
9
14
|
if (!this._userStatsAccountSubscriber) {
|
|
@@ -14,6 +19,12 @@ class WebSocketUserStatsAccountSubscriber {
|
|
|
14
19
|
set userStatsAccountSubscriber(subscriber) {
|
|
15
20
|
this._userStatsAccountSubscriber = subscriber;
|
|
16
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* @param program Anchor program providing the connection and coder.
|
|
24
|
+
* @param userStatsAccountPublicKey Address of the `UserStatsAccount` to track.
|
|
25
|
+
* @param resubOpts Resubscription watchdog options passed through to the underlying `WebSocketAccountSubscriber`.
|
|
26
|
+
* @param commitment Commitment for the underlying subscription; defaults to the provider's configured commitment.
|
|
27
|
+
*/
|
|
17
28
|
constructor(program, userStatsAccountPublicKey, resubOpts, commitment) {
|
|
18
29
|
this.isSubscribed = false;
|
|
19
30
|
this.program = program;
|
|
@@ -22,6 +33,11 @@ class WebSocketUserStatsAccountSubscriber {
|
|
|
22
33
|
this.resubOpts = resubOpts;
|
|
23
34
|
this.commitment = commitment;
|
|
24
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates the underlying `WebSocketAccountSubscriber` and subscribes it. Idempotent: a no-op
|
|
38
|
+
* (returns `true`) if already subscribed.
|
|
39
|
+
* @param userStatsAccount Optional pre-fetched account data to seed the subscriber with, skipping the initial RPC fetch.
|
|
40
|
+
*/
|
|
25
41
|
async subscribe(userStatsAccount) {
|
|
26
42
|
if (this.isSubscribed) {
|
|
27
43
|
return true;
|
|
@@ -38,9 +54,11 @@ class WebSocketUserStatsAccountSubscriber {
|
|
|
38
54
|
this.isSubscribed = true;
|
|
39
55
|
return true;
|
|
40
56
|
}
|
|
57
|
+
/** Fetches the account once via the underlying `WebSocketAccountSubscriber`. */
|
|
41
58
|
async fetch() {
|
|
42
59
|
await Promise.all([this.userStatsAccountSubscriber.fetch()]);
|
|
43
60
|
}
|
|
61
|
+
/** Tears down the underlying WebSocket subscription. A no-op if not subscribed. */
|
|
44
62
|
async unsubscribe() {
|
|
45
63
|
if (!this.isSubscribed) {
|
|
46
64
|
return;
|
|
@@ -48,11 +66,13 @@ class WebSocketUserStatsAccountSubscriber {
|
|
|
48
66
|
await Promise.all([this.userStatsAccountSubscriber.unsubscribe()]);
|
|
49
67
|
this.isSubscribed = false;
|
|
50
68
|
}
|
|
69
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
51
70
|
assertIsSubscribed() {
|
|
52
71
|
if (!this.isSubscribed) {
|
|
53
72
|
throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
|
|
54
73
|
}
|
|
55
74
|
}
|
|
75
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined only if subscribed but no data has loaded yet. */
|
|
56
76
|
getUserStatsAccountAndSlot() {
|
|
57
77
|
this.assertIsSubscribed();
|
|
58
78
|
return this.userStatsAccountSubscriber.dataAndSlot;
|
|
@@ -11,6 +11,16 @@ import { OracleInfo, OraclePriceData } from '../oracles/types';
|
|
|
11
11
|
import { OracleClientCache } from '../oracles/oracleClientCache';
|
|
12
12
|
import { VelocityProgram } from '../config';
|
|
13
13
|
import { WebSocketAccountSubscriberV2 } from './webSocketAccountSubscriberV2';
|
|
14
|
+
/**
|
|
15
|
+
* Default `VelocityClientAccountSubscriber` implementation: creates one `WebSocketAccountSubscriber`
|
|
16
|
+
* per tracked `State`/`PerpMarket`/`SpotMarket`/oracle account, giving the lowest update latency
|
|
17
|
+
* at the cost of one WebSocket subscription per account. Before subscribing each per-account
|
|
18
|
+
* subscriber, `setInitialData()` batch-fetches all of them via `getMultipleAccountsInfo` so the
|
|
19
|
+
* per-account `WebSocketAccountSubscriber.subscribe()` calls can seed from that data instead of
|
|
20
|
+
* each issuing its own `getAccountInfo` round trip. `customPerpMarketAccountSubscriber`/
|
|
21
|
+
* `customOracleAccountSubscriber` let a caller substitute `WebSocketAccountSubscriberV2` (or any
|
|
22
|
+
* other `AccountSubscriber` implementation) for those two account types specifically.
|
|
23
|
+
*/
|
|
14
24
|
export declare class WebSocketVelocityClientAccountSubscriber implements VelocityClientAccountSubscriber {
|
|
15
25
|
isSubscribed: boolean;
|
|
16
26
|
program: VelocityProgram;
|
|
@@ -39,35 +49,146 @@ export declare class WebSocketVelocityClientAccountSubscriber implements Velocit
|
|
|
39
49
|
protected isSubscribing: boolean;
|
|
40
50
|
protected subscriptionPromiseResolver: (val: boolean) => void;
|
|
41
51
|
protected subscriptionPromise: Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* @param program Anchor program used to derive PDAs, decode accounts, and resolve oracle clients.
|
|
54
|
+
* @param perpMarketIndexes Perp market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
55
|
+
* @param spotMarketIndexes Spot market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
56
|
+
* @param oracleInfos Oracles to track up front, if `shouldFindAllMarketsAndOracles` is false.
|
|
57
|
+
* @param shouldFindAllMarketsAndOracles If true, `subscribe()` first discovers every market/oracle from on-chain state, ignoring the index/info args above.
|
|
58
|
+
* @param delistedMarketSetting Behavior applied to delisted perp markets/oracles after subscribing; see `DelistedMarketSetting`.
|
|
59
|
+
* @param resubOpts Resubscription watchdog options passed to every per-account `WebSocketAccountSubscriber`.
|
|
60
|
+
* @param commitment Commitment for every per-account subscription; defaults to the provider's configured commitment.
|
|
61
|
+
* @param customPerpMarketAccountSubscriber Optional alternate `AccountSubscriber` constructor (e.g. `WebSocketAccountSubscriberV2`) used for perp market accounts instead of the default `WebSocketAccountSubscriber`.
|
|
62
|
+
* @param customOracleAccountSubscriber Optional alternate `AccountSubscriber` constructor used for oracle accounts instead of the default `WebSocketAccountSubscriber`.
|
|
63
|
+
*/
|
|
42
64
|
constructor(program: VelocityProgram, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting, resubOpts?: ResubOpts, commitment?: Commitment, customPerpMarketAccountSubscriber?: new (accountName: string, program: VelocityProgram, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => any, resubOpts?: ResubOpts, commitment?: Commitment) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>, customOracleAccountSubscriber?: new (accountName: string, program: VelocityProgram, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => any, resubOpts?: ResubOpts, commitment?: Commitment) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>);
|
|
65
|
+
/**
|
|
66
|
+
* Subscribes the `State` account, batch-seeds all market/oracle accounts via `setInitialData()`,
|
|
67
|
+
* then subscribes every per-account `WebSocketAccountSubscriber` (or the custom subscriber
|
|
68
|
+
* class, if configured) for perp markets, spot markets, and oracles. Applies
|
|
69
|
+
* `delistedMarketSetting` afterward. Idempotent: a no-op if already subscribed, and concurrent
|
|
70
|
+
* calls while a subscribe is in flight share the same result via `subscriptionPromise` rather
|
|
71
|
+
* than issuing duplicate subscriptions. Always resolves `true` (no retry/failure path — a
|
|
72
|
+
* per-account fetch failure surfaces via `ensureAccountFetched`'s retries, not by aborting
|
|
73
|
+
* subscribe).
|
|
74
|
+
*/
|
|
43
75
|
subscribe(): Promise<boolean>;
|
|
44
76
|
chunks: <T>(array: readonly T[], size: number) => T[][];
|
|
77
|
+
/**
|
|
78
|
+
* Batch-fetches every tracked perp market, spot market, and oracle account via chunked
|
|
79
|
+
* `getMultipleAccountsInfo` calls (75 pubkeys per chunk) and stashes the decoded results in
|
|
80
|
+
* `initialPerpMarketAccountData`/`initialSpotMarketAccountData`/`initialOraclePriceData`.
|
|
81
|
+
* Each per-account `WebSocketAccountSubscriber.subscribe()` call seeds from this data via
|
|
82
|
+
* `setData` instead of issuing its own `getAccountInfo` round trip. Skips markets already
|
|
83
|
+
* populated (e.g. by `findAllMarketAndOracles` when `shouldFindAllMarketsAndOracles` is set).
|
|
84
|
+
*/
|
|
45
85
|
setInitialData(): Promise<void>;
|
|
86
|
+
/** Clears the seed data stashed by `setInitialData()` once every per-account subscriber has consumed it, freeing the memory. */
|
|
46
87
|
removeInitialData(): void;
|
|
88
|
+
/** Subscribes a `WebSocketAccountSubscriber` for every tracked perp market index, in parallel. */
|
|
47
89
|
subscribeToPerpMarketAccounts(): Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* Creates and subscribes the per-account subscriber (custom class if `customPerpMarketAccountSubscriber`
|
|
92
|
+
* is set, else `WebSocketAccountSubscriber`) for one perp market, seeding it from
|
|
93
|
+
* `initialPerpMarketAccountData` if available, and waits (via `ensureAccountFetched`, up to 5
|
|
94
|
+
* retries with a 200ms backoff) for data to actually land before returning.
|
|
95
|
+
* @param marketIndex Perp market index to subscribe.
|
|
96
|
+
*/
|
|
48
97
|
subscribeToPerpMarketAccount(marketIndex: number): Promise<boolean>;
|
|
98
|
+
/** Subscribes a `WebSocketAccountSubscriber` for every tracked spot market index, in parallel. */
|
|
49
99
|
subscribeToSpotMarketAccounts(): Promise<boolean>;
|
|
100
|
+
/**
|
|
101
|
+
* Creates and subscribes a `WebSocketAccountSubscriber` for one spot market, seeding it from
|
|
102
|
+
* `initialSpotMarketAccountData` if available, and waits (via `ensureAccountFetched`) for data
|
|
103
|
+
* to land before returning.
|
|
104
|
+
* @param marketIndex Spot market index to subscribe.
|
|
105
|
+
*/
|
|
50
106
|
subscribeToSpotMarketAccount(marketIndex: number): Promise<boolean>;
|
|
107
|
+
/** Subscribes an account subscriber for every tracked oracle, in parallel, skipping the `PublicKey.default` (quote-asset "no oracle") sentinel. */
|
|
51
108
|
subscribeToOracles(): Promise<boolean>;
|
|
109
|
+
/**
|
|
110
|
+
* Creates and subscribes the per-account subscriber (custom class if `customOracleAccountSubscriber`
|
|
111
|
+
* is set, else `WebSocketAccountSubscriber`) for one oracle, decoding buffers with the
|
|
112
|
+
* source-appropriate `OracleClient`. Seeds from `initialOraclePriceData` if available and
|
|
113
|
+
* waits (via `ensureAccountFetched`) for data to land before returning.
|
|
114
|
+
* @param oracleInfo Oracle pubkey and source to subscribe.
|
|
115
|
+
* @returns `false` if no `OracleClient` is registered for `oracleInfo.source`; otherwise `true`.
|
|
116
|
+
*/
|
|
52
117
|
subscribeToOracle(oracleInfo: OracleInfo): Promise<boolean>;
|
|
118
|
+
/** Unsubscribes every per-account subscriber tracking a perp market, in parallel. */
|
|
53
119
|
unsubscribeFromMarketAccounts(): Promise<void>;
|
|
120
|
+
/** Unsubscribes every per-account subscriber tracking a spot market, in parallel. */
|
|
54
121
|
unsubscribeFromSpotMarketAccounts(): Promise<void>;
|
|
122
|
+
/** Unsubscribes every per-account subscriber tracking an oracle, in parallel. */
|
|
55
123
|
unsubscribeFromOracles(): Promise<void>;
|
|
124
|
+
/** 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). */
|
|
56
125
|
fetch(): Promise<void>;
|
|
126
|
+
/** Tears down the `State` subscriber and every per-account market/oracle subscriber. A no-op if not subscribed. */
|
|
57
127
|
unsubscribe(): Promise<void>;
|
|
128
|
+
/**
|
|
129
|
+
* Adds a spot market (and its oracle, via `setSpotOracleMap`) to be tracked, subscribing a new
|
|
130
|
+
* `WebSocketAccountSubscriber` for it. Idempotent: returns `true` immediately if already tracked.
|
|
131
|
+
* @param marketIndex Spot market index to start tracking.
|
|
132
|
+
*/
|
|
58
133
|
addSpotMarket(marketIndex: number): Promise<boolean>;
|
|
134
|
+
/**
|
|
135
|
+
* Adds a perp market (and its oracle, via `setPerpOracleMap`) to be tracked, subscribing a new
|
|
136
|
+
* `WebSocketAccountSubscriber` for it. Idempotent: returns `true` immediately if already tracked.
|
|
137
|
+
* @param marketIndex Perp market index to start tracking.
|
|
138
|
+
*/
|
|
59
139
|
addPerpMarket(marketIndex: number): Promise<boolean>;
|
|
140
|
+
/**
|
|
141
|
+
* Adds an oracle to be tracked, subscribing a new per-account subscriber for it. A no-op that
|
|
142
|
+
* resolves `true` immediately for the `PublicKey.default` sentinel (quote-asset "no oracle")
|
|
143
|
+
* or an oracle already tracked.
|
|
144
|
+
* @param oracleInfo Oracle pubkey and source to start tracking.
|
|
145
|
+
*/
|
|
60
146
|
addOracle(oracleInfo: OracleInfo): Promise<boolean>;
|
|
147
|
+
/** Rebuilds `perpOracleMap`/`perpOracleStringMap` from currently cached perp markets, calling `addOracle` for any oracle not yet tracked. */
|
|
61
148
|
setPerpOracleMap(): Promise<void>;
|
|
149
|
+
/** Rebuilds `spotOracleMap`/`spotOracleStringMap` from currently cached spot markets, calling `addOracle` for any oracle not yet tracked. */
|
|
62
150
|
setSpotOracleMap(): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Applies `delistedMarketSetting` to any perp market currently `status: delisted` (and its
|
|
153
|
+
* oracle, if not shared with a live spot market): unsubscribes the per-account subscriber, and
|
|
154
|
+
* additionally drops it from `perpMarketAccountSubscribers`/`oracleSubscribers` if the setting
|
|
155
|
+
* is `Discard`. A no-op if the setting is `Subscribe`.
|
|
156
|
+
*/
|
|
63
157
|
handleDelistedMarkets(): Promise<void>;
|
|
158
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
64
159
|
assertIsSubscribed(): void;
|
|
160
|
+
/** 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). */
|
|
65
161
|
getStateAccountAndSlot(): DataAndSlot<StateAccount>;
|
|
162
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` isn't tracked (or hasn't loaded yet). */
|
|
66
163
|
getMarketAccountAndSlot(marketIndex: number): DataAndSlot<PerpMarketAccount> | undefined;
|
|
164
|
+
/** Returns every currently cached (loaded) perp market. Does not throw `NotSubscribedError`. */
|
|
67
165
|
getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[];
|
|
166
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` isn't tracked (or hasn't loaded yet). */
|
|
68
167
|
getSpotMarketAccountAndSlot(marketIndex: number): DataAndSlot<SpotMarketAccount> | undefined;
|
|
168
|
+
/** Returns every currently cached (loaded) spot market. Does not throw `NotSubscribedError`. */
|
|
69
169
|
getSpotMarketAccountsAndSlots(): DataAndSlot<SpotMarketAccount>[];
|
|
170
|
+
/**
|
|
171
|
+
* Looks up cached oracle price data by oracle id (see `getOracleId`). Special-cases the
|
|
172
|
+
* quote-asset default oracle id, returning the constant `QUOTE_ORACLE_PRICE_DATA` at slot 0
|
|
173
|
+
* rather than a subscriber lookup, since that oracle is never actually subscribed to.
|
|
174
|
+
* @param oracleId Oracle id string from `getOracleId(publicKey, source)`.
|
|
175
|
+
* @returns Cached price data/slot, or undefined if not tracked. Throws `NotSubscribedError` if not subscribed.
|
|
176
|
+
*/
|
|
70
177
|
getOraclePriceDataAndSlot(oracleId: string): DataAndSlot<OraclePriceData> | undefined;
|
|
178
|
+
/**
|
|
179
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a perp market's
|
|
180
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
181
|
+
* `perpOracleMap`, triggers a background `setPerpOracleMap()` refresh and still returns the
|
|
182
|
+
* (possibly stale) mapping for this call.
|
|
183
|
+
* @param marketIndex Perp market index whose oracle price to look up.
|
|
184
|
+
*/
|
|
71
185
|
getOraclePriceDataAndSlotForPerpMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
|
|
186
|
+
/**
|
|
187
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a spot market's
|
|
188
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
189
|
+
* `spotOracleMap`, triggers a background `setSpotOracleMap()` refresh and still returns the
|
|
190
|
+
* (possibly stale) mapping for this call.
|
|
191
|
+
* @param marketIndex Spot market index whose oracle price to look up.
|
|
192
|
+
*/
|
|
72
193
|
getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
|
|
73
194
|
}
|
|
@@ -31,7 +31,29 @@ async function ensureAccountFetched(subscriber, maxAttempts = 5, delayMs = 200)
|
|
|
31
31
|
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Default `VelocityClientAccountSubscriber` implementation: creates one `WebSocketAccountSubscriber`
|
|
36
|
+
* per tracked `State`/`PerpMarket`/`SpotMarket`/oracle account, giving the lowest update latency
|
|
37
|
+
* at the cost of one WebSocket subscription per account. Before subscribing each per-account
|
|
38
|
+
* subscriber, `setInitialData()` batch-fetches all of them via `getMultipleAccountsInfo` so the
|
|
39
|
+
* per-account `WebSocketAccountSubscriber.subscribe()` calls can seed from that data instead of
|
|
40
|
+
* each issuing its own `getAccountInfo` round trip. `customPerpMarketAccountSubscriber`/
|
|
41
|
+
* `customOracleAccountSubscriber` let a caller substitute `WebSocketAccountSubscriberV2` (or any
|
|
42
|
+
* other `AccountSubscriber` implementation) for those two account types specifically.
|
|
43
|
+
*/
|
|
34
44
|
class WebSocketVelocityClientAccountSubscriber {
|
|
45
|
+
/**
|
|
46
|
+
* @param program Anchor program used to derive PDAs, decode accounts, and resolve oracle clients.
|
|
47
|
+
* @param perpMarketIndexes Perp market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
48
|
+
* @param spotMarketIndexes Spot market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
49
|
+
* @param oracleInfos Oracles to track up front, if `shouldFindAllMarketsAndOracles` is false.
|
|
50
|
+
* @param shouldFindAllMarketsAndOracles If true, `subscribe()` first discovers every market/oracle from on-chain state, ignoring the index/info args above.
|
|
51
|
+
* @param delistedMarketSetting Behavior applied to delisted perp markets/oracles after subscribing; see `DelistedMarketSetting`.
|
|
52
|
+
* @param resubOpts Resubscription watchdog options passed to every per-account `WebSocketAccountSubscriber`.
|
|
53
|
+
* @param commitment Commitment for every per-account subscription; defaults to the provider's configured commitment.
|
|
54
|
+
* @param customPerpMarketAccountSubscriber Optional alternate `AccountSubscriber` constructor (e.g. `WebSocketAccountSubscriberV2`) used for perp market accounts instead of the default `WebSocketAccountSubscriber`.
|
|
55
|
+
* @param customOracleAccountSubscriber Optional alternate `AccountSubscriber` constructor used for oracle accounts instead of the default `WebSocketAccountSubscriber`.
|
|
56
|
+
*/
|
|
35
57
|
constructor(program, perpMarketIndexes, spotMarketIndexes, oracleInfos, shouldFindAllMarketsAndOracles, delistedMarketSetting, resubOpts, commitment, customPerpMarketAccountSubscriber, customOracleAccountSubscriber) {
|
|
36
58
|
this.oracleClientCache = new oracleClientCache_1.OracleClientCache();
|
|
37
59
|
this.perpMarketAccountSubscribers = new Map();
|
|
@@ -63,6 +85,16 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
63
85
|
this.customPerpMarketAccountSubscriber = customPerpMarketAccountSubscriber;
|
|
64
86
|
this.customOracleAccountSubscriber = customOracleAccountSubscriber;
|
|
65
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Subscribes the `State` account, batch-seeds all market/oracle accounts via `setInitialData()`,
|
|
90
|
+
* then subscribes every per-account `WebSocketAccountSubscriber` (or the custom subscriber
|
|
91
|
+
* class, if configured) for perp markets, spot markets, and oracles. Applies
|
|
92
|
+
* `delistedMarketSetting` afterward. Idempotent: a no-op if already subscribed, and concurrent
|
|
93
|
+
* calls while a subscribe is in flight share the same result via `subscriptionPromise` rather
|
|
94
|
+
* than issuing duplicate subscriptions. Always resolves `true` (no retry/failure path — a
|
|
95
|
+
* per-account fetch failure surfaces via `ensureAccountFetched`'s retries, not by aborting
|
|
96
|
+
* subscribe).
|
|
97
|
+
*/
|
|
66
98
|
async subscribe() {
|
|
67
99
|
if (this.isSubscribed) {
|
|
68
100
|
return true;
|
|
@@ -110,6 +142,14 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
110
142
|
this.removeInitialData();
|
|
111
143
|
return true;
|
|
112
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Batch-fetches every tracked perp market, spot market, and oracle account via chunked
|
|
147
|
+
* `getMultipleAccountsInfo` calls (75 pubkeys per chunk) and stashes the decoded results in
|
|
148
|
+
* `initialPerpMarketAccountData`/`initialSpotMarketAccountData`/`initialOraclePriceData`.
|
|
149
|
+
* Each per-account `WebSocketAccountSubscriber.subscribe()` call seeds from this data via
|
|
150
|
+
* `setData` instead of issuing its own `getAccountInfo` round trip. Skips markets already
|
|
151
|
+
* populated (e.g. by `findAllMarketAndOracles` when `shouldFindAllMarketsAndOracles` is set).
|
|
152
|
+
*/
|
|
113
153
|
async setInitialData() {
|
|
114
154
|
const connection = this.program.provider.connection;
|
|
115
155
|
if (!this.initialPerpMarketAccountData) {
|
|
@@ -153,15 +193,24 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
153
193
|
return result;
|
|
154
194
|
}, []));
|
|
155
195
|
}
|
|
196
|
+
/** Clears the seed data stashed by `setInitialData()` once every per-account subscriber has consumed it, freeing the memory. */
|
|
156
197
|
removeInitialData() {
|
|
157
198
|
this.initialPerpMarketAccountData = new Map();
|
|
158
199
|
this.initialSpotMarketAccountData = new Map();
|
|
159
200
|
this.initialOraclePriceData = new Map();
|
|
160
201
|
}
|
|
202
|
+
/** Subscribes a `WebSocketAccountSubscriber` for every tracked perp market index, in parallel. */
|
|
161
203
|
async subscribeToPerpMarketAccounts() {
|
|
162
204
|
await Promise.all(this.perpMarketIndexes.map((marketIndex) => this.subscribeToPerpMarketAccount(marketIndex)));
|
|
163
205
|
return true;
|
|
164
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Creates and subscribes the per-account subscriber (custom class if `customPerpMarketAccountSubscriber`
|
|
209
|
+
* is set, else `WebSocketAccountSubscriber`) for one perp market, seeding it from
|
|
210
|
+
* `initialPerpMarketAccountData` if available, and waits (via `ensureAccountFetched`, up to 5
|
|
211
|
+
* retries with a 200ms backoff) for data to actually land before returning.
|
|
212
|
+
* @param marketIndex Perp market index to subscribe.
|
|
213
|
+
*/
|
|
165
214
|
async subscribeToPerpMarketAccount(marketIndex) {
|
|
166
215
|
var _a;
|
|
167
216
|
const perpMarketPublicKey = await (0, pda_1.getPerpMarketPublicKey)(this.program.programId, marketIndex);
|
|
@@ -179,10 +228,17 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
179
228
|
this.perpMarketAccountSubscribers.set(marketIndex, accountSubscriber);
|
|
180
229
|
return true;
|
|
181
230
|
}
|
|
231
|
+
/** Subscribes a `WebSocketAccountSubscriber` for every tracked spot market index, in parallel. */
|
|
182
232
|
async subscribeToSpotMarketAccounts() {
|
|
183
233
|
await Promise.all(this.spotMarketIndexes.map((marketIndex) => this.subscribeToSpotMarketAccount(marketIndex)));
|
|
184
234
|
return true;
|
|
185
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Creates and subscribes a `WebSocketAccountSubscriber` for one spot market, seeding it from
|
|
238
|
+
* `initialSpotMarketAccountData` if available, and waits (via `ensureAccountFetched`) for data
|
|
239
|
+
* to land before returning.
|
|
240
|
+
* @param marketIndex Spot market index to subscribe.
|
|
241
|
+
*/
|
|
186
242
|
async subscribeToSpotMarketAccount(marketIndex) {
|
|
187
243
|
var _a;
|
|
188
244
|
const marketPublicKey = await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, marketIndex);
|
|
@@ -199,12 +255,21 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
199
255
|
this.spotMarketAccountSubscribers.set(marketIndex, accountSubscriber);
|
|
200
256
|
return true;
|
|
201
257
|
}
|
|
258
|
+
/** Subscribes an account subscriber for every tracked oracle, in parallel, skipping the `PublicKey.default` (quote-asset "no oracle") sentinel. */
|
|
202
259
|
async subscribeToOracles() {
|
|
203
260
|
await Promise.all(this.oracleInfos
|
|
204
261
|
.filter((oracleInfo) => !oracleInfo.publicKey.equals(web3_js_1.PublicKey.default))
|
|
205
262
|
.map((oracleInfo) => this.subscribeToOracle(oracleInfo)));
|
|
206
263
|
return true;
|
|
207
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Creates and subscribes the per-account subscriber (custom class if `customOracleAccountSubscriber`
|
|
267
|
+
* is set, else `WebSocketAccountSubscriber`) for one oracle, decoding buffers with the
|
|
268
|
+
* source-appropriate `OracleClient`. Seeds from `initialOraclePriceData` if available and
|
|
269
|
+
* waits (via `ensureAccountFetched`) for data to land before returning.
|
|
270
|
+
* @param oracleInfo Oracle pubkey and source to subscribe.
|
|
271
|
+
* @returns `false` if no `OracleClient` is registered for `oracleInfo.source`; otherwise `true`.
|
|
272
|
+
*/
|
|
208
273
|
async subscribeToOracle(oracleInfo) {
|
|
209
274
|
var _a;
|
|
210
275
|
const oracleId = (0, oracleId_1.getOracleId)(oracleInfo.publicKey, oracleInfo.source);
|
|
@@ -228,15 +293,19 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
228
293
|
this.oracleSubscribers.set(oracleId, accountSubscriber);
|
|
229
294
|
return true;
|
|
230
295
|
}
|
|
296
|
+
/** Unsubscribes every per-account subscriber tracking a perp market, in parallel. */
|
|
231
297
|
async unsubscribeFromMarketAccounts() {
|
|
232
298
|
await Promise.all(Array.from(this.perpMarketAccountSubscribers.values()).map((accountSubscriber) => accountSubscriber.unsubscribe()));
|
|
233
299
|
}
|
|
300
|
+
/** Unsubscribes every per-account subscriber tracking a spot market, in parallel. */
|
|
234
301
|
async unsubscribeFromSpotMarketAccounts() {
|
|
235
302
|
await Promise.all(Array.from(this.spotMarketAccountSubscribers.values()).map((accountSubscriber) => accountSubscriber.unsubscribe()));
|
|
236
303
|
}
|
|
304
|
+
/** Unsubscribes every per-account subscriber tracking an oracle, in parallel. */
|
|
237
305
|
async unsubscribeFromOracles() {
|
|
238
306
|
await Promise.all(Array.from(this.oracleSubscribers.values()).map((accountSubscriber) => accountSubscriber.unsubscribe()));
|
|
239
307
|
}
|
|
308
|
+
/** 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). */
|
|
240
309
|
async fetch() {
|
|
241
310
|
if (!this.isSubscribed) {
|
|
242
311
|
return;
|
|
@@ -249,6 +318,7 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
249
318
|
.concat(Array.from(this.spotMarketAccountSubscribers.values()).map((subscriber) => subscriber.fetch()));
|
|
250
319
|
await Promise.all(promises);
|
|
251
320
|
}
|
|
321
|
+
/** Tears down the `State` subscriber and every per-account market/oracle subscriber. A no-op if not subscribed. */
|
|
252
322
|
async unsubscribe() {
|
|
253
323
|
var _a;
|
|
254
324
|
if (!this.isSubscribed) {
|
|
@@ -260,22 +330,38 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
260
330
|
await this.unsubscribeFromOracles();
|
|
261
331
|
this.isSubscribed = false;
|
|
262
332
|
}
|
|
333
|
+
/**
|
|
334
|
+
* Adds a spot market (and its oracle, via `setSpotOracleMap`) to be tracked, subscribing a new
|
|
335
|
+
* `WebSocketAccountSubscriber` for it. Idempotent: returns `true` immediately if already tracked.
|
|
336
|
+
* @param marketIndex Spot market index to start tracking.
|
|
337
|
+
*/
|
|
263
338
|
async addSpotMarket(marketIndex) {
|
|
264
339
|
if (this.spotMarketAccountSubscribers.has(marketIndex)) {
|
|
265
340
|
return true;
|
|
266
341
|
}
|
|
267
|
-
const subscriptionSuccess = this.subscribeToSpotMarketAccount(marketIndex);
|
|
342
|
+
const subscriptionSuccess = await this.subscribeToSpotMarketAccount(marketIndex);
|
|
268
343
|
await this.setSpotOracleMap();
|
|
269
344
|
return subscriptionSuccess;
|
|
270
345
|
}
|
|
346
|
+
/**
|
|
347
|
+
* Adds a perp market (and its oracle, via `setPerpOracleMap`) to be tracked, subscribing a new
|
|
348
|
+
* `WebSocketAccountSubscriber` for it. Idempotent: returns `true` immediately if already tracked.
|
|
349
|
+
* @param marketIndex Perp market index to start tracking.
|
|
350
|
+
*/
|
|
271
351
|
async addPerpMarket(marketIndex) {
|
|
272
352
|
if (this.perpMarketAccountSubscribers.has(marketIndex)) {
|
|
273
353
|
return true;
|
|
274
354
|
}
|
|
275
|
-
const subscriptionSuccess = this.subscribeToPerpMarketAccount(marketIndex);
|
|
355
|
+
const subscriptionSuccess = await this.subscribeToPerpMarketAccount(marketIndex);
|
|
276
356
|
await this.setPerpOracleMap();
|
|
277
357
|
return subscriptionSuccess;
|
|
278
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* Adds an oracle to be tracked, subscribing a new per-account subscriber for it. A no-op that
|
|
361
|
+
* resolves `true` immediately for the `PublicKey.default` sentinel (quote-asset "no oracle")
|
|
362
|
+
* or an oracle already tracked.
|
|
363
|
+
* @param oracleInfo Oracle pubkey and source to start tracking.
|
|
364
|
+
*/
|
|
279
365
|
async addOracle(oracleInfo) {
|
|
280
366
|
const oracleId = (0, oracleId_1.getOracleId)(oracleInfo.publicKey, oracleInfo.source);
|
|
281
367
|
if (this.oracleSubscribers.has(oracleId)) {
|
|
@@ -286,6 +372,7 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
286
372
|
}
|
|
287
373
|
return this.subscribeToOracle(oracleInfo);
|
|
288
374
|
}
|
|
375
|
+
/** Rebuilds `perpOracleMap`/`perpOracleStringMap` from currently cached perp markets, calling `addOracle` for any oracle not yet tracked. */
|
|
289
376
|
async setPerpOracleMap() {
|
|
290
377
|
const perpMarkets = this.getMarketAccountsAndSlots();
|
|
291
378
|
const addOraclePromises = [];
|
|
@@ -308,6 +395,7 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
308
395
|
}
|
|
309
396
|
await Promise.all(addOraclePromises);
|
|
310
397
|
}
|
|
398
|
+
/** Rebuilds `spotOracleMap`/`spotOracleStringMap` from currently cached spot markets, calling `addOracle` for any oracle not yet tracked. */
|
|
311
399
|
async setSpotOracleMap() {
|
|
312
400
|
const spotMarkets = this.getSpotMarketAccountsAndSlots();
|
|
313
401
|
const addOraclePromises = [];
|
|
@@ -330,6 +418,12 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
330
418
|
}
|
|
331
419
|
await Promise.all(addOraclePromises);
|
|
332
420
|
}
|
|
421
|
+
/**
|
|
422
|
+
* Applies `delistedMarketSetting` to any perp market currently `status: delisted` (and its
|
|
423
|
+
* oracle, if not shared with a live spot market): unsubscribes the per-account subscriber, and
|
|
424
|
+
* additionally drops it from `perpMarketAccountSubscribers`/`oracleSubscribers` if the setting
|
|
425
|
+
* is `Discard`. A no-op if the setting is `Subscribe`.
|
|
426
|
+
*/
|
|
333
427
|
async handleDelistedMarkets() {
|
|
334
428
|
var _a, _b;
|
|
335
429
|
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Subscribe) {
|
|
@@ -351,11 +445,13 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
351
445
|
}
|
|
352
446
|
}
|
|
353
447
|
}
|
|
448
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
354
449
|
assertIsSubscribed() {
|
|
355
450
|
if (!this.isSubscribed) {
|
|
356
451
|
throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
|
|
357
452
|
}
|
|
358
453
|
}
|
|
454
|
+
/** 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). */
|
|
359
455
|
getStateAccountAndSlot() {
|
|
360
456
|
var _a;
|
|
361
457
|
this.assertIsSubscribed();
|
|
@@ -365,26 +461,37 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
365
461
|
}
|
|
366
462
|
return dataAndSlot;
|
|
367
463
|
}
|
|
464
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` isn't tracked (or hasn't loaded yet). */
|
|
368
465
|
getMarketAccountAndSlot(marketIndex) {
|
|
369
466
|
var _a;
|
|
370
467
|
this.assertIsSubscribed();
|
|
371
468
|
return (_a = this.perpMarketAccountSubscribers.get(marketIndex)) === null || _a === void 0 ? void 0 : _a.dataAndSlot;
|
|
372
469
|
}
|
|
470
|
+
/** Returns every currently cached (loaded) perp market. Does not throw `NotSubscribedError`. */
|
|
373
471
|
getMarketAccountsAndSlots() {
|
|
374
472
|
return Array.from(this.perpMarketAccountSubscribers.values())
|
|
375
473
|
.map((subscriber) => subscriber.dataAndSlot)
|
|
376
474
|
.filter((dataAndSlot) => dataAndSlot !== undefined);
|
|
377
475
|
}
|
|
476
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` isn't tracked (or hasn't loaded yet). */
|
|
378
477
|
getSpotMarketAccountAndSlot(marketIndex) {
|
|
379
478
|
var _a;
|
|
380
479
|
this.assertIsSubscribed();
|
|
381
480
|
return (_a = this.spotMarketAccountSubscribers.get(marketIndex)) === null || _a === void 0 ? void 0 : _a.dataAndSlot;
|
|
382
481
|
}
|
|
482
|
+
/** Returns every currently cached (loaded) spot market. Does not throw `NotSubscribedError`. */
|
|
383
483
|
getSpotMarketAccountsAndSlots() {
|
|
384
484
|
return Array.from(this.spotMarketAccountSubscribers.values())
|
|
385
485
|
.map((subscriber) => subscriber.dataAndSlot)
|
|
386
486
|
.filter((dataAndSlot) => dataAndSlot !== undefined);
|
|
387
487
|
}
|
|
488
|
+
/**
|
|
489
|
+
* Looks up cached oracle price data by oracle id (see `getOracleId`). Special-cases the
|
|
490
|
+
* quote-asset default oracle id, returning the constant `QUOTE_ORACLE_PRICE_DATA` at slot 0
|
|
491
|
+
* rather than a subscriber lookup, since that oracle is never actually subscribed to.
|
|
492
|
+
* @param oracleId Oracle id string from `getOracleId(publicKey, source)`.
|
|
493
|
+
* @returns Cached price data/slot, or undefined if not tracked. Throws `NotSubscribedError` if not subscribed.
|
|
494
|
+
*/
|
|
388
495
|
getOraclePriceDataAndSlot(oracleId) {
|
|
389
496
|
var _a;
|
|
390
497
|
this.assertIsSubscribed();
|
|
@@ -396,6 +503,13 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
396
503
|
}
|
|
397
504
|
return (_a = this.oracleSubscribers.get(oracleId)) === null || _a === void 0 ? void 0 : _a.dataAndSlot;
|
|
398
505
|
}
|
|
506
|
+
/**
|
|
507
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a perp market's
|
|
508
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
509
|
+
* `perpOracleMap`, triggers a background `setPerpOracleMap()` refresh and still returns the
|
|
510
|
+
* (possibly stale) mapping for this call.
|
|
511
|
+
* @param marketIndex Perp market index whose oracle price to look up.
|
|
512
|
+
*/
|
|
399
513
|
getOraclePriceDataAndSlotForPerpMarket(marketIndex) {
|
|
400
514
|
const perpMarketAccount = this.getMarketAccountAndSlot(marketIndex);
|
|
401
515
|
const oracle = this.perpOracleMap.get(marketIndex);
|
|
@@ -409,6 +523,13 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
409
523
|
}
|
|
410
524
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
411
525
|
}
|
|
526
|
+
/**
|
|
527
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a spot market's
|
|
528
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
529
|
+
* `spotOracleMap`, triggers a background `setSpotOracleMap()` refresh and still returns the
|
|
530
|
+
* (possibly stale) mapping for this call.
|
|
531
|
+
* @param marketIndex Spot market index whose oracle price to look up.
|
|
532
|
+
*/
|
|
412
533
|
getOraclePriceDataAndSlotForSpotMarket(marketIndex) {
|
|
413
534
|
const spotMarketAccount = this.getSpotMarketAccountAndSlot(marketIndex);
|
|
414
535
|
const oracle = this.spotOracleMap.get(marketIndex);
|