@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
|
@@ -10,6 +10,7 @@ import { PublicKey } from '@solana/web3.js';
|
|
|
10
10
|
import { BulkAccountLoader } from './bulkAccountLoader';
|
|
11
11
|
import { OracleClient, OraclePriceData } from '../oracles/types';
|
|
12
12
|
|
|
13
|
+
/** Tracks a single oracle account's decoded `OraclePriceData` via a shared `BulkAccountLoader`, decoding raw buffers with the source-appropriate `OracleClient` (Pyth/Switchboard/quote-asset/etc.). */
|
|
13
14
|
export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
14
15
|
isSubscribed: boolean;
|
|
15
16
|
eventEmitter: StrictEventEmitter<EventEmitter, OracleEvents>;
|
|
@@ -22,6 +23,11 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
22
23
|
|
|
23
24
|
oraclePriceData?: DataAndSlot<OraclePriceData>;
|
|
24
25
|
|
|
26
|
+
/**
|
|
27
|
+
* @param publicKey Address of the oracle account to track.
|
|
28
|
+
* @param oracleClient Source-specific decoder (Pyth/Switchboard/quote-asset/etc.) used to parse the raw buffer into `OraclePriceData`.
|
|
29
|
+
* @param accountLoader Shared `BulkAccountLoader` this subscriber registers its callback with.
|
|
30
|
+
*/
|
|
25
31
|
public constructor(
|
|
26
32
|
publicKey: PublicKey,
|
|
27
33
|
oracleClient: OracleClient,
|
|
@@ -34,6 +40,13 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
34
40
|
this.eventEmitter = new EventEmitter();
|
|
35
41
|
}
|
|
36
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Registers this account with the shared `BulkAccountLoader`, then polls up to 5 times
|
|
45
|
+
* (once per `load()` cycle) until data has loaded, since the oracle account may not have been
|
|
46
|
+
* fetched by the shared loader on the very first poll. `isSubscribed` is only set `true` if
|
|
47
|
+
* data loaded within those retries.
|
|
48
|
+
* @returns `true` if oracle data loaded within the retry budget, `false` otherwise.
|
|
49
|
+
*/
|
|
37
50
|
async subscribe(): Promise<boolean> {
|
|
38
51
|
if (this.isSubscribed) {
|
|
39
52
|
return true;
|
|
@@ -57,6 +70,7 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
57
70
|
return subscriptionSucceeded;
|
|
58
71
|
}
|
|
59
72
|
|
|
73
|
+
/** Registers this account and an error callback with the `BulkAccountLoader`. A no-op if already registered. */
|
|
60
74
|
async addToAccountLoader(): Promise<void> {
|
|
61
75
|
if (this.callbackId) {
|
|
62
76
|
return;
|
|
@@ -64,9 +78,9 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
64
78
|
|
|
65
79
|
this.callbackId = await this.accountLoader.addAccount(
|
|
66
80
|
this.publicKey,
|
|
67
|
-
|
|
81
|
+
(buffer, slot) => {
|
|
68
82
|
const oraclePriceData =
|
|
69
|
-
|
|
83
|
+
this.oracleClient.getOraclePriceDataFromBuffer(buffer);
|
|
70
84
|
this.oraclePriceData = { data: oraclePriceData, slot };
|
|
71
85
|
// @ts-ignore
|
|
72
86
|
this.eventEmitter.emit('oracleUpdate', oraclePriceData);
|
|
@@ -79,6 +93,7 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
79
93
|
});
|
|
80
94
|
}
|
|
81
95
|
|
|
96
|
+
/** Forces the shared `BulkAccountLoader` to load, then decodes this account's buffer from it if present. Does not check slot ordering against the previously cached value (the loader itself already filters out stale/unchanged buffers before invoking callbacks). */
|
|
82
97
|
async fetch(): Promise<void> {
|
|
83
98
|
await this.accountLoader.load();
|
|
84
99
|
const bufferAndSlot = this.accountLoader.getBufferAndSlot(this.publicKey);
|
|
@@ -95,6 +110,7 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
95
110
|
};
|
|
96
111
|
}
|
|
97
112
|
|
|
113
|
+
/** Unregisters this account (and its error callback) from the `BulkAccountLoader`. A no-op if not subscribed. */
|
|
98
114
|
async unsubscribe(): Promise<void> {
|
|
99
115
|
if (!this.isSubscribed) {
|
|
100
116
|
return;
|
|
@@ -113,6 +129,7 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
113
129
|
this.isSubscribed = false;
|
|
114
130
|
}
|
|
115
131
|
|
|
132
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
116
133
|
assertIsSubscribed(): void {
|
|
117
134
|
if (!this.isSubscribed) {
|
|
118
135
|
throw new NotSubscribedError(
|
|
@@ -121,11 +138,13 @@ export class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
|
|
|
121
138
|
}
|
|
122
139
|
}
|
|
123
140
|
|
|
141
|
+
/** Throws `NotSubscribedError` if not subscribed. */
|
|
124
142
|
public getOraclePriceData(): DataAndSlot<OraclePriceData> {
|
|
125
143
|
this.assertIsSubscribed();
|
|
126
144
|
return this.oraclePriceData!;
|
|
127
145
|
}
|
|
128
146
|
|
|
147
|
+
/** True once oracle data has been loaded, independent of `isSubscribed`. */
|
|
129
148
|
didSubscriptionSucceed(): boolean {
|
|
130
149
|
return !!this.oraclePriceData;
|
|
131
150
|
}
|
|
@@ -11,6 +11,11 @@ import { BulkAccountLoader } from './bulkAccountLoader';
|
|
|
11
11
|
import { Account } from '@solana/spl-token';
|
|
12
12
|
import { parseTokenAccount } from '../token';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Tracks an SPL token account's parsed balance/owner via a shared `BulkAccountLoader`. Used for
|
|
16
|
+
* things like a spot market's token vault or a user's wallet token account, where a dedicated
|
|
17
|
+
* WebSocket subscription per account is unnecessary.
|
|
18
|
+
*/
|
|
14
19
|
export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
15
20
|
isSubscribed: boolean;
|
|
16
21
|
eventEmitter: StrictEventEmitter<EventEmitter, TokenAccountEvents>;
|
|
@@ -22,6 +27,10 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
|
22
27
|
|
|
23
28
|
tokenAccountAndSlot?: DataAndSlot<Account>;
|
|
24
29
|
|
|
30
|
+
/**
|
|
31
|
+
* @param publicKey Address of the SPL token account to track.
|
|
32
|
+
* @param accountLoader Shared `BulkAccountLoader` this subscriber registers its callback with.
|
|
33
|
+
*/
|
|
25
34
|
public constructor(publicKey: PublicKey, accountLoader: BulkAccountLoader) {
|
|
26
35
|
this.isSubscribed = false;
|
|
27
36
|
this.publicKey = publicKey;
|
|
@@ -29,6 +38,13 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
|
29
38
|
this.eventEmitter = new EventEmitter();
|
|
30
39
|
}
|
|
31
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Registers this account with the shared `BulkAccountLoader`, then polls up to 5 times
|
|
43
|
+
* (once per `load()` cycle) until data has loaded, since the token account may not have been
|
|
44
|
+
* fetched by the shared loader on the very first poll. `isSubscribed` is only set `true` if
|
|
45
|
+
* data loaded within those retries.
|
|
46
|
+
* @returns `true` if account data loaded within the retry budget, `false` otherwise.
|
|
47
|
+
*/
|
|
32
48
|
async subscribe(): Promise<boolean> {
|
|
33
49
|
if (this.isSubscribed) {
|
|
34
50
|
return true;
|
|
@@ -51,6 +67,7 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
|
51
67
|
return subscriptionSucceeded;
|
|
52
68
|
}
|
|
53
69
|
|
|
70
|
+
/** Registers this account and an error callback with the `BulkAccountLoader`. A no-op if already registered. */
|
|
54
71
|
async addToAccountLoader(): Promise<void> {
|
|
55
72
|
if (this.callbackId) {
|
|
56
73
|
return;
|
|
@@ -72,6 +89,7 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
|
72
89
|
});
|
|
73
90
|
}
|
|
74
91
|
|
|
92
|
+
/** Forces the shared `BulkAccountLoader` to load, then reads and parses this account's buffer from it if present. Does not check slot ordering against the previously cached value (the loader itself already filters out stale/unchanged buffers before invoking callbacks). */
|
|
75
93
|
async fetch(): Promise<void> {
|
|
76
94
|
await this.accountLoader.load();
|
|
77
95
|
const bufferAndSlot = this.accountLoader.getBufferAndSlot(this.publicKey);
|
|
@@ -88,6 +106,7 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
|
88
106
|
};
|
|
89
107
|
}
|
|
90
108
|
|
|
109
|
+
/** Unregisters this account (and its error callback) from the `BulkAccountLoader`. A no-op if not subscribed. */
|
|
91
110
|
async unsubscribe(): Promise<void> {
|
|
92
111
|
if (!this.isSubscribed) {
|
|
93
112
|
return;
|
|
@@ -106,6 +125,7 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
|
106
125
|
this.isSubscribed = false;
|
|
107
126
|
}
|
|
108
127
|
|
|
128
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
109
129
|
assertIsSubscribed(): void {
|
|
110
130
|
if (!this.isSubscribed) {
|
|
111
131
|
throw new NotSubscribedError(
|
|
@@ -114,11 +134,13 @@ export class PollingTokenAccountSubscriber implements TokenAccountSubscriber {
|
|
|
114
134
|
}
|
|
115
135
|
}
|
|
116
136
|
|
|
137
|
+
/** Throws `NotSubscribedError` if not subscribed. */
|
|
117
138
|
public getTokenAccountAndSlot(): DataAndSlot<Account> {
|
|
118
139
|
this.assertIsSubscribed();
|
|
119
140
|
return this.tokenAccountAndSlot!;
|
|
120
141
|
}
|
|
121
142
|
|
|
143
|
+
/** True once account data has been loaded, independent of `isSubscribed`. */
|
|
122
144
|
didSubscriptionSucceed(): boolean {
|
|
123
145
|
return !!this.tokenAccountAndSlot;
|
|
124
146
|
}
|
|
@@ -11,6 +11,13 @@ import { PublicKey } from '@solana/web3.js';
|
|
|
11
11
|
import { UserAccount } from '../types';
|
|
12
12
|
import { BulkAccountLoader } from './bulkAccountLoader';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* `UserAccountSubscriber` backed by a shared `BulkAccountLoader` instead of a dedicated
|
|
16
|
+
* WebSocket subscription. Registers a callback for the user's `UserAccount` and relies on the
|
|
17
|
+
* loader's periodic batched `getMultipleAccounts` polling to detect changes. Prefer this over
|
|
18
|
+
* `WebSocketUserAccountSubscriber` when tracking many users concurrently (e.g. a keeper watching
|
|
19
|
+
* the whole DLOB) to keep the RPC/WS connection count bounded.
|
|
20
|
+
*/
|
|
14
21
|
export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
15
22
|
isSubscribed: boolean;
|
|
16
23
|
connection: Connection;
|
|
@@ -25,6 +32,12 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
|
25
32
|
|
|
26
33
|
user?: DataAndSlot<UserAccount>;
|
|
27
34
|
|
|
35
|
+
/**
|
|
36
|
+
* @param connection Connection (or bankrun-compatible shim) used for the one-off `fetch()` fallback.
|
|
37
|
+
* @param userAccountPublicKey Address of the `UserAccount` to track.
|
|
38
|
+
* @param accountLoader Shared `BulkAccountLoader` this subscriber registers its callback with.
|
|
39
|
+
* @param decode Decode function for the raw account buffer (typically the program's Anchor coder).
|
|
40
|
+
*/
|
|
28
41
|
public constructor(
|
|
29
42
|
connection: Connection,
|
|
30
43
|
userAccountPublicKey: PublicKey,
|
|
@@ -39,6 +52,12 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
|
39
52
|
this.decode = decode;
|
|
40
53
|
}
|
|
41
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Registers this account with the shared `BulkAccountLoader` and, if no data has loaded yet
|
|
57
|
+
* (from a prior fetch or the optional `userAccount` seed), performs a one-off `fetch()` so the
|
|
58
|
+
* subscriber has data before returning. Idempotent: a no-op if already subscribed.
|
|
59
|
+
* @param userAccount Optional pre-fetched account data to seed with (at slot 0) instead of an immediate fetch.
|
|
60
|
+
*/
|
|
42
61
|
async subscribe(userAccount?: UserAccount): Promise<boolean> {
|
|
43
62
|
if (this.isSubscribed) {
|
|
44
63
|
return true;
|
|
@@ -61,6 +80,7 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
|
61
80
|
return true;
|
|
62
81
|
}
|
|
63
82
|
|
|
83
|
+
/** Registers this user's account and an error callback with the `BulkAccountLoader`. A no-op if already registered. */
|
|
64
84
|
async addToAccountLoader(): Promise<void> {
|
|
65
85
|
if (this.callbackId) {
|
|
66
86
|
return;
|
|
@@ -89,12 +109,14 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
|
89
109
|
});
|
|
90
110
|
}
|
|
91
111
|
|
|
112
|
+
/** Fetches via `fetch()` only if no data is cached yet; otherwise a no-op. */
|
|
92
113
|
async fetchIfUnloaded(): Promise<void> {
|
|
93
114
|
if (!this.doesAccountExist()) {
|
|
94
115
|
await this.fetch();
|
|
95
116
|
}
|
|
96
117
|
}
|
|
97
118
|
|
|
119
|
+
/** Fetches the account once directly via RPC (independent of the account loader's poll cycle), applying it only if the response's slot is newer than what's cached. Logs and swallows errors (e.g. account not yet initialized) rather than throwing. */
|
|
98
120
|
async fetch(): Promise<void> {
|
|
99
121
|
try {
|
|
100
122
|
const dataAndContext = await this.connection.getAccountInfoAndContext(
|
|
@@ -118,10 +140,12 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
|
118
140
|
}
|
|
119
141
|
}
|
|
120
142
|
|
|
143
|
+
/** Type predicate: true once `user` has loaded, narrowing `this.user` to non-undefined for callers that check it first. */
|
|
121
144
|
doesAccountExist(): this is { user: DataAndSlot<UserAccount> } {
|
|
122
145
|
return this.user !== undefined;
|
|
123
146
|
}
|
|
124
147
|
|
|
148
|
+
/** Unregisters this account (and its error callback) from the `BulkAccountLoader`. A no-op if not subscribed. */
|
|
125
149
|
async unsubscribe(): Promise<void> {
|
|
126
150
|
if (!this.isSubscribed) {
|
|
127
151
|
return;
|
|
@@ -143,6 +167,7 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
|
143
167
|
this.isSubscribed = false;
|
|
144
168
|
}
|
|
145
169
|
|
|
170
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
146
171
|
assertIsSubscribed(): void {
|
|
147
172
|
if (!this.isSubscribed) {
|
|
148
173
|
throw new NotSubscribedError(
|
|
@@ -151,11 +176,18 @@ export class PollingUserAccountSubscriber implements UserAccountSubscriber {
|
|
|
151
176
|
}
|
|
152
177
|
}
|
|
153
178
|
|
|
179
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined only if subscribed but no data has loaded yet. */
|
|
154
180
|
public getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined {
|
|
155
181
|
this.assertIsSubscribed();
|
|
156
182
|
return this.user;
|
|
157
183
|
}
|
|
158
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Applies an externally-obtained account update (e.g. relayed by the SDK's `User` wrapper) if
|
|
187
|
+
* `slot` is strictly newer than the currently cached slot (equal-slot updates are ignored).
|
|
188
|
+
* @param userAccount Decoded account data to apply.
|
|
189
|
+
* @param slot Slot the data was observed at.
|
|
190
|
+
*/
|
|
159
191
|
public updateData(userAccount: UserAccount, slot: number): void {
|
|
160
192
|
if (!this.user || this.user.slot < slot) {
|
|
161
193
|
this.user = { data: userAccount, slot };
|
|
@@ -11,6 +11,10 @@ import { PublicKey } from '@solana/web3.js';
|
|
|
11
11
|
import { UserStatsAccount } from '../types';
|
|
12
12
|
import { BulkAccountLoader } from './bulkAccountLoader';
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* `UserStatsAccountSubscriber` backed by a shared `BulkAccountLoader` instead of a dedicated
|
|
16
|
+
* WebSocket subscription, mirroring `PollingUserAccountSubscriber` for `UserStatsAccount`.
|
|
17
|
+
*/
|
|
14
18
|
export class PollingUserStatsAccountSubscriber
|
|
15
19
|
implements UserStatsAccountSubscriber
|
|
16
20
|
{
|
|
@@ -25,6 +29,11 @@ export class PollingUserStatsAccountSubscriber
|
|
|
25
29
|
|
|
26
30
|
userStats?: DataAndSlot<UserStatsAccount>;
|
|
27
31
|
|
|
32
|
+
/**
|
|
33
|
+
* @param program Anchor program used for the one-off `fetch()` fallback and account decoding.
|
|
34
|
+
* @param userStatsAccountPublicKey Address of the `UserStatsAccount` to track.
|
|
35
|
+
* @param accountLoader Shared `BulkAccountLoader` this subscriber registers its callback with.
|
|
36
|
+
*/
|
|
28
37
|
public constructor(
|
|
29
38
|
program: VelocityProgram,
|
|
30
39
|
userStatsAccountPublicKey: PublicKey,
|
|
@@ -37,6 +46,12 @@ export class PollingUserStatsAccountSubscriber
|
|
|
37
46
|
this.userStatsAccountPublicKey = userStatsAccountPublicKey;
|
|
38
47
|
}
|
|
39
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Registers this account with the shared `BulkAccountLoader` and, if no data has loaded yet
|
|
51
|
+
* (from a prior fetch or the optional `userStatsAccount` seed), performs a one-off `fetch()`
|
|
52
|
+
* so the subscriber has data before returning. Idempotent: a no-op if already subscribed.
|
|
53
|
+
* @param userStatsAccount Optional pre-fetched account data to seed with (at slot 0) instead of an immediate fetch.
|
|
54
|
+
*/
|
|
40
55
|
async subscribe(userStatsAccount?: UserStatsAccount): Promise<boolean> {
|
|
41
56
|
if (this.isSubscribed) {
|
|
42
57
|
return true;
|
|
@@ -60,6 +75,7 @@ export class PollingUserStatsAccountSubscriber
|
|
|
60
75
|
return true;
|
|
61
76
|
}
|
|
62
77
|
|
|
78
|
+
/** Registers this user stats account and an error callback with the `BulkAccountLoader`. A no-op if already registered. */
|
|
63
79
|
async addToAccountLoader(): Promise<void> {
|
|
64
80
|
if (this.callbackId !== undefined) {
|
|
65
81
|
return;
|
|
@@ -91,12 +107,14 @@ export class PollingUserStatsAccountSubscriber
|
|
|
91
107
|
});
|
|
92
108
|
}
|
|
93
109
|
|
|
110
|
+
/** Fetches via `fetch()` only if no data is cached yet; otherwise a no-op. */
|
|
94
111
|
async fetchIfUnloaded(): Promise<void> {
|
|
95
112
|
if (!this.doesAccountExist()) {
|
|
96
113
|
await this.fetch();
|
|
97
114
|
}
|
|
98
115
|
}
|
|
99
116
|
|
|
117
|
+
/** Fetches the account once directly via `program.account.userStats.fetchAndContext` (independent of the account loader's poll cycle), applying it only if the response's slot is newer than what's cached. Logs and swallows errors rather than throwing. */
|
|
100
118
|
async fetch(): Promise<void> {
|
|
101
119
|
try {
|
|
102
120
|
const dataAndContext = await (
|
|
@@ -120,10 +138,12 @@ export class PollingUserStatsAccountSubscriber
|
|
|
120
138
|
}
|
|
121
139
|
}
|
|
122
140
|
|
|
141
|
+
/** Type predicate: true once `userStats` has loaded, narrowing `this.userStats` to non-undefined. */
|
|
123
142
|
doesAccountExist(): this is { userStats: DataAndSlot<UserStatsAccount> } {
|
|
124
143
|
return this.userStats !== undefined;
|
|
125
144
|
}
|
|
126
145
|
|
|
146
|
+
/** Unregisters this account (and its error callback) from the `BulkAccountLoader`. A no-op if not subscribed. */
|
|
127
147
|
async unsubscribe(): Promise<void> {
|
|
128
148
|
if (!this.isSubscribed) {
|
|
129
149
|
return;
|
|
@@ -141,6 +161,7 @@ export class PollingUserStatsAccountSubscriber
|
|
|
141
161
|
this.isSubscribed = false;
|
|
142
162
|
}
|
|
143
163
|
|
|
164
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
144
165
|
assertIsSubscribed(): void {
|
|
145
166
|
if (!this.isSubscribed) {
|
|
146
167
|
throw new NotSubscribedError(
|
|
@@ -149,6 +170,7 @@ export class PollingUserStatsAccountSubscriber
|
|
|
149
170
|
}
|
|
150
171
|
}
|
|
151
172
|
|
|
173
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined only if subscribed but no data has loaded yet. */
|
|
152
174
|
public getUserStatsAccountAndSlot():
|
|
153
175
|
| DataAndSlot<UserStatsAccount>
|
|
154
176
|
| undefined {
|
|
@@ -35,6 +35,15 @@ const ORACLE_DEFAULT_ID = getOracleId(
|
|
|
35
35
|
OracleSource.QUOTE_ASSET
|
|
36
36
|
);
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* `VelocityClientAccountSubscriber` that batches the `State`, every tracked `PerpMarket`/
|
|
40
|
+
* `SpotMarket`, and every tracked oracle behind a single `BulkAccountLoader` instead of one
|
|
41
|
+
* WebSocket subscription per account. Cheaper on connection count at the cost of update latency
|
|
42
|
+
* bounded by the loader's poll interval. `subscribe()` retries the initial load up to 5 times
|
|
43
|
+
* before giving up (returning `false`) if the `State` account never appears — `didSubscriptionSucceed`
|
|
44
|
+
* checks only for `state`, since market/oracle data can be added incrementally afterward via
|
|
45
|
+
* `addPerpMarket`/`addSpotMarket`/`addOracle`.
|
|
46
|
+
*/
|
|
38
47
|
export class PollingVelocityClientAccountSubscriber
|
|
39
48
|
implements VelocityClientAccountSubscriber
|
|
40
49
|
{
|
|
@@ -71,6 +80,15 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
71
80
|
this.subscriptionPromiseResolver = res;
|
|
72
81
|
});
|
|
73
82
|
|
|
83
|
+
/**
|
|
84
|
+
* @param program Anchor program used to derive PDAs, decode accounts, and resolve oracle clients.
|
|
85
|
+
* @param accountLoader Shared `BulkAccountLoader` all state/market/oracle accounts are registered with.
|
|
86
|
+
* @param perpMarketIndexes Perp market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
87
|
+
* @param spotMarketIndexes Spot market indexes to track, if `shouldFindAllMarketsAndOracles` is false.
|
|
88
|
+
* @param oracleInfos Oracles to track up front, if `shouldFindAllMarketsAndOracles` is false.
|
|
89
|
+
* @param shouldFindAllMarketsAndOracles If true, `subscribe()` first discovers every market/oracle from on-chain state, ignoring the index/info args above.
|
|
90
|
+
* @param delistedMarketSetting Behavior applied to delisted perp markets/oracles after subscribing; see `DelistedMarketSetting`.
|
|
91
|
+
*/
|
|
74
92
|
public constructor(
|
|
75
93
|
program: VelocityProgram,
|
|
76
94
|
accountLoader: BulkAccountLoader,
|
|
@@ -91,6 +109,13 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
91
109
|
this.delistedMarketSetting = delistedMarketSetting;
|
|
92
110
|
}
|
|
93
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Registers state/market/oracle accounts with the `BulkAccountLoader` and retries the initial
|
|
114
|
+
* load up to 5 times until the `State` account has appeared. Idempotent: a no-op if already
|
|
115
|
+
* subscribed, and concurrent calls while a subscribe is in flight share the same result via
|
|
116
|
+
* `subscriptionPromise` rather than issuing duplicate loads.
|
|
117
|
+
* @returns `true` if `State` account data loaded within the retry budget, `false` otherwise.
|
|
118
|
+
*/
|
|
94
119
|
public async subscribe(): Promise<boolean> {
|
|
95
120
|
if (this.isSubscribed) {
|
|
96
121
|
return true;
|
|
@@ -341,6 +366,7 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
341
366
|
);
|
|
342
367
|
}
|
|
343
368
|
|
|
369
|
+
/** Forces the shared `BulkAccountLoader` to load, then re-decodes every tracked state/market/oracle account from the loader's cached buffers into this subscriber's maps. */
|
|
344
370
|
public async fetch(): Promise<void> {
|
|
345
371
|
await this.accountLoader.load();
|
|
346
372
|
for (const [_, accountToPoll] of this.accountsToPoll) {
|
|
@@ -396,12 +422,14 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
396
422
|
}
|
|
397
423
|
}
|
|
398
424
|
|
|
425
|
+
/** True once the `State` account has loaded, independent of `isSubscribed`. Market/oracle data is not required. */
|
|
399
426
|
didSubscriptionSucceed(): boolean {
|
|
400
427
|
if (this.state) return true;
|
|
401
428
|
|
|
402
429
|
return false;
|
|
403
430
|
}
|
|
404
431
|
|
|
432
|
+
/** Removes every tracked state/market/oracle account and the error callback from the `BulkAccountLoader`, then clears internal maps. */
|
|
405
433
|
public async unsubscribe(): Promise<void> {
|
|
406
434
|
for (const [_, accountToPoll] of this.accountsToPoll) {
|
|
407
435
|
this.accountLoader.removeAccount(
|
|
@@ -425,6 +453,11 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
425
453
|
this.isSubscribed = false;
|
|
426
454
|
}
|
|
427
455
|
|
|
456
|
+
/**
|
|
457
|
+
* Adds a spot market (and its oracle, via `setSpotOracleMap`) to be tracked, registering it
|
|
458
|
+
* with the `BulkAccountLoader`. Idempotent: returns `true` immediately if already tracked.
|
|
459
|
+
* @param marketIndex Spot market index to start tracking.
|
|
460
|
+
*/
|
|
428
461
|
async addSpotMarket(marketIndex: number): Promise<boolean> {
|
|
429
462
|
const marketPublicKey = await getSpotMarketPublicKey(
|
|
430
463
|
this.program.programId,
|
|
@@ -443,10 +476,15 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
443
476
|
}
|
|
444
477
|
|
|
445
478
|
await this.addAccountToAccountLoader(accountToPoll);
|
|
446
|
-
this.setSpotOracleMap();
|
|
479
|
+
await this.setSpotOracleMap();
|
|
447
480
|
return true;
|
|
448
481
|
}
|
|
449
482
|
|
|
483
|
+
/**
|
|
484
|
+
* Adds a perp market (and its oracle, via `setPerpOracleMap`) to be tracked, registering it
|
|
485
|
+
* with the `BulkAccountLoader`. Idempotent: returns `true` immediately if already tracked.
|
|
486
|
+
* @param marketIndex Perp market index to start tracking.
|
|
487
|
+
*/
|
|
450
488
|
async addPerpMarket(marketIndex: number): Promise<boolean> {
|
|
451
489
|
const marketPublicKey = await getPerpMarketPublicKey(
|
|
452
490
|
this.program.programId,
|
|
@@ -467,6 +505,13 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
467
505
|
return true;
|
|
468
506
|
}
|
|
469
507
|
|
|
508
|
+
/**
|
|
509
|
+
* Adds an oracle to be tracked, registering it with the `BulkAccountLoader` and waiting
|
|
510
|
+
* (polling up to 3 times at `accountLoader.pollingFrequency` intervals) for it to appear in
|
|
511
|
+
* the loader's buffer map before resolving. A no-op that resolves `true` immediately for the
|
|
512
|
+
* `PublicKey.default` sentinel (quote-asset "no oracle") or an oracle already tracked.
|
|
513
|
+
* @param oracleInfo Oracle pubkey and source to start tracking.
|
|
514
|
+
*/
|
|
470
515
|
async addOracle(oracleInfo: OracleInfo): Promise<boolean> {
|
|
471
516
|
const oracleId = getOracleId(oracleInfo.publicKey, oracleInfo.source);
|
|
472
517
|
if (
|
|
@@ -508,6 +553,7 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
508
553
|
console.log(`Pausing to find oracle ${oracle} failed`);
|
|
509
554
|
}
|
|
510
555
|
|
|
556
|
+
/** Rebuilds `perpOracleMap`/`perpOracleStringMap` from currently cached perp markets, calling `addOracle` for any oracle not yet tracked. */
|
|
511
557
|
async setPerpOracleMap() {
|
|
512
558
|
const perpMarkets = this.getMarketAccountsAndSlots();
|
|
513
559
|
const oraclePromises = [];
|
|
@@ -530,6 +576,7 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
530
576
|
await Promise.all(oraclePromises);
|
|
531
577
|
}
|
|
532
578
|
|
|
579
|
+
/** Rebuilds `spotOracleMap`/`spotOracleStringMap` from currently cached spot markets, calling `addOracle` for any oracle not yet tracked. */
|
|
533
580
|
async setSpotOracleMap() {
|
|
534
581
|
const spotMarkets = this.getSpotMarketAccountsAndSlots();
|
|
535
582
|
const oraclePromises = [];
|
|
@@ -552,6 +599,14 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
552
599
|
await Promise.all(oraclePromises);
|
|
553
600
|
}
|
|
554
601
|
|
|
602
|
+
/**
|
|
603
|
+
* Applies `delistedMarketSetting` to any perp market currently `status: delisted` (and its
|
|
604
|
+
* oracle, if not shared with a live spot market): removes the `BulkAccountLoader` registration,
|
|
605
|
+
* and additionally drops the market/oracle from internal maps if the setting is `Discard`. A
|
|
606
|
+
* no-op if the setting is `Subscribe`. Throws if internal bookkeeping is inconsistent (e.g. a
|
|
607
|
+
* delisted market missing from `accountsToPoll`), which would indicate a bug rather than an
|
|
608
|
+
* expected runtime condition.
|
|
609
|
+
*/
|
|
555
610
|
handleDelistedMarkets(): void {
|
|
556
611
|
if (this.delistedMarketSetting === DelistedMarketSetting.Subscribe) {
|
|
557
612
|
return;
|
|
@@ -601,6 +656,7 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
601
656
|
}
|
|
602
657
|
}
|
|
603
658
|
|
|
659
|
+
/** Throws `NotSubscribedError` if `subscribe()` has not been called. */
|
|
604
660
|
assertIsSubscribed(): void {
|
|
605
661
|
if (!this.isSubscribed) {
|
|
606
662
|
throw new NotSubscribedError(
|
|
@@ -609,31 +665,43 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
609
665
|
}
|
|
610
666
|
}
|
|
611
667
|
|
|
668
|
+
/** Throws `NotSubscribedError` if not subscribed. */
|
|
612
669
|
public getStateAccountAndSlot(): DataAndSlot<StateAccount> {
|
|
613
670
|
this.assertIsSubscribed();
|
|
614
671
|
return this.state!;
|
|
615
672
|
}
|
|
616
673
|
|
|
674
|
+
/** Returns the cached perp market, or undefined if `marketIndex` isn't tracked (or hasn't loaded yet). Does not throw `NotSubscribedError`. */
|
|
617
675
|
public getMarketAccountAndSlot(
|
|
618
676
|
marketIndex: number
|
|
619
677
|
): DataAndSlot<PerpMarketAccount> | undefined {
|
|
620
678
|
return this.perpMarket.get(marketIndex);
|
|
621
679
|
}
|
|
622
680
|
|
|
681
|
+
/** Returns every currently cached perp market. Does not throw `NotSubscribedError`. */
|
|
623
682
|
public getMarketAccountsAndSlots(): DataAndSlot<PerpMarketAccount>[] {
|
|
624
683
|
return Array.from(this.perpMarket.values());
|
|
625
684
|
}
|
|
626
685
|
|
|
686
|
+
/** Returns the cached spot market, or undefined if `marketIndex` isn't tracked (or hasn't loaded yet). Does not throw `NotSubscribedError`. */
|
|
627
687
|
public getSpotMarketAccountAndSlot(
|
|
628
688
|
marketIndex: number
|
|
629
689
|
): DataAndSlot<SpotMarketAccount> | undefined {
|
|
630
690
|
return this.spotMarket.get(marketIndex);
|
|
631
691
|
}
|
|
632
692
|
|
|
693
|
+
/** Returns every currently cached spot market. Does not throw `NotSubscribedError`. */
|
|
633
694
|
public getSpotMarketAccountsAndSlots(): DataAndSlot<SpotMarketAccount>[] {
|
|
634
695
|
return Array.from(this.spotMarket.values());
|
|
635
696
|
}
|
|
636
697
|
|
|
698
|
+
/**
|
|
699
|
+
* Looks up cached oracle price data by oracle id (see `getOracleId`). Special-cases the
|
|
700
|
+
* quote-asset default oracle id, returning the constant `QUOTE_ORACLE_PRICE_DATA` at slot 0
|
|
701
|
+
* rather than a map lookup, since that oracle is never actually subscribed to.
|
|
702
|
+
* @param oracleId Oracle id string from `getOracleId(publicKey, source)`.
|
|
703
|
+
* @returns Cached price data/slot, or undefined if not tracked. Throws `NotSubscribedError` if not subscribed.
|
|
704
|
+
*/
|
|
637
705
|
public getOraclePriceDataAndSlot(
|
|
638
706
|
oracleId: string
|
|
639
707
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -648,6 +716,13 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
648
716
|
return this.oracles.get(oracleId);
|
|
649
717
|
}
|
|
650
718
|
|
|
719
|
+
/**
|
|
720
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a perp market's
|
|
721
|
+
* oracle. If the cached market's oracle pubkey has drifted from `perpOracleMap` (e.g. an admin
|
|
722
|
+
* changed it on-chain), triggers a background `setPerpOracleMap()` refresh and still returns
|
|
723
|
+
* the (possibly stale) mapping for this call.
|
|
724
|
+
* @param marketIndex Perp market index whose oracle price to look up.
|
|
725
|
+
*/
|
|
651
726
|
public getOraclePriceDataAndSlotForPerpMarket(
|
|
652
727
|
marketIndex: number
|
|
653
728
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -667,6 +742,13 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
667
742
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
668
743
|
}
|
|
669
744
|
|
|
745
|
+
/**
|
|
746
|
+
* Convenience lookup: resolves the oracle price data currently mapped to a spot market's
|
|
747
|
+
* oracle. If the cached market's oracle pubkey has drifted from `spotOracleMap`, triggers a
|
|
748
|
+
* background `setSpotOracleMap()` refresh and still returns the (possibly stale) mapping for
|
|
749
|
+
* this call.
|
|
750
|
+
* @param marketIndex Spot market index whose oracle price to look up.
|
|
751
|
+
*/
|
|
670
752
|
public getOraclePriceDataAndSlotForSpotMarket(
|
|
671
753
|
marketIndex: number
|
|
672
754
|
): DataAndSlot<OraclePriceData> | undefined {
|
|
@@ -685,6 +767,7 @@ export class PollingVelocityClientAccountSubscriber
|
|
|
685
767
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
686
768
|
}
|
|
687
769
|
|
|
770
|
+
/** Retunes the shared `BulkAccountLoader`'s poll interval (ms) for every account it batches (affects other subscribers sharing the same loader too). */
|
|
688
771
|
public updateAccountLoaderPollingFrequency(pollingFrequency: number): void {
|
|
689
772
|
this.accountLoader.updatePollingFrequency(pollingFrequency);
|
|
690
773
|
}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { AccountToLoad, BulkAccountLoader } from './bulkAccountLoader';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Test-only `BulkAccountLoader` that overrides `loadChunk` to fetch each account individually via
|
|
5
|
+
* `connection.getAccountInfoAndContext` instead of batching through `getMultipleAccounts`. Used
|
|
6
|
+
* against test validators/bankrun connections that don't implement the `_rpcBatchRequest` path
|
|
7
|
+
* the base class relies on. Preserves the same per-account slot/buffer dedup semantics as the
|
|
8
|
+
* base class (an update is only dispatched if the new slot is not older and the buffer changed).
|
|
9
|
+
*/
|
|
3
10
|
export class TestBulkAccountLoader extends BulkAccountLoader {
|
|
11
|
+
/** Sequentially fetches every account in every chunk via individual RPC calls, dispatching callbacks for any that changed at a non-decreasing slot. Slower than the base class's batched `getMultipleAccounts` approach by design — intended for test environments only. */
|
|
4
12
|
async loadChunk(accountsToLoadChunks: AccountToLoad[][]): Promise<void> {
|
|
5
13
|
if (accountsToLoadChunks.length === 0) {
|
|
6
14
|
return;
|