@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
|
@@ -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,36 +49,147 @@ 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
|
}
|
|
74
195
|
//# sourceMappingURL=webSocketVelocityClientAccountSubscriber.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webSocketVelocityClientAccountSubscriber.d.ts","sourceRoot":"","sources":["../../../src/accounts/webSocketVelocityClientAccountSubscriber.ts"],"names":[],"mappings":";;;AAAA,OAAO,EACN,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,2BAA2B,EAC3B,+BAA+B,EAE/B,SAAS,EACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAe,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,EAA2B,eAAe,EAAE,MAAM,WAAW,CAAC;AAIrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AA4B9E,qBAAa,wCACZ,YAAW,+BAA+B;IAE1C,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,iBAAiB,oBAA2B;IAE5C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8BAA8B,EAAE,OAAO,CAAC;IAExC,YAAY,EAAE,kBAAkB,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACzD,4BAA4B,oDAGxB;IACJ,aAAa,yBAAgC;IAC7C,mBAAmB,sBAA6B;IAChD,4BAA4B,oDAGxB;IACJ,aAAa,yBAAgC;IAC7C,mBAAmB,sBAA6B;IAChD,iBAAiB,kDAAyD;IAC1E,qBAAqB,EAAE,qBAAqB,CAAC;IAE7C,4BAA4B,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9D,4BAA4B,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9D,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtD,iCAAiC,CAAC,EAAE,KACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU,KACnB,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC5B,6BAA6B,CAAC,EAAE,KAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU,KACnB,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAE5B,SAAS,CAAC,aAAa,UAAS;IAChC,SAAS,CAAC,2BAA2B,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAY;IACzE,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,CAA0B;
|
|
1
|
+
{"version":3,"file":"webSocketVelocityClientAccountSubscriber.d.ts","sourceRoot":"","sources":["../../../src/accounts/webSocketVelocityClientAccountSubscriber.ts"],"names":[],"mappings":";;;AAAA,OAAO,EACN,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,2BAA2B,EAC3B,+BAA+B,EAE/B,SAAS,EACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC9E,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAe,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,EAA2B,eAAe,EAAE,MAAM,WAAW,CAAC;AAIrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AA4B9E;;;;;;;;;GASG;AACH,qBAAa,wCACZ,YAAW,+BAA+B;IAE1C,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,iBAAiB,oBAA2B;IAE5C,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8BAA8B,EAAE,OAAO,CAAC;IAExC,YAAY,EAAE,kBAAkB,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACzD,4BAA4B,oDAGxB;IACJ,aAAa,yBAAgC;IAC7C,mBAAmB,sBAA6B;IAChD,4BAA4B,oDAGxB;IACJ,aAAa,yBAAgC;IAC7C,mBAAmB,sBAA6B;IAChD,iBAAiB,kDAAyD;IAC1E,qBAAqB,EAAE,qBAAqB,CAAC;IAE7C,4BAA4B,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9D,4BAA4B,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9D,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtD,iCAAiC,CAAC,EAAE,KACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU,KACnB,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC5B,6BAA6B,CAAC,EAAE,KAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU,KACnB,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAE5B,SAAS,CAAC,aAAa,UAAS;IAChC,SAAS,CAAC,2BAA2B,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAY;IACzE,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,CAA0B;IAEzE;;;;;;;;;;;OAWG;gBAEF,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,iBAAiB,EAAE,MAAM,EAAE,EAC3B,WAAW,EAAE,UAAU,EAAE,EACzB,8BAA8B,EAAE,OAAO,EACvC,qBAAqB,EAAE,qBAAqB,EAC5C,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU,EACvB,iCAAiC,CAAC,EAAE,KACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU,KACnB,4BAA4B,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,GAAG,CAAC,EACxE,6BAA6B,CAAC,EAAE,KAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EACxB,gBAAgB,EAAE,SAAS,EAC3B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,EACtC,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,UAAU,KACnB,4BAA4B,CAAC,GAAG,CAAC,GAAG,0BAA0B,CAAC,GAAG,CAAC;IAgBzE;;;;;;;;;OASG;IACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAiF1C,MAAM,aAAc,SAAS,CAAC,EAAE,QAAQ,MAAM,KAAG,CAAC,EAAE,EAAE,CAKpD;IAEF;;;;;;;OAOG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAoGrC,gIAAgI;IAChI,iBAAiB;IAMjB,kGAAkG;IAC5F,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC;IASvD;;;;;;OAMG;IACG,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BzE,kGAAkG;IAC5F,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC;IASvD;;;;;OAKG;IACG,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BzE,mJAAmJ;IAC7I,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAU5C;;;;;;;OAOG;IACG,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAyCjE,qFAAqF;IAC/E,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAQpD,qFAAqF;IAC/E,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxD,iFAAiF;IAC3E,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7C,qOAAqO;IACxN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBnC,mHAAmH;IACtG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAczC;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1D;;;;OAIG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1D;;;;;OAKG;IACG,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAazD,6IAA6I;IACvI,gBAAgB;IAyBtB,6IAA6I;IACvI,gBAAgB;IAyBtB;;;;;OAKG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B5C,wEAAwE;IACxE,kBAAkB,IAAI,IAAI;IAQ1B,6LAA6L;IACtL,sBAAsB,IAAI,WAAW,CAAC,YAAY,CAAC;IAS1D,8HAA8H;IACvH,uBAAuB,CAC7B,WAAW,EAAE,MAAM,GACjB,WAAW,CAAC,iBAAiB,CAAC,GAAG,SAAS;IAK7C,gGAAgG;IACzF,yBAAyB,IAAI,WAAW,CAAC,iBAAiB,CAAC,EAAE;IASpE,8HAA8H;IACvH,2BAA2B,CACjC,WAAW,EAAE,MAAM,GACjB,WAAW,CAAC,iBAAiB,CAAC,GAAG,SAAS;IAK7C,gGAAgG;IACzF,6BAA6B,IAAI,WAAW,CAAC,iBAAiB,CAAC,EAAE;IASxE;;;;;;OAMG;IACI,yBAAyB,CAC/B,QAAQ,EAAE,MAAM,GACd,WAAW,CAAC,eAAe,CAAC,GAAG,SAAS;IAW3C;;;;;;OAMG;IACI,sCAAsC,CAC5C,WAAW,EAAE,MAAM,GACjB,WAAW,CAAC,eAAe,CAAC,GAAG,SAAS;IAgB3C;;;;;;OAMG;IACI,sCAAsC,CAC5C,WAAW,EAAE,MAAM,GACjB,WAAW,CAAC,eAAe,CAAC,GAAG,SAAS;CAe3C"}
|
|
@@ -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);
|
|
@@ -10,6 +10,15 @@ import { OracleClientCache } from '../oracles/oracleClientCache';
|
|
|
10
10
|
import { VelocityProgram } from '../config';
|
|
11
11
|
import { WebSocketProgramAccountsSubscriberV2 } from './webSocketProgramAccountsSubscriberV2';
|
|
12
12
|
import { WebSocketAccountSubscriberV2 } from './webSocketAccountSubscriberV2';
|
|
13
|
+
/**
|
|
14
|
+
* `VelocityClientAccountSubscriber` variant that, unlike `WebSocketVelocityClientAccountSubscriber`
|
|
15
|
+
* (one `WebSocketAccountSubscriber` per market), multiplexes all perp markets onto a single
|
|
16
|
+
* `WebSocketProgramAccountsSubscriberV2` program-account stream and all spot markets onto a
|
|
17
|
+
* second — two WebSocket subscriptions total instead of one per market. `State` and each oracle
|
|
18
|
+
* still get their own `WebSocketAccountSubscriberV2`. Lower connection overhead at scale;
|
|
19
|
+
* `addPerpMarket`/`addSpotMarket` are no-ops here since new markets simply arrive automatically
|
|
20
|
+
* over the existing program-account stream rather than needing an explicit new subscription.
|
|
21
|
+
*/
|
|
13
22
|
export declare class WebSocketVelocityClientAccountSubscriberV2 implements VelocityClientAccountSubscriber {
|
|
14
23
|
isSubscribed: boolean;
|
|
15
24
|
program: VelocityProgram;
|
|
@@ -45,9 +54,30 @@ export declare class WebSocketVelocityClientAccountSubscriberV2 implements Veloc
|
|
|
45
54
|
protected subscriptionPromise: Promise<boolean>;
|
|
46
55
|
private rpc;
|
|
47
56
|
private rpcSubscriptions;
|
|
57
|
+
/**
|
|
58
|
+
* @param program Anchor program used to derive PDAs, decode accounts, and resolve oracle clients.
|
|
59
|
+
* @param perpMarketIndexes Perp market indexes to track, if `shouldFindAllMarketsAndOracles` is false. Only used to derive the initial pubkeys handed to the perp program-account subscriber; new markets arrive automatically thereafter.
|
|
60
|
+
* @param spotMarketIndexes Spot market indexes to track, if `shouldFindAllMarketsAndOracles` is false. Same caveat as `perpMarketIndexes`.
|
|
61
|
+
* @param oracleInfos Oracles to track up front, if `shouldFindAllMarketsAndOracles` is false.
|
|
62
|
+
* @param shouldFindAllMarketsAndOracles If true, `subscribe()` first discovers every market/oracle from on-chain state, ignoring the index/info args above.
|
|
63
|
+
* @param delistedMarketSetting Behavior applied to delisted perp markets/oracles after subscribing; see `DelistedMarketSetting`.
|
|
64
|
+
* @param resubOpts Resubscription watchdog options passed to the underlying program-account and per-oracle subscribers.
|
|
65
|
+
* @param commitment Commitment for every subscription; defaults to the provider's configured commitment.
|
|
66
|
+
* @param skipInitialData Currently unused by `subscribe()`/`setInitialData()` (the field is set but never read); defaults to `false`.
|
|
67
|
+
*/
|
|
48
68
|
constructor(program: VelocityProgram, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting, resubOpts?: ResubOpts, commitment?: Commitment, skipInitialData?: boolean);
|
|
69
|
+
/**
|
|
70
|
+
* Derives all tracked perp/spot market pubkeys (or discovers them via `findAllMarketAndOracles`
|
|
71
|
+
* if `shouldFindAllMarketsAndOracles` is set), then in parallel: opens the perp and spot
|
|
72
|
+
* `WebSocketProgramAccountsSubscriberV2` streams, subscribes the `State` account, and seeds +
|
|
73
|
+
* subscribes every oracle. Applies `delistedMarketSetting` afterward. Idempotent: a no-op if
|
|
74
|
+
* already subscribed, and concurrent calls while a subscribe is in flight share the same
|
|
75
|
+
* result via `subscriptionPromise` rather than issuing duplicate subscriptions.
|
|
76
|
+
* @returns `true` on success; `false` if any step throws (subscription state is left partially applied in that case, and `isSubscribed` remains `false`).
|
|
77
|
+
*/
|
|
49
78
|
subscribe(): Promise<boolean>;
|
|
50
79
|
chunks: <T>(array: readonly T[], size: number) => T[][];
|
|
80
|
+
/** Re-runs `setInitialData()`, re-fetching and re-emitting oracle price data. Does not re-fetch perp/spot market or `State` accounts — those are kept current via their live WebSocket streams. */
|
|
51
81
|
fetch(): Promise<void>;
|
|
52
82
|
/**
|
|
53
83
|
* This is a no-op method that always returns true.
|
|
@@ -67,26 +97,92 @@ export declare class WebSocketVelocityClientAccountSubscriberV2 implements Veloc
|
|
|
67
97
|
* @returns Promise that resolves to true
|
|
68
98
|
*/
|
|
69
99
|
addSpotMarket(_marketIndex: number): Promise<boolean>;
|
|
100
|
+
/**
|
|
101
|
+
* Batch-fetches every tracked oracle account via chunked `getMultipleAccountsInfo` calls (100
|
|
102
|
+
* pubkeys per chunk), decodes each with the source-appropriate `OracleClient`, stashes the
|
|
103
|
+
* results in `initialOraclePriceData`, and immediately emits `oraclePriceUpdate`/`update` for
|
|
104
|
+
* each. Unlike the v1 subscriber's `setInitialData`, does not seed perp/spot market data —
|
|
105
|
+
* those markets are seeded directly by the program-account subscribers' own initial-account
|
|
106
|
+
* list instead.
|
|
107
|
+
*/
|
|
70
108
|
setInitialData(): Promise<void>;
|
|
109
|
+
/** Clears the seed data stashed by `setInitialData()`/`findAllMarketAndOracles` once consumed, freeing the memory. */
|
|
71
110
|
removeInitialData(): void;
|
|
111
|
+
/** Subscribes a `WebSocketAccountSubscriberV2` for every tracked oracle not already subscribed, in parallel, skipping duplicates already present in `oracleSubscribers`. */
|
|
72
112
|
subscribeToOracles(): Promise<boolean>;
|
|
113
|
+
/**
|
|
114
|
+
* Creates and subscribes a `WebSocketAccountSubscriberV2` for one oracle, decoding buffers
|
|
115
|
+
* with the source-appropriate `OracleClient`. Seeds from `initialOraclePriceData` if available
|
|
116
|
+
* before subscribing.
|
|
117
|
+
* @param oracleInfo Oracle pubkey and source to subscribe.
|
|
118
|
+
* @returns `false` if no `OracleClient` is registered for `oracleInfo.source` or the subscribe call throws; otherwise `true`.
|
|
119
|
+
*/
|
|
73
120
|
subscribeToOracle(oracleInfo: OracleInfo): Promise<boolean>;
|
|
121
|
+
/** Unsubscribes the single multiplexed perp-market program-account stream. */
|
|
74
122
|
unsubscribeFromMarketAccounts(): Promise<void>;
|
|
123
|
+
/** Unsubscribes the single multiplexed spot-market program-account stream. */
|
|
75
124
|
unsubscribeFromSpotMarketAccounts(): Promise<void>;
|
|
125
|
+
/** Unsubscribes every per-oracle `WebSocketAccountSubscriberV2`, in parallel. */
|
|
76
126
|
unsubscribeFromOracles(): Promise<void>;
|
|
127
|
+
/** Tears down the `State` subscriber, both market program-account streams, and every oracle subscriber. A no-op if not subscribed. */
|
|
77
128
|
unsubscribe(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Adds an oracle to be tracked, subscribing a new `WebSocketAccountSubscriberV2` for it. A
|
|
131
|
+
* no-op that resolves `true` immediately for the `PublicKey.default` sentinel (quote-asset "no
|
|
132
|
+
* oracle") or an oracle already tracked.
|
|
133
|
+
* @param oracleInfo Oracle pubkey and source to start tracking.
|
|
134
|
+
*/
|
|
78
135
|
addOracle(oracleInfo: OracleInfo): Promise<boolean>;
|
|
136
|
+
/** Rebuilds `perpOracleMap`/`perpOracleStringMap` from currently cached perp markets, calling `addOracle` for any oracle not yet tracked. */
|
|
79
137
|
setPerpOracleMap(): Promise<void>;
|
|
138
|
+
/** Rebuilds `spotOracleMap`/`spotOracleStringMap` from currently cached spot markets, calling `addOracle` for any oracle not yet tracked. */
|
|
80
139
|
setSpotOracleMap(): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* Applies `delistedMarketSetting` to any oracle backing a currently `status: delisted` perp
|
|
142
|
+
* market (and not still used by a live spot market, per `findDelistedPerpMarketsAndOracles`):
|
|
143
|
+
* unsubscribes the oracle's subscriber, and additionally drops it from `oracleSubscribers` if
|
|
144
|
+
* the setting is `Discard`. A no-op if the setting is `Subscribe`. Note this only manages
|
|
145
|
+
* oracle subscriptions — delisted market accounts themselves cannot be selectively unsubscribed
|
|
146
|
+
* from the shared perp/spot program-account stream; instead the `subscribe()` update callback
|
|
147
|
+
* drops any incoming update for a `status: delisted` market unless `delistedMarketSetting` is
|
|
148
|
+
* `Subscribe`, freezing that market's cached data at its last pre-delisting state.
|
|
149
|
+
*/
|
|
81
150
|
handleDelistedMarketOracles(): Promise<void>;
|
|
151
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
82
152
|
assertIsSubscribed(): void;
|
|
153
|
+
/** Throws `NotSubscribedError` if not subscribed, or a generic `Error` (via `assertDataAndSlot`) if subscribed but the `State` account hasn't loaded yet. */
|
|
83
154
|
getStateAccountAndSlot(): DataAndSlot<StateAccount>;
|
|
155
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` hasn't been observed yet on the perp program-account stream. */
|
|
84
156
|
getMarketAccountAndSlot(marketIndex: number): DataAndSlot<PerpMarketAccount> | undefined;
|
|
157
|
+
/** Returns every currently cached (loaded) perp market. Does not throw `NotSubscribedError`. */
|
|
85
158
|
getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[];
|
|
159
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined if `marketIndex` hasn't been observed yet on the spot program-account stream. */
|
|
86
160
|
getSpotMarketAccountAndSlot(marketIndex: number): DataAndSlot<SpotMarketAccount> | undefined;
|
|
161
|
+
/** Returns every currently cached (loaded) spot market. Does not throw `NotSubscribedError`. */
|
|
87
162
|
getSpotMarketAccountsAndSlots(): DataAndSlot<SpotMarketAccount>[];
|
|
163
|
+
/**
|
|
164
|
+
* Looks up cached oracle price data by oracle id (see `getOracleId`). Special-cases the
|
|
165
|
+
* quote-asset default oracle id, returning the constant `QUOTE_ORACLE_PRICE_DATA` at slot 0
|
|
166
|
+
* rather than a subscriber lookup, since that oracle is never actually subscribed to.
|
|
167
|
+
* @param oracleId Oracle id string from `getOracleId(publicKey, source)`.
|
|
168
|
+
* @returns Cached price data/slot, or undefined if not tracked. Throws `NotSubscribedError` if not subscribed.
|
|
169
|
+
*/
|
|
88
170
|
getOraclePriceDataAndSlot(oracleId: string): DataAndSlot<OraclePriceData> | undefined;
|
|
171
|
+
/**
|
|
172
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a perp market's
|
|
173
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
174
|
+
* `perpOracleMap`, triggers a background `setPerpOracleMap()` refresh and still returns the
|
|
175
|
+
* (possibly stale) mapping for this call.
|
|
176
|
+
* @param marketIndex Perp market index whose oracle price to look up.
|
|
177
|
+
*/
|
|
89
178
|
getOraclePriceDataAndSlotForPerpMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
|
|
179
|
+
/**
|
|
180
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a spot market's
|
|
181
|
+
* oracle. If the cached market's oracle pubkey has drifted from (or isn't yet in)
|
|
182
|
+
* `spotOracleMap`, triggers a background `setSpotOracleMap()` refresh and still returns the
|
|
183
|
+
* (possibly stale) mapping for this call.
|
|
184
|
+
* @param marketIndex Spot market index whose oracle price to look up.
|
|
185
|
+
*/
|
|
90
186
|
getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot<OraclePriceData> | undefined;
|
|
91
187
|
}
|
|
92
188
|
//# sourceMappingURL=webSocketVelocityClientAccountSubscriberV2.d.ts.map
|