@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
package/src/accounts/types.ts
CHANGED
|
@@ -26,16 +26,52 @@ import { OracleInfo, OraclePriceData } from '../oracles/types';
|
|
|
26
26
|
import { User } from '../user';
|
|
27
27
|
import { Client, CommitmentLevel, LaserstreamConfig } from '../isomorphic/grpc';
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Common contract for a subscriber that tracks a single on-chain account of type `T`.
|
|
31
|
+
* Implemented by the `WebSocketAccountSubscriber`/`WebSocketAccountSubscriberV2`,
|
|
32
|
+
* `grpcAccountSubscriber`, and polling-loader-backed subscribers. `dataAndSlot` is
|
|
33
|
+
* undefined until the first fetch/notification lands; once set, `data` and `slot`
|
|
34
|
+
* are always updated together (see `DataAndSlot`) so a caller never sees data from
|
|
35
|
+
* one slot paired with another.
|
|
36
|
+
*/
|
|
29
37
|
export interface AccountSubscriber<T> {
|
|
38
|
+
/** Latest decoded account data and the slot it was observed at, or undefined before the first load. */
|
|
30
39
|
dataAndSlot?: DataAndSlot<T>;
|
|
40
|
+
/**
|
|
41
|
+
* Begins tracking the account, seeding `dataAndSlot` with an initial `fetch()` if not already
|
|
42
|
+
* set, then attaching a live update source (WebSocket/gRPC notification or accountLoader
|
|
43
|
+
* callback). Idempotent: calling again while already subscribed is a no-op.
|
|
44
|
+
* @param onChange Invoked with the newly decoded account data whenever a strictly newer slot's
|
|
45
|
+
* update is observed.
|
|
46
|
+
*/
|
|
31
47
|
subscribe(onChange: (data: T) => void): Promise<void>;
|
|
48
|
+
/** Fetches the account once via RPC and updates `dataAndSlot` if the response's slot is newer than what's cached. */
|
|
32
49
|
fetch(): Promise<void>;
|
|
50
|
+
/** Tears down the live update source. Safe to call when not subscribed. */
|
|
33
51
|
unsubscribe(): Promise<void>;
|
|
34
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Seeds or overwrites `dataAndSlot` without an RPC round trip. Used to inject data the caller
|
|
55
|
+
* already has (e.g. from a prior fetch elsewhere) before `subscribe()` runs its own fetch.
|
|
56
|
+
* @param userAccount Decoded account data to store.
|
|
57
|
+
* @param slot Slot the data was observed at; defaults to 0 (the oldest-possible sentinel) if omitted, so a later real update always wins.
|
|
58
|
+
*/
|
|
35
59
|
setData(userAccount: T, slot?: number): void;
|
|
36
60
|
}
|
|
37
61
|
|
|
62
|
+
/**
|
|
63
|
+
* Contract for a subscriber that tracks every account matching a program-account filter
|
|
64
|
+
* (e.g. all `User` accounts owned by the program), rather than one specific pubkey.
|
|
65
|
+
* Implemented by `WebSocketProgramAccountSubscriber`, `WebSocketProgramAccountsSubscriberV2`,
|
|
66
|
+
* `grpcProgramAccountSubscriber`, and `LaserstreamProgramAccountSubscriber`.
|
|
67
|
+
*/
|
|
38
68
|
export interface ProgramAccountSubscriber<T> {
|
|
69
|
+
/**
|
|
70
|
+
* Subscribes to program-account change notifications matching the filters supplied at
|
|
71
|
+
* construction.
|
|
72
|
+
* @param onChange Invoked once per changed account with its pubkey, decoded data, the
|
|
73
|
+
* notification's `Context` (including `slot`), and the raw account buffer.
|
|
74
|
+
*/
|
|
39
75
|
subscribe(
|
|
40
76
|
onChange: (
|
|
41
77
|
accountId: PublicKey,
|
|
@@ -44,13 +80,26 @@ export interface ProgramAccountSubscriber<T> {
|
|
|
44
80
|
buffer: Buffer
|
|
45
81
|
) => void
|
|
46
82
|
): Promise<void>;
|
|
83
|
+
/** Tears down the underlying subscription. Safe to call when not subscribed. */
|
|
47
84
|
unsubscribe(): Promise<void>;
|
|
48
85
|
}
|
|
49
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Thrown by every subscriber's `assertIsSubscribed()`-guarded getter (e.g.
|
|
89
|
+
* `getUserAccountAndSlot`, `getStateAccountAndSlot`) when called before `subscribe()` has
|
|
90
|
+
* completed. This is the uniform contract across all subscriber implementations in this
|
|
91
|
+
* directory: never read cached account data without having subscribed first.
|
|
92
|
+
*/
|
|
50
93
|
export class NotSubscribedError extends Error {
|
|
51
94
|
name = 'NotSubscribedError';
|
|
52
95
|
}
|
|
53
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Events emitted by a `VelocityClientAccountSubscriber` on its `eventEmitter`. `update` fires
|
|
99
|
+
* after every individual account-specific event (state/market/oracle) as a generic "something
|
|
100
|
+
* changed" signal; `error` surfaces underlying transport errors (e.g. RPC batch failures)
|
|
101
|
+
* without unsubscribing.
|
|
102
|
+
*/
|
|
54
103
|
export interface VelocityClientAccountEvents {
|
|
55
104
|
stateAccountUpdate: (payload: StateAccount) => void;
|
|
56
105
|
perpMarketAccountUpdate: (payload: PerpMarketAccount) => void;
|
|
@@ -65,6 +114,18 @@ export interface VelocityClientAccountEvents {
|
|
|
65
114
|
error: (e: Error) => void;
|
|
66
115
|
}
|
|
67
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Contract for the subscriber `VelocityClient` uses to keep `State`, `PerpMarket`,
|
|
119
|
+
* `SpotMarket`, and oracle accounts cached in memory. See `webSocketVelocityClientAccountSubscriber.ts`
|
|
120
|
+
* (default, one WebSocket subscription per account), `pollingVelocityClientAccountSubscriber.ts`
|
|
121
|
+
* (single `BulkAccountLoader` batches all accounts via periodic `getMultipleAccounts`), and
|
|
122
|
+
* `grpcVelocityClientAccountSubscriber.ts`/`grpcVelocityClientAccountSubscriberV2.ts` (gRPC
|
|
123
|
+
* Geyser stream). Accessor contracts differ by shape: the guarded singleton getters
|
|
124
|
+
* (`getStateAccountAndSlot`) throw `NotSubscribedError` until `subscribe()` has completed; the
|
|
125
|
+
* per-market/oracle accessors return `undefined` when that entry isn't cached yet; and the
|
|
126
|
+
* collection getters (`getMarketAccountsAndSlots`, etc.) are cache reads that return a
|
|
127
|
+
* possibly-empty array.
|
|
128
|
+
*/
|
|
68
129
|
export interface VelocityClientAccountSubscriber {
|
|
69
130
|
eventEmitter: StrictEventEmitter<EventEmitter, VelocityClientAccountEvents>;
|
|
70
131
|
isSubscribed: boolean;
|
|
@@ -98,45 +159,76 @@ export interface VelocityClientAccountSubscriber {
|
|
|
98
159
|
marketIndex: number
|
|
99
160
|
): DataAndSlot<OraclePriceData> | undefined;
|
|
100
161
|
|
|
162
|
+
/** Present only on polling-backed implementations; retunes the shared `BulkAccountLoader`'s poll interval (ms) for all accounts it batches. */
|
|
101
163
|
updateAccountLoaderPollingFrequency?: (pollingFrequency: number) => void;
|
|
102
164
|
}
|
|
103
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Controls what a `VelocityClientAccountSubscriber` does with a perp market (and its oracle, if
|
|
168
|
+
* unused elsewhere) once the on-chain market status becomes `delisted`.
|
|
169
|
+
*/
|
|
104
170
|
export enum DelistedMarketSetting {
|
|
171
|
+
/** Drop the live subscription for the delisted market/oracle but keep the last-known data cached. */
|
|
105
172
|
Unsubscribe,
|
|
173
|
+
/** Keep subscribing to the delisted market/oracle as normal (no special handling). */
|
|
106
174
|
Subscribe,
|
|
175
|
+
/** Drop the subscription and remove the market/oracle from the subscriber's internal maps entirely. */
|
|
107
176
|
Discard,
|
|
108
177
|
}
|
|
109
178
|
|
|
179
|
+
/** Events emitted by a `UserAccountSubscriber` on its `eventEmitter`. `update` fires alongside every `userAccountUpdate`. */
|
|
110
180
|
export interface UserAccountEvents {
|
|
111
181
|
userAccountUpdate: (payload: UserAccount) => void;
|
|
112
182
|
update: void;
|
|
113
183
|
error: (e: Error) => void;
|
|
114
184
|
}
|
|
115
185
|
|
|
186
|
+
/** Events emitted at the `User` (SDK wrapper) level, distinct from the lower-level `UserAccountEvents`. */
|
|
116
187
|
export interface UserEvents {
|
|
117
188
|
userUpdate: (payload: User) => void;
|
|
118
189
|
update: void;
|
|
119
190
|
error: (e: Error) => void;
|
|
120
191
|
}
|
|
121
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Contract for the subscriber `User` uses to track a single `UserAccount`. Implementations:
|
|
195
|
+
* `WebSocketUserAccountSubscriber` (default), `PollingUserAccountSubscriber` (via
|
|
196
|
+
* `BulkAccountLoader`), `grpcUserAccountSubscriber`, `OneShotUserAccountSubscriber` (fetch-only,
|
|
197
|
+
* ~1 RPC call), `BasicUserAccountSubscriber` (no network I/O, data supplied by the caller), and
|
|
198
|
+
* `WebSocketProgramUserAccountSubscriber` (filters a shared program-account stream).
|
|
199
|
+
*/
|
|
122
200
|
export interface UserAccountSubscriber {
|
|
123
201
|
eventEmitter: StrictEventEmitter<EventEmitter, UserAccountEvents>;
|
|
124
202
|
isSubscribed: boolean;
|
|
125
203
|
|
|
204
|
+
/**
|
|
205
|
+
* @param userAccount Optional pre-fetched account data to seed the subscriber with, skipping
|
|
206
|
+
* the initial RPC fetch.
|
|
207
|
+
*/
|
|
126
208
|
subscribe(userAccount?: UserAccount): Promise<boolean>;
|
|
127
209
|
fetch(): Promise<void>;
|
|
210
|
+
/**
|
|
211
|
+
* Applies an externally-obtained account update (e.g. relayed from a parent subscriber) if its
|
|
212
|
+
* slot is not older than the currently cached one, emitting `userAccountUpdate`/`update` on
|
|
213
|
+
* acceptance.
|
|
214
|
+
* @param userAccount Decoded account data to apply.
|
|
215
|
+
* @param slot Slot the data was observed at.
|
|
216
|
+
*/
|
|
128
217
|
updateData(userAccount: UserAccount, slot: number): void;
|
|
129
218
|
unsubscribe(): Promise<void>;
|
|
130
219
|
|
|
220
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined only if subscribed but no data has loaded yet. */
|
|
131
221
|
getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined;
|
|
132
222
|
}
|
|
133
223
|
|
|
224
|
+
/** Events emitted by a `TokenAccountSubscriber` on its `eventEmitter`. */
|
|
134
225
|
export interface TokenAccountEvents {
|
|
135
226
|
tokenAccountUpdate: (payload: Account) => void;
|
|
136
227
|
update: void;
|
|
137
228
|
error: (e: Error) => void;
|
|
138
229
|
}
|
|
139
230
|
|
|
231
|
+
/** Contract for tracking an SPL token account balance (e.g. a spot market vault or a user's token wallet). Implemented by `PollingTokenAccountSubscriber`. */
|
|
140
232
|
export interface TokenAccountSubscriber {
|
|
141
233
|
eventEmitter: StrictEventEmitter<EventEmitter, TokenAccountEvents>;
|
|
142
234
|
isSubscribed: boolean;
|
|
@@ -145,9 +237,15 @@ export interface TokenAccountSubscriber {
|
|
|
145
237
|
fetch(): Promise<void>;
|
|
146
238
|
unsubscribe(): Promise<void>;
|
|
147
239
|
|
|
240
|
+
/** Throws `NotSubscribedError` if not subscribed. */
|
|
148
241
|
getTokenAccountAndSlot(): DataAndSlot<Account>;
|
|
149
242
|
}
|
|
150
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Contract for tracking an `InsuranceFundStake` account. Implementations:
|
|
246
|
+
* `WebSocketInsuranceFundStakeAccountSubscriber` (default), `PollingInsuranceFundStakeAccountSubscriber`,
|
|
247
|
+
* and `grpcInsuranceFundStakeAccountSubscriber`.
|
|
248
|
+
*/
|
|
151
249
|
export interface InsuranceFundStakeAccountSubscriber {
|
|
152
250
|
eventEmitter: StrictEventEmitter<
|
|
153
251
|
EventEmitter,
|
|
@@ -159,23 +257,27 @@ export interface InsuranceFundStakeAccountSubscriber {
|
|
|
159
257
|
fetch(): Promise<void>;
|
|
160
258
|
unsubscribe(): Promise<void>;
|
|
161
259
|
|
|
260
|
+
/** Throws `NotSubscribedError` if not subscribed. */
|
|
162
261
|
getInsuranceFundStakeAccountAndSlot():
|
|
163
262
|
| DataAndSlot<InsuranceFundStake>
|
|
164
263
|
| undefined;
|
|
165
264
|
}
|
|
166
265
|
|
|
266
|
+
/** Events emitted by an `InsuranceFundStakeAccountSubscriber` on its `eventEmitter`. */
|
|
167
267
|
export interface InsuranceFundStakeAccountEvents {
|
|
168
268
|
insuranceFundStakeAccountUpdate: (payload: InsuranceFundStake) => void;
|
|
169
269
|
update: void;
|
|
170
270
|
error: (e: Error) => void;
|
|
171
271
|
}
|
|
172
272
|
|
|
273
|
+
/** Events emitted by an `OracleAccountSubscriber` on its `eventEmitter`. */
|
|
173
274
|
export interface OracleEvents {
|
|
174
275
|
oracleUpdate: (payload: OraclePriceData) => void;
|
|
175
276
|
update: void;
|
|
176
277
|
error: (e: Error) => void;
|
|
177
278
|
}
|
|
178
279
|
|
|
280
|
+
/** Contract for tracking a single oracle account's decoded price data. Implemented by `PollingOracleAccountSubscriber` (via `BulkAccountLoader`). */
|
|
179
281
|
export interface OracleAccountSubscriber {
|
|
180
282
|
eventEmitter: StrictEventEmitter<EventEmitter, OracleEvents>;
|
|
181
283
|
isSubscribed: boolean;
|
|
@@ -184,55 +286,96 @@ export interface OracleAccountSubscriber {
|
|
|
184
286
|
fetch(): Promise<void>;
|
|
185
287
|
unsubscribe(): Promise<void>;
|
|
186
288
|
|
|
289
|
+
/** Throws `NotSubscribedError` if not subscribed. */
|
|
187
290
|
getOraclePriceData(): DataAndSlot<OraclePriceData>;
|
|
188
291
|
}
|
|
189
292
|
|
|
293
|
+
/** A `state`/`perpMarket`/`spotMarket` account registered with a `PollingVelocityClientAccountSubscriber`'s `BulkAccountLoader`. */
|
|
190
294
|
export type AccountToPoll = {
|
|
295
|
+
/** Anchor account discriminator name, also used to route the decoded data and pick the emitted event. */
|
|
191
296
|
key: 'state' | 'perpMarket' | 'spotMarket';
|
|
192
297
|
publicKey: PublicKey;
|
|
298
|
+
/** `VelocityClientAccountEvents` key emitted when this account changes. */
|
|
193
299
|
eventType: string;
|
|
300
|
+
/** `BulkAccountLoader` callback id, set once registered; used to remove the account later. */
|
|
194
301
|
callbackId?: string;
|
|
302
|
+
/** For `perpMarket`/`spotMarket`, the market index this account decodes to. */
|
|
195
303
|
mapKey?: number;
|
|
196
304
|
};
|
|
197
305
|
|
|
306
|
+
/** An oracle account registered with a `PollingVelocityClientAccountSubscriber`'s `BulkAccountLoader`. */
|
|
198
307
|
export type OraclesToPoll = {
|
|
199
308
|
publicKey: PublicKey;
|
|
200
309
|
source: OracleSource;
|
|
310
|
+
/** `BulkAccountLoader` callback id, set once registered; used to remove the oracle later. */
|
|
201
311
|
callbackId?: string;
|
|
202
312
|
};
|
|
203
313
|
|
|
314
|
+
/** Raw account buffer paired with the slot it was fetched/observed at; the buffer is undefined if the account does not exist on-chain. */
|
|
204
315
|
export type BufferAndSlot = {
|
|
205
316
|
slot: number;
|
|
206
317
|
buffer: Buffer | undefined;
|
|
207
318
|
};
|
|
208
319
|
|
|
320
|
+
/**
|
|
321
|
+
* A decoded account payload paired atomically with the slot it was observed at. Every
|
|
322
|
+
* `AccountSubscriber`/getter in this directory updates `data` and `slot` together in a single
|
|
323
|
+
* assignment, so a caller reading `dataAndSlot` never sees data from one slot mixed with a slot
|
|
324
|
+
* number from another. `slot === 0` is the seeded sentinel used when data is injected via
|
|
325
|
+
* `setData`/a constructor without a real fetch (e.g. `BasicUserAccountSubscriber`) — it is
|
|
326
|
+
* always superseded once a real fetch or notification lands, since updates only apply when the
|
|
327
|
+
* new slot is `>=` the cached one.
|
|
328
|
+
*/
|
|
209
329
|
export type DataAndSlot<T> = {
|
|
210
330
|
data: T;
|
|
211
331
|
slot: number;
|
|
212
332
|
};
|
|
213
333
|
|
|
334
|
+
/** Resubscription/polling-fallback tuning for WebSocket- and gRPC-backed subscribers. */
|
|
214
335
|
export type ResubOpts = {
|
|
336
|
+
/**
|
|
337
|
+
* Milliseconds of inactivity (no notification) before the subscriber treats the stream as
|
|
338
|
+
* stalled and resubscribes (or starts polling, see `usePollingInsteadOfResub`). Should be at
|
|
339
|
+
* least 1000ms; smaller values log a warning. Leave undefined to disable the inactivity
|
|
340
|
+
* watchdog entirely.
|
|
341
|
+
*/
|
|
215
342
|
resubTimeoutMs?: number;
|
|
343
|
+
/** Emits verbose `console.log`/`console.debug` diagnostics for resub/polling transitions. Defaults to false. */
|
|
216
344
|
logResubMessages?: boolean;
|
|
217
345
|
// New options for polling-based resubscription
|
|
346
|
+
/**
|
|
347
|
+
* On inactivity timeout, poll via RPC to check for a missed update instead of immediately
|
|
348
|
+
* tearing down and recreating the WebSocket subscription. Defaults to false on the v1
|
|
349
|
+
* `WebSocketAccountSubscriber`; the V2 subscribers default this to `true`.
|
|
350
|
+
*/
|
|
218
351
|
usePollingInsteadOfResub?: boolean;
|
|
352
|
+
/** Polling cadence in ms when `usePollingInsteadOfResub` is active. Defaults to 30000 (30s). */
|
|
219
353
|
pollingIntervalMs?: number;
|
|
220
354
|
};
|
|
221
355
|
|
|
356
|
+
/** Events emitted by a `UserStatsAccountSubscriber` on its `eventEmitter`. */
|
|
222
357
|
export interface UserStatsAccountEvents {
|
|
223
358
|
userStatsAccountUpdate: (payload: UserStatsAccount) => void;
|
|
224
359
|
update: void;
|
|
225
360
|
error: (e: Error) => void;
|
|
226
361
|
}
|
|
227
362
|
|
|
363
|
+
/**
|
|
364
|
+
* Contract for the subscriber `UserStats` uses to track a single `UserStatsAccount`.
|
|
365
|
+
* Implementations mirror `UserAccountSubscriber`: `WebSocketUserStatsAccountSubscriber` (default),
|
|
366
|
+
* `PollingUserStatsAccountSubscriber`, `grpcUserStatsAccountSubscriber`,
|
|
367
|
+
* `OneShotUserStatsAccountSubscriber`, and `BasicUserStatsAccountSubscriber`.
|
|
368
|
+
*/
|
|
228
369
|
export interface UserStatsAccountSubscriber {
|
|
229
370
|
eventEmitter: StrictEventEmitter<EventEmitter, UserStatsAccountEvents>;
|
|
230
371
|
isSubscribed: boolean;
|
|
231
372
|
|
|
373
|
+
/** @param userStatsAccount Optional pre-fetched account data to seed the subscriber with, skipping the initial RPC fetch. */
|
|
232
374
|
subscribe(userStatsAccount?: UserStatsAccount): Promise<boolean>;
|
|
233
375
|
fetch(): Promise<void>;
|
|
234
376
|
unsubscribe(): Promise<void>;
|
|
235
377
|
|
|
378
|
+
/** Throws `NotSubscribedError` if not subscribed. Returns undefined only if subscribed but no data has loaded yet. */
|
|
236
379
|
getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined;
|
|
237
380
|
}
|
|
238
381
|
|
|
@@ -247,27 +390,33 @@ type BaseGrpcConfigs = {
|
|
|
247
390
|
enableReconnect?: boolean;
|
|
248
391
|
};
|
|
249
392
|
|
|
393
|
+
/** gRPC Geyser config for the default Yellowstone (Triton/Dragon's Mouth-compatible) client. */
|
|
250
394
|
export type YellowstoneGrpcConfigs = BaseGrpcConfigs & {
|
|
251
395
|
client?: 'yellowstone';
|
|
252
396
|
channelOptions?: ConstructorParameters<typeof Client>[2];
|
|
253
397
|
};
|
|
254
398
|
|
|
399
|
+
/** gRPC Geyser config for the Helius LaserStream client (`LaserstreamProgramAccountSubscriber`). Requires the optional `helius-laserstream` peer dependency. */
|
|
255
400
|
export type LaserGrpcConfigs = BaseGrpcConfigs & {
|
|
256
401
|
client: 'laser';
|
|
257
402
|
channelOptions?: LaserstreamConfig['channelOptions'];
|
|
258
403
|
};
|
|
259
404
|
|
|
405
|
+
/** Union of supported gRPC Geyser client configs; the `client` discriminant selects Yellowstone vs. LaserStream. */
|
|
260
406
|
export type GrpcConfigs = YellowstoneGrpcConfigs | LaserGrpcConfigs;
|
|
261
407
|
|
|
408
|
+
/** Contract for tracking an LP-pool `ConstituentAccount`. `sync()` is the fetch/reconcile entry point (analogous to `fetch()` on other subscribers). */
|
|
262
409
|
export interface ConstituentAccountSubscriber {
|
|
263
410
|
eventEmitter: StrictEventEmitter<EventEmitter, ConstituentAccountEvents>;
|
|
264
411
|
isSubscribed: boolean;
|
|
265
412
|
|
|
413
|
+
/** @param constituentAccount Optional pre-fetched account data to seed the subscriber with. */
|
|
266
414
|
subscribe(constituentAccount?: ConstituentAccount): Promise<boolean>;
|
|
267
415
|
sync(): Promise<void>;
|
|
268
416
|
unsubscribe(): Promise<void>;
|
|
269
417
|
}
|
|
270
418
|
|
|
419
|
+
/** Events emitted by a `ConstituentAccountSubscriber` on its `eventEmitter`. */
|
|
271
420
|
export interface ConstituentAccountEvents {
|
|
272
421
|
onAccountUpdate: (
|
|
273
422
|
account: ConstituentAccount,
|
package/src/accounts/utils.ts
CHANGED
|
@@ -3,10 +3,18 @@ import { isVariant, PerpMarketAccount, SpotMarketAccount } from '../types';
|
|
|
3
3
|
import { OracleInfo } from '../oracles/types';
|
|
4
4
|
import { getOracleId } from '../oracles/oracleId';
|
|
5
5
|
|
|
6
|
+
/** Capitalizes the first character of `value` (e.g. for building Anchor event/method names from account names). */
|
|
6
7
|
export function capitalize(value: string): string {
|
|
7
8
|
return value[0].toUpperCase() + value.slice(1);
|
|
8
9
|
}
|
|
9
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Unwraps a possibly-undefined `DataAndSlot<T>`, throwing if it hasn't loaded. Use this instead
|
|
13
|
+
* of a bare non-null assertion when a subscriber's cached data must be present by this point.
|
|
14
|
+
* @param dataAndSlot The cached data/slot pair to check, typically from `AccountSubscriber.dataAndSlot`.
|
|
15
|
+
* @param message Error message to throw if `dataAndSlot` is undefined.
|
|
16
|
+
* @returns The same `dataAndSlot`, narrowed to non-undefined.
|
|
17
|
+
*/
|
|
10
18
|
export function assertDataAndSlot<T>(
|
|
11
19
|
dataAndSlot: DataAndSlot<T> | undefined,
|
|
12
20
|
message: string
|
|
@@ -17,6 +25,16 @@ export function assertDataAndSlot<T>(
|
|
|
17
25
|
return dataAndSlot;
|
|
18
26
|
}
|
|
19
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Scans cached perp/spot market data for perp markets with `status: delisted` and identifies
|
|
30
|
+
* both the delisted market indexes and their oracles, excluding any oracle still in use by a
|
|
31
|
+
* spot market or a non-delisted perp market (so a shared oracle isn't dropped out from under a
|
|
32
|
+
* still-live market). Used by `VelocityClientAccountSubscriber` implementations to drive
|
|
33
|
+
* `DelistedMarketSetting` (unsubscribe/discard) handling.
|
|
34
|
+
* @param perpMarkets Currently cached perp market data/slots (entries with missing `data` are skipped).
|
|
35
|
+
* @param spotMarkets Currently cached spot market data/slots, checked to avoid dropping oracles they still reference.
|
|
36
|
+
* @returns `perpMarketIndexes` of delisted perp markets and `oracles` safe to stop tracking.
|
|
37
|
+
*/
|
|
20
38
|
export function findDelistedPerpMarketsAndOracles(
|
|
21
39
|
perpMarkets: DataAndSlot<PerpMarketAccount>[],
|
|
22
40
|
spotMarkets: DataAndSlot<SpotMarketAccount>[]
|
|
@@ -37,34 +55,34 @@ export function findDelistedPerpMarketsAndOracles(
|
|
|
37
55
|
}
|
|
38
56
|
}
|
|
39
57
|
|
|
40
|
-
// make sure oracle isn't used by spot market
|
|
41
|
-
const
|
|
42
|
-
for (const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!spotMarket || !spotMarket.data) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const delistedOracleId = getOracleId(
|
|
50
|
-
delistedOracle.publicKey,
|
|
51
|
-
delistedOracle.source
|
|
52
|
-
);
|
|
53
|
-
const spotMarketOracleId = getOracleId(
|
|
54
|
-
spotMarket.data.oracle,
|
|
55
|
-
spotMarket.data.oracleSource
|
|
56
|
-
);
|
|
57
|
-
if (spotMarketOracleId === delistedOracleId) {
|
|
58
|
-
isUsedBySpotMarket = true;
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
58
|
+
// make sure oracle isn't still used by a spot market or a live perp market
|
|
59
|
+
const liveOracleIds = new Set<string>();
|
|
60
|
+
for (const spotMarket of spotMarkets) {
|
|
61
|
+
if (!spotMarket || !spotMarket.data) {
|
|
62
|
+
continue;
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
64
|
+
liveOracleIds.add(
|
|
65
|
+
getOracleId(spotMarket.data.oracle, spotMarket.data.oracleSource)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
for (const perpMarket of perpMarkets) {
|
|
69
|
+
if (!perpMarket || !perpMarket.data) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (!isVariant(perpMarket.data.status, 'delisted')) {
|
|
73
|
+
liveOracleIds.add(
|
|
74
|
+
getOracleId(perpMarket.data.oracle, perpMarket.data.oracleSource)
|
|
75
|
+
);
|
|
65
76
|
}
|
|
66
77
|
}
|
|
67
78
|
|
|
79
|
+
const filteredDelistedOracles = delistedOracles.filter(
|
|
80
|
+
(delistedOracle) =>
|
|
81
|
+
!liveOracleIds.has(
|
|
82
|
+
getOracleId(delistedOracle.publicKey, delistedOracle.source)
|
|
83
|
+
)
|
|
84
|
+
);
|
|
85
|
+
|
|
68
86
|
return {
|
|
69
87
|
perpMarketIndexes: delistedPerpMarketIndexes,
|
|
70
88
|
oracles: filteredDelistedOracles,
|
|
@@ -9,6 +9,16 @@ import { AccountInfo, Commitment, Context, PublicKey } from '@solana/web3.js';
|
|
|
9
9
|
import { VelocityProgram } from '../config';
|
|
10
10
|
import * as Buffer from 'buffer';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Default `AccountSubscriber` implementation: tracks a single account via
|
|
14
|
+
* `connection.onAccountChange`, decoding each notification with either a supplied
|
|
15
|
+
* `decodeBuffer` function or the program's Anchor coder for `accountName`. Updates are applied
|
|
16
|
+
* only when the notification's slot is not older than the last-seen slot and the raw buffer
|
|
17
|
+
* actually changed, so `onChange` never fires twice for the same bytes. If `resubOpts.resubTimeoutMs`
|
|
18
|
+
* is set, a watchdog timer resubscribes to the WebSocket whenever no notification arrives within
|
|
19
|
+
* that window — see `ResubOpts` for tuning. This is the base class extended by
|
|
20
|
+
* `grpcAccountSubscriber` for gRPC Geyser-backed tracking.
|
|
21
|
+
*/
|
|
12
22
|
export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
13
23
|
dataAndSlot?: DataAndSlot<T>;
|
|
14
24
|
bufferAndSlot?: BufferAndSlot;
|
|
@@ -38,6 +48,14 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
38
48
|
|
|
39
49
|
receivingData: boolean;
|
|
40
50
|
|
|
51
|
+
/**
|
|
52
|
+
* @param accountName Anchor account type name (used for logging and, absent `decodeBuffer`, for decoding via the program coder).
|
|
53
|
+
* @param program Anchor program providing the connection and coder.
|
|
54
|
+
* @param accountPublicKey Address of the account to track.
|
|
55
|
+
* @param decodeBuffer Optional custom decode function; defaults to `program.coder.accounts.decode(accountName, buffer)`.
|
|
56
|
+
* @param resubOpts Resubscription watchdog options; omit to disable the inactivity timer.
|
|
57
|
+
* @param commitment Commitment for both the initial fetch and the `onAccountChange` subscription; defaults to the provider's configured commitment.
|
|
58
|
+
*/
|
|
41
59
|
public constructor(
|
|
42
60
|
accountName: string,
|
|
43
61
|
program: VelocityProgram,
|
|
@@ -65,6 +83,12 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
65
83
|
commitment ?? (this.program.provider as AnchorProvider).opts.commitment;
|
|
66
84
|
}
|
|
67
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Seeds `dataAndSlot` with an initial `fetch()` (if not already set via `setData`) and then
|
|
88
|
+
* attaches the `onAccountChange` WebSocket listener. Returning early (no-op) if already
|
|
89
|
+
* subscribed or mid-unsubscribe.
|
|
90
|
+
* @param onChange Invoked with the newly decoded account data on each accepted update.
|
|
91
|
+
*/
|
|
68
92
|
async subscribe(onChange: (data: T) => void): Promise<void> {
|
|
69
93
|
if (this.listenerId != null || this.isUnsubscribing) {
|
|
70
94
|
if (this.resubOpts?.logResubMessages) {
|
|
@@ -101,6 +125,12 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
101
125
|
}
|
|
102
126
|
}
|
|
103
127
|
|
|
128
|
+
/**
|
|
129
|
+
* Seeds or overwrites `dataAndSlot` directly, bypassing RPC. A no-op if the currently cached
|
|
130
|
+
* slot is already newer than `slot`.
|
|
131
|
+
* @param data Decoded account data to store.
|
|
132
|
+
* @param slot Slot the data was observed at; defaults to 0 (the seeded sentinel) if omitted.
|
|
133
|
+
*/
|
|
104
134
|
setData(data: T, slot?: number): void {
|
|
105
135
|
const newSlot = slot || 0;
|
|
106
136
|
if (this.dataAndSlot && this.dataAndSlot.slot > newSlot) {
|
|
@@ -155,6 +185,7 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
155
185
|
);
|
|
156
186
|
}
|
|
157
187
|
|
|
188
|
+
/** Fetches the account once via `getAccountInfoAndContext` and routes the result through `handleRpcResponse`, applying it if newer than the cached slot. */
|
|
158
189
|
async fetch(): Promise<void> {
|
|
159
190
|
const rpcResponse =
|
|
160
191
|
await this.program.provider.connection.getAccountInfoAndContext(
|
|
@@ -167,6 +198,11 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
167
198
|
);
|
|
168
199
|
}
|
|
169
200
|
|
|
201
|
+
/**
|
|
202
|
+
* Applies a raw RPC/WS response: decodes and stores it (updating `bufferAndSlot`/`dataAndSlot`
|
|
203
|
+
* and invoking `onChange`) only if the slot is not older than the cached one and the buffer's
|
|
204
|
+
* bytes actually changed (or this is the first observation).
|
|
205
|
+
*/
|
|
170
206
|
handleRpcResponse(context: Context, accountInfo?: AccountInfo<Buffer>): void {
|
|
171
207
|
const newSlot = context.slot;
|
|
172
208
|
let newBuffer: Buffer | undefined = undefined;
|
|
@@ -209,6 +245,7 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
209
245
|
}
|
|
210
246
|
}
|
|
211
247
|
|
|
248
|
+
/** Decodes a raw account buffer using the constructor-supplied `decodeBufferFn`, or the program's Anchor coder for `accountName` if none was supplied. */
|
|
212
249
|
decodeBuffer(buffer: Buffer): T {
|
|
213
250
|
if (this.decodeBufferFn) {
|
|
214
251
|
return this.decodeBufferFn(buffer);
|
|
@@ -217,6 +254,10 @@ export class WebSocketAccountSubscriber<T> implements AccountSubscriber<T> {
|
|
|
217
254
|
}
|
|
218
255
|
}
|
|
219
256
|
|
|
257
|
+
/**
|
|
258
|
+
* Tears down the WebSocket listener and cancels any pending resub timeout.
|
|
259
|
+
* @param onResub Internal flag set to `true` when called as part of an automatic resubscribe cycle, which preserves `resubOpts.resubTimeoutMs` instead of clearing it. Callers should omit this.
|
|
260
|
+
*/
|
|
220
261
|
unsubscribe(onResub = false): Promise<void> {
|
|
221
262
|
if (!onResub && this.resubOpts) {
|
|
222
263
|
this.resubOpts.resubTimeoutMs = undefined;
|
|
@@ -209,20 +209,15 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
|
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
+
/**
|
|
213
|
+
* Seeds `dataAndSlot` with an initial `fetch()` (if not already set via `setData`), then opens
|
|
214
|
+
* the `gill` `accountNotifications` WebSocket subscription and, if `resubOpts.resubTimeoutMs`
|
|
215
|
+
* is set, arms the inactivity watchdog (`setTimeout`). Idempotent: a no-op if already
|
|
216
|
+
* subscribed or mid-unsubscribe.
|
|
217
|
+
* @param onChange Invoked with the newly decoded account data on each accepted update.
|
|
218
|
+
* @throws Error if `accountPublicKey` is not a valid address per `gill`'s `isAddress`.
|
|
219
|
+
*/
|
|
212
220
|
async subscribe(onChange: (data: T) => void): Promise<void> {
|
|
213
|
-
/**
|
|
214
|
-
* Start the WebSocket subscription and (optionally) setup inactivity
|
|
215
|
-
* fallback.
|
|
216
|
-
*
|
|
217
|
-
* Flow
|
|
218
|
-
* - If we do not have initial state, perform a one-time `fetch()` to seed
|
|
219
|
-
* internal buffers and emit current data.
|
|
220
|
-
* - Subscribe to account notifications via WS.
|
|
221
|
-
* - If `resubOpts.resubTimeoutMs` is set, schedule an inactivity timeout.
|
|
222
|
-
* When it fires:
|
|
223
|
-
* - if `usePollingInsteadOfResub` is true, start polling loop;
|
|
224
|
-
* - otherwise, resubscribe to WS immediately.
|
|
225
|
-
*/
|
|
226
221
|
if (this.listenerId != null || this.isUnsubscribing) {
|
|
227
222
|
if (this.resubOpts.logResubMessages) {
|
|
228
223
|
console.log(
|
|
@@ -267,6 +262,12 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
|
|
|
267
262
|
}
|
|
268
263
|
}
|
|
269
264
|
|
|
265
|
+
/**
|
|
266
|
+
* Seeds or overwrites `dataAndSlot` directly, bypassing RPC. A no-op if the currently cached
|
|
267
|
+
* slot is already newer than `slot`.
|
|
268
|
+
* @param data Decoded account data to store.
|
|
269
|
+
* @param slot Slot the data was observed at; defaults to 0 (the seeded sentinel) if omitted.
|
|
270
|
+
*/
|
|
270
271
|
setData(data: T, slot?: number): void {
|
|
271
272
|
const newSlot = slot || 0;
|
|
272
273
|
if (this.dataAndSlot && this.dataAndSlot.slot > newSlot) {
|
|
@@ -279,12 +280,13 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
|
|
|
279
280
|
};
|
|
280
281
|
}
|
|
281
282
|
|
|
283
|
+
/**
|
|
284
|
+
* Arms the inactivity watchdog: if no WS notification resets this timeout within
|
|
285
|
+
* `resubOpts.resubTimeoutMs`, either starts the polling fallback (`usePollingInsteadOfResub`)
|
|
286
|
+
* or tears down and recreates the WS subscription. Throws if `onChange` was never set (i.e.
|
|
287
|
+
* called outside `subscribe()`'s flow).
|
|
288
|
+
*/
|
|
282
289
|
protected setTimeout(): void {
|
|
283
|
-
/**
|
|
284
|
-
* Schedule inactivity handling. If WS is quiet for
|
|
285
|
-
* `resubOpts.resubTimeoutMs` and `receivingData` is true, trigger either
|
|
286
|
-
* a polling loop or a resubscribe depending on options.
|
|
287
|
-
*/
|
|
288
290
|
if (!this._onChange) {
|
|
289
291
|
throw new Error('onChange callback function must be set');
|
|
290
292
|
}
|
|
@@ -428,6 +430,11 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
|
|
|
428
430
|
);
|
|
429
431
|
}
|
|
430
432
|
|
|
433
|
+
/**
|
|
434
|
+
* Applies a raw `gill` RPC/WS response: decodes (base58 or base64) and stores it (updating
|
|
435
|
+
* `bufferAndSlot`/`dataAndSlot` and invoking `onChange`) only if the slot is not older than
|
|
436
|
+
* the cached one and the buffer's bytes actually changed (or this is the first observation).
|
|
437
|
+
*/
|
|
431
438
|
handleRpcResponse(
|
|
432
439
|
context: { slot: bigint },
|
|
433
440
|
accountInfo?: AccountInfoBase &
|
|
@@ -490,6 +497,7 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
|
|
|
490
497
|
}
|
|
491
498
|
}
|
|
492
499
|
|
|
500
|
+
/** Decodes a raw account buffer using the constructor-supplied `decodeBufferFn`, or the program's Anchor coder for `accountName` if none was supplied. */
|
|
493
501
|
decodeBuffer(buffer: Buffer): T {
|
|
494
502
|
if (this.decodeBufferFn) {
|
|
495
503
|
return this.decodeBufferFn(buffer);
|
|
@@ -498,12 +506,12 @@ export class WebSocketAccountSubscriberV2<T> implements AccountSubscriber<T> {
|
|
|
498
506
|
}
|
|
499
507
|
}
|
|
500
508
|
|
|
509
|
+
/**
|
|
510
|
+
* Tears down the WebSocket subscription (via `abortController`) and cancels any pending resub
|
|
511
|
+
* timeout and in-progress polling.
|
|
512
|
+
* @param onResub Internal flag set to `true` when called as part of an automatic resubscribe cycle, which preserves `resubOpts.resubTimeoutMs` instead of clearing it. Callers should omit this.
|
|
513
|
+
*/
|
|
501
514
|
unsubscribe(onResub = false): Promise<void> {
|
|
502
|
-
/**
|
|
503
|
-
* Stop timers, polling, and WS subscription.
|
|
504
|
-
* - When called during a resubscribe (`onResub=true`), we preserve
|
|
505
|
-
* `resubOpts.resubTimeoutMs` for the restarted subscription.
|
|
506
|
-
*/
|
|
507
515
|
if (!onResub && this.resubOpts) {
|
|
508
516
|
this.resubOpts.resubTimeoutMs = undefined;
|
|
509
517
|
}
|