@velocity-exchange/sdk 0.1.0 → 0.2.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 +15 -0
- package/bun.lock +23 -1
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +5 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.js +4 -3
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +4 -3
- package/lib/browser/accounts/bulkAccountLoader.d.ts +5 -5
- package/lib/browser/accounts/bulkAccountLoader.js +12 -1
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +2 -1
- package/lib/browser/accounts/grpcAccountSubscriber.js +8 -2
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +13 -5
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +12 -8
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +8 -2
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +18 -3
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -1
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +40 -17
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +3 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +4 -3
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +16 -5
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +16 -5
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +8 -4
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +17 -11
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +6 -6
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -1
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +64 -28
- package/lib/browser/accounts/types.d.ts +4 -4
- package/lib/browser/accounts/utils.d.ts +1 -0
- package/lib/browser/accounts/utils.js +8 -1
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +4 -2
- package/lib/browser/accounts/webSocketAccountSubscriber.js +17 -5
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +17 -6
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +14 -3
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +9 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -4
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +48 -20
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -3
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +45 -14
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +0 -3
- package/lib/browser/addresses/marketAddresses.js +3 -2
- package/lib/browser/addresses/pda.d.ts +0 -2
- package/lib/browser/addresses/pda.js +1 -14
- package/lib/browser/adminClient.d.ts +24 -28
- package/lib/browser/adminClient.js +156 -157
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +1 -1
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +6 -4
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -1
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +9 -4
- package/lib/browser/bankrun/bankrunConnection.d.ts +6 -4
- package/lib/browser/bankrun/bankrunConnection.js +69 -31
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +3 -2
- package/lib/browser/clock/clockSubscriber.d.ts +6 -6
- package/lib/browser/clock/clockSubscriber.js +4 -3
- package/lib/browser/config.d.ts +1 -1
- package/lib/browser/config.js +8 -4
- package/lib/browser/constants/index.d.ts +1 -2
- package/lib/browser/constants/index.js +1 -2
- package/lib/browser/constants/numericConstants.d.ts +1 -3
- package/lib/browser/constants/numericConstants.js +3 -5
- package/lib/browser/constituentMap/constituentMap.js +5 -1
- package/lib/browser/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
- package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
- package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
- package/lib/browser/core/instructions/perpOrders.d.ts +14 -0
- package/lib/browser/core/instructions/perpOrders.js +14 -0
- package/lib/browser/core/remainingAccounts.d.ts +2 -2
- package/lib/browser/core/remainingAccounts.js +2 -2
- package/lib/browser/decode/user.js +9 -1
- package/lib/browser/dlob/DLOB.d.ts +6 -1
- package/lib/browser/dlob/DLOB.js +201 -138
- package/lib/browser/dlob/DLOBNode.d.ts +5 -2
- package/lib/browser/dlob/DLOBNode.js +7 -0
- package/lib/browser/dlob/DLOBSubscriber.js +37 -32
- package/lib/browser/dlob/NodeList.js +8 -7
- package/lib/browser/dlob/orderBookLevels.js +19 -12
- package/lib/browser/events/eventList.js +4 -1
- package/lib/browser/events/eventSubscriber.d.ts +5 -2
- package/lib/browser/events/eventSubscriber.js +75 -26
- package/lib/browser/events/eventsServerLogProvider.d.ts +1 -1
- package/lib/browser/events/eventsServerLogProvider.js +15 -8
- package/lib/browser/events/fetchLogs.d.ts +1 -1
- package/lib/browser/events/fetchLogs.js +4 -2
- package/lib/browser/events/pollingLogProvider.d.ts +1 -1
- package/lib/browser/events/pollingLogProvider.js +1 -0
- package/lib/browser/events/txEventCache.js +6 -2
- package/lib/browser/events/types.d.ts +2 -4
- package/lib/browser/events/types.js +0 -2
- package/lib/browser/events/webSocketLogProvider.d.ts +1 -1
- package/lib/browser/events/webSocketLogProvider.js +5 -2
- package/lib/browser/factory/bigNum.js +1 -1
- package/lib/browser/idl/velocity.d.ts +1243 -1586
- package/lib/browser/idl/velocity.json +1234 -1577
- package/lib/browser/index.d.ts +0 -2
- package/lib/browser/index.js +0 -2
- package/lib/browser/jupiter/jupiterClient.d.ts +1 -1
- package/lib/browser/jupiter/jupiterClient.js +18 -8
- package/lib/browser/marginCalculation.js +1 -0
- package/lib/browser/math/amm.d.ts +31 -13
- package/lib/browser/math/amm.js +77 -22
- package/lib/browser/math/bankruptcy.js +1 -1
- package/lib/browser/math/funding.js +6 -6
- package/lib/browser/math/insurance.d.ts +1 -1
- package/lib/browser/math/insurance.js +4 -5
- package/lib/browser/math/margin.d.ts +1 -9
- package/lib/browser/math/margin.js +3 -62
- package/lib/browser/math/market.d.ts +4 -12
- package/lib/browser/math/market.js +6 -40
- package/lib/browser/math/oracles.d.ts +0 -3
- package/lib/browser/math/oracles.js +1 -14
- package/lib/browser/math/orders.d.ts +0 -5
- package/lib/browser/math/orders.js +2 -74
- package/lib/browser/math/position.d.ts +0 -4
- package/lib/browser/math/position.js +5 -10
- package/lib/browser/math/repeg.d.ts +0 -1
- package/lib/browser/math/repeg.js +1 -23
- package/lib/browser/math/spotBalance.d.ts +4 -4
- package/lib/browser/math/spotBalance.js +6 -6
- package/lib/browser/math/spotMarket.d.ts +0 -6
- package/lib/browser/math/spotMarket.js +1 -16
- package/lib/browser/math/spotPosition.d.ts +4 -4
- package/lib/browser/math/state.d.ts +0 -2
- package/lib/browser/math/state.js +1 -9
- package/lib/browser/math/superStake.d.ts +3 -53
- package/lib/browser/math/superStake.js +16 -13
- package/lib/browser/math/trade.js +6 -6
- package/lib/browser/memcmp.d.ts +0 -1
- package/lib/browser/memcmp.js +1 -10
- package/lib/browser/oracles/prelaunchOracleClient.js +3 -2
- package/lib/browser/oracles/pythClient.js +9 -3
- package/lib/browser/oracles/pythLazerClient.js +3 -2
- package/lib/browser/oracles/utils.d.ts +4 -0
- package/lib/browser/oracles/utils.js +9 -1
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -1
- package/lib/browser/orderSubscriber/OrderSubscriber.js +8 -2
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +1 -1
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +32 -8
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
- package/lib/browser/pyth/types.d.ts +0 -1
- package/lib/browser/slot/SlotSubscriber.d.ts +1 -1
- package/lib/browser/slot/SlotSubscriber.js +2 -1
- package/lib/browser/slot/SlothashSubscriber.d.ts +3 -2
- package/lib/browser/slot/SlothashSubscriber.js +11 -4
- package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
- package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
- package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +3 -2
- package/lib/browser/swift/signedMsgUserAccountSubscriber.js +13 -5
- package/lib/browser/swift/swiftOrderSubscriber.d.ts +1 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +10 -5
- package/lib/browser/testClient.js +3 -2
- package/lib/browser/tokenFaucet.js +16 -2
- package/lib/browser/tx/baseTxSender.d.ts +4 -4
- package/lib/browser/tx/baseTxSender.js +5 -4
- package/lib/browser/tx/fastSingleTxSender.d.ts +3 -3
- package/lib/browser/tx/fastSingleTxSender.js +9 -5
- package/lib/browser/tx/reportTransactionError.d.ts +2 -2
- package/lib/browser/tx/reportTransactionError.js +5 -1
- package/lib/browser/tx/retryTxSender.d.ts +1 -1
- package/lib/browser/tx/retryTxSender.js +4 -2
- package/lib/browser/tx/txHandler.d.ts +7 -1
- package/lib/browser/tx/txHandler.js +54 -40
- package/lib/browser/tx/txParamProcessor.d.ts +4 -1
- package/lib/browser/tx/txParamProcessor.js +6 -0
- package/lib/browser/tx/types.d.ts +1 -1
- package/lib/browser/tx/whileValidTxSender.d.ts +1 -6
- package/lib/browser/tx/whileValidTxSender.js +35 -13
- package/lib/browser/types.d.ts +27 -70
- package/lib/browser/types.js +2 -2
- package/lib/browser/user.d.ts +21 -7
- package/lib/browser/user.js +156 -132
- package/lib/browser/userMap/WebsocketSubscription.d.ts +1 -1
- package/lib/browser/userMap/grpcSubscription.d.ts +1 -1
- package/lib/browser/userMap/referrerMap.js +10 -3
- package/lib/browser/userMap/revenueShareEscrowMap.js +4 -0
- package/lib/browser/userMap/userMap.d.ts +1 -1
- package/lib/browser/userMap/userMap.js +36 -23
- package/lib/browser/userMap/userStatsMap.d.ts +1 -1
- package/lib/browser/userMap/userStatsMap.js +18 -13
- package/lib/browser/userStats.d.ts +7 -2
- package/lib/browser/userStats.js +18 -4
- package/lib/browser/util/TransactionConfirmationManager.js +4 -2
- package/lib/browser/util/chainClock.d.ts +1 -1
- package/lib/browser/util/computeUnits.d.ts +1 -1
- package/lib/browser/util/computeUnits.js +6 -1
- package/lib/browser/velocityClient.d.ts +92 -34
- package/lib/browser/velocityClient.js +414 -280
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +5 -3
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +4 -3
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +5 -3
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +4 -3
- package/lib/node/accounts/bulkAccountLoader.d.ts +5 -5
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +12 -1
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +2 -1
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +8 -2
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +3 -2
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +13 -5
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +12 -8
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +2 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +8 -2
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +18 -3
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +40 -17
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +3 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +4 -3
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +7 -3
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +4 -2
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +3 -3
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +0 -2
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +16 -5
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +0 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +16 -5
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +8 -4
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +17 -11
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +4 -2
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +6 -6
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +7 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +64 -28
- package/lib/node/accounts/types.d.ts +4 -4
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/utils.d.ts +1 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +8 -1
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +4 -2
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +17 -5
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +4 -2
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +17 -6
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +4 -2
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +9 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +3 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +14 -3
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +15 -3
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +14 -4
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +4 -2
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +9 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +4 -2
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +9 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +4 -4
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +48 -20
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -3
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +45 -14
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +0 -3
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +3 -2
- package/lib/node/addresses/pda.d.ts +0 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +1 -14
- package/lib/node/adminClient.d.ts +24 -28
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +156 -157
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +6 -4
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +9 -4
- package/lib/node/bankrun/bankrunConnection.d.ts +6 -4
- package/lib/node/bankrun/bankrunConnection.d.ts.map +1 -1
- package/lib/node/bankrun/bankrunConnection.js +69 -31
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +3 -2
- package/lib/node/clock/clockSubscriber.d.ts +6 -6
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +4 -3
- package/lib/node/config.d.ts +1 -1
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +8 -4
- package/lib/node/constants/index.d.ts +1 -2
- package/lib/node/constants/index.d.ts.map +1 -1
- package/lib/node/constants/index.js +1 -2
- package/lib/node/constants/numericConstants.d.ts +1 -3
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +3 -5
- package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
- package/lib/node/constituentMap/constituentMap.js +5 -1
- package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts.map +1 -1
- package/lib/node/constituentMap/pollingConstituentAccountSubscriber.js +3 -2
- package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts +2 -3
- package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts.map +1 -1
- package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.js +10 -3
- package/lib/node/core/instructions/perpOrders.d.ts +14 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +14 -0
- package/lib/node/core/remainingAccounts.d.ts +2 -2
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +2 -2
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +9 -1
- package/lib/node/dlob/DLOB.d.ts +6 -1
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +201 -138
- package/lib/node/dlob/DLOBNode.d.ts +5 -2
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +7 -0
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +37 -32
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +8 -7
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +19 -12
- package/lib/node/events/eventList.d.ts +3 -3
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +4 -1
- package/lib/node/events/eventSubscriber.d.ts +5 -2
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +75 -26
- package/lib/node/events/eventsServerLogProvider.d.ts +2 -2
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +15 -8
- package/lib/node/events/fetchLogs.d.ts +1 -1
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +4 -2
- package/lib/node/events/pollingLogProvider.d.ts +2 -2
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +1 -0
- package/lib/node/events/txEventCache.d.ts +3 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +6 -2
- package/lib/node/events/types.d.ts +2 -4
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +0 -2
- package/lib/node/events/webSocketLogProvider.d.ts +2 -2
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +5 -2
- package/lib/node/factory/bigNum.js +1 -1
- package/lib/node/idl/velocity.d.ts +1243 -1586
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +1234 -1577
- package/lib/node/index.d.ts +0 -2
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +0 -2
- package/lib/node/jupiter/jupiterClient.d.ts +1 -1
- package/lib/node/jupiter/jupiterClient.d.ts.map +1 -1
- package/lib/node/jupiter/jupiterClient.js +18 -8
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +1 -0
- package/lib/node/math/amm.d.ts +31 -13
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +77 -22
- package/lib/node/math/bankruptcy.js +1 -1
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +6 -6
- package/lib/node/math/insurance.d.ts +1 -1
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +4 -5
- package/lib/node/math/margin.d.ts +1 -9
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +3 -62
- package/lib/node/math/market.d.ts +4 -12
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +6 -40
- package/lib/node/math/oracles.d.ts +0 -3
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +1 -14
- package/lib/node/math/orders.d.ts +0 -5
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +2 -74
- package/lib/node/math/position.d.ts +1 -5
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +5 -10
- package/lib/node/math/repeg.d.ts +0 -1
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +1 -23
- package/lib/node/math/spotBalance.d.ts +4 -4
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +6 -6
- package/lib/node/math/spotMarket.d.ts +0 -6
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +1 -16
- package/lib/node/math/spotPosition.d.ts +4 -4
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/state.d.ts +0 -2
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +1 -9
- package/lib/node/math/superStake.d.ts +3 -53
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +16 -13
- package/lib/node/math/trade.d.ts +2 -2
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +6 -6
- package/lib/node/memcmp.d.ts +0 -1
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +1 -10
- package/lib/node/oracles/oracleClientCache.d.ts +1 -1
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +3 -2
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +9 -3
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +3 -2
- package/lib/node/oracles/utils.d.ts +4 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +9 -1
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +8 -2
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +32 -8
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/pyth/types.d.ts +0 -1
- package/lib/node/pyth/types.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.d.ts +1 -1
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +2 -1
- package/lib/node/slot/SlothashSubscriber.d.ts +3 -2
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +11 -4
- package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
- package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
- package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts +3 -2
- package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/swift/signedMsgUserAccountSubscriber.js +13 -5
- package/lib/node/swift/swiftOrderSubscriber.d.ts +1 -1
- package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
- package/lib/node/swift/swiftOrderSubscriber.js +10 -5
- package/lib/node/testClient.js +3 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +16 -2
- package/lib/node/tx/baseTxSender.d.ts +4 -4
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +5 -4
- package/lib/node/tx/fastSingleTxSender.d.ts +3 -3
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +9 -5
- package/lib/node/tx/reportTransactionError.d.ts +2 -2
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +5 -1
- package/lib/node/tx/retryTxSender.d.ts +1 -1
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +4 -2
- package/lib/node/tx/txHandler.d.ts +9 -3
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +54 -40
- package/lib/node/tx/txParamProcessor.d.ts +4 -1
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +6 -0
- package/lib/node/tx/types.d.ts +1 -1
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.d.ts +1 -6
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +35 -13
- package/lib/node/types.d.ts +25 -68
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +2 -2
- package/lib/node/user.d.ts +21 -7
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +156 -132
- package/lib/node/userMap/WebsocketSubscription.d.ts +1 -1
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.d.ts +1 -1
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +10 -3
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +4 -0
- package/lib/node/userMap/userMap.d.ts +1 -1
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +36 -23
- package/lib/node/userMap/userStatsMap.d.ts +1 -1
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +18 -13
- package/lib/node/userStats.d.ts +7 -2
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +18 -4
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +4 -2
- package/lib/node/util/chainClock.d.ts +1 -1
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/computeUnits.d.ts +1 -1
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +6 -1
- package/lib/node/velocityClient.d.ts +93 -35
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +414 -280
- package/package.json +5 -3
- package/src/accounts/basicUserAccountSubscriber.ts +7 -5
- package/src/accounts/basicUserStatsAccountSubscriber.ts +9 -5
- package/src/accounts/bulkAccountLoader.ts +20 -7
- package/src/accounts/grpcAccountSubscriber.ts +11 -3
- package/src/accounts/grpcMultiAccountSubscriber.ts +24 -9
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +16 -12
- package/src/accounts/grpcProgramAccountSubscriber.ts +11 -3
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +17 -7
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +66 -39
- package/src/accounts/laserProgramAccountSubscriber.ts +3 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +5 -3
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +8 -3
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +11 -5
- package/src/accounts/pollingOracleAccountSubscriber.ts +17 -10
- package/src/accounts/pollingTokenAccountSubscriber.ts +17 -10
- package/src/accounts/pollingUserAccountSubscriber.ts +26 -20
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +12 -10
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +76 -30
- package/src/accounts/types.ts +6 -4
- package/src/accounts/utils.ts +10 -0
- package/src/accounts/webSocketAccountSubscriber.ts +23 -10
- package/src/accounts/webSocketAccountSubscriberV2.ts +23 -8
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +17 -2
- package/src/accounts/webSocketProgramAccountSubscriber.ts +29 -4
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +30 -4
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +29 -4
- package/src/accounts/webSocketUserAccountSubscriber.ts +11 -2
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +15 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +76 -48
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +74 -35
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +1 -6
- package/src/addresses/marketAddresses.ts +3 -2
- package/src/addresses/pda.ts +0 -25
- package/src/adminClient.ts +273 -303
- package/src/auctionSubscriber/auctionSubscriber.ts +7 -5
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +12 -5
- package/src/bankrun/bankrunConnection.ts +83 -39
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +5 -4
- package/src/clock/clockSubscriber.ts +10 -9
- package/src/config.ts +8 -3
- package/src/constants/index.ts +1 -2
- package/src/constants/numericConstants.ts +3 -3
- package/src/constituentMap/constituentMap.ts +8 -1
- package/src/constituentMap/pollingConstituentAccountSubscriber.ts +4 -2
- package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +13 -4
- package/src/core/instructions/perpOrders.ts +14 -0
- package/src/core/remainingAccounts.ts +4 -4
- package/src/decode/user.ts +8 -1
- package/src/dlob/DLOB.ts +296 -172
- package/src/dlob/DLOBNode.ts +23 -3
- package/src/dlob/DLOBSubscriber.ts +51 -34
- package/src/dlob/NodeList.ts +8 -7
- package/src/dlob/orderBookLevels.ts +45 -25
- package/src/events/eventList.ts +4 -1
- package/src/events/eventSubscriber.ts +107 -49
- package/src/events/eventsServerLogProvider.ts +22 -13
- package/src/events/fetchLogs.ts +3 -3
- package/src/events/pollingLogProvider.ts +2 -2
- package/src/events/txEventCache.ts +8 -2
- package/src/events/types.ts +0 -8
- package/src/events/webSocketLogProvider.ts +5 -3
- package/src/factory/bigNum.ts +2 -2
- package/src/idl/velocity.json +1234 -1577
- package/src/idl/velocity.ts +1234 -1577
- package/src/index.ts +0 -2
- package/src/jupiter/jupiterClient.ts +30 -10
- package/src/marginCalculation.ts +1 -0
- package/src/math/amm.ts +188 -33
- package/src/math/bankruptcy.ts +1 -1
- package/src/math/funding.ts +7 -6
- package/src/math/insurance.ts +6 -8
- package/src/math/margin.ts +5 -112
- package/src/math/market.ts +6 -96
- package/src/math/oracles.ts +0 -17
- package/src/math/orders.ts +1 -110
- package/src/math/position.ts +4 -16
- package/src/math/repeg.ts +0 -29
- package/src/math/spotBalance.ts +14 -10
- package/src/math/spotMarket.ts +2 -28
- package/src/math/spotPosition.ts +4 -4
- package/src/math/state.ts +0 -8
- package/src/math/superStake.ts +19 -65
- package/src/math/trade.ts +2 -6
- package/src/memcmp.ts +0 -9
- package/src/oracles/prelaunchOracleClient.ts +7 -2
- package/src/oracles/pythClient.ts +12 -3
- package/src/oracles/pythLazerClient.ts +7 -2
- package/src/oracles/utils.ts +15 -0
- package/src/orderSubscriber/OrderSubscriber.ts +10 -4
- package/src/priorityFee/heliusPriorityFeeMethod.ts +1 -1
- package/src/priorityFee/priorityFeeSubscriber.ts +45 -9
- package/src/priorityFee/solanaPriorityFeeMethod.ts +1 -1
- package/src/pyth/types.ts +0 -2
- package/src/slot/SlotSubscriber.ts +3 -3
- package/src/slot/SlothashSubscriber.ts +17 -6
- package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +5 -6
- package/src/swift/signedMsgUserAccountSubscriber.ts +16 -8
- package/src/swift/swiftOrderSubscriber.ts +10 -9
- package/src/testClient.ts +2 -2
- package/src/tokenFaucet.ts +22 -3
- package/src/tx/baseTxSender.ts +10 -10
- package/src/tx/fastSingleTxSender.ts +12 -8
- package/src/tx/reportTransactionError.ts +12 -7
- package/src/tx/retryTxSender.ts +6 -4
- package/src/tx/txHandler.ts +88 -43
- package/src/tx/txParamProcessor.ts +18 -3
- package/src/tx/types.ts +1 -1
- package/src/tx/whileValidTxSender.ts +51 -22
- package/src/types.ts +39 -75
- package/src/user.ts +200 -152
- package/src/userMap/WebsocketSubscription.ts +1 -1
- package/src/userMap/grpcSubscription.ts +1 -1
- package/src/userMap/referrerMap.ts +13 -9
- package/src/userMap/revenueShareEscrowMap.ts +6 -1
- package/src/userMap/userMap.ts +43 -25
- package/src/userMap/userStatsMap.ts +32 -19
- package/src/userStats.ts +21 -8
- package/src/util/TransactionConfirmationManager.ts +10 -2
- package/src/util/chainClock.ts +1 -1
- package/src/util/computeUnits.ts +7 -3
- package/src/velocityClient.ts +536 -383
- package/tests/amm/test.ts +138 -0
- package/tests/dlob/helpers.ts +6 -1
- package/tsconfig.json +1 -0
- package/lib/browser/constants/insuranceFund.d.ts +0 -5
- package/lib/browser/constants/insuranceFund.js +0 -9
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +0 -37
- package/lib/browser/tx/forwardOnlyTxSender.js +0 -92
- package/lib/browser/util/tps.d.ts +0 -2
- package/lib/browser/util/tps.js +0 -16
- package/lib/node/constants/insuranceFund.d.ts +0 -6
- package/lib/node/constants/insuranceFund.d.ts.map +0 -1
- package/lib/node/constants/insuranceFund.js +0 -9
- package/lib/node/tx/forwardOnlyTxSender.d.ts +0 -38
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +0 -1
- package/lib/node/tx/forwardOnlyTxSender.js +0 -92
- package/lib/node/util/tps.d.ts +0 -3
- package/lib/node/util/tps.d.ts.map +0 -1
- package/lib/node/util/tps.js +0 -16
- package/src/constants/insuranceFund.ts +0 -8
- package/src/tx/forwardOnlyTxSender.ts +0 -145
- package/src/util/tps.ts +0 -27
|
@@ -5,6 +5,15 @@ const types_1 = require("./types");
|
|
|
5
5
|
const events_1 = require("events");
|
|
6
6
|
const webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
|
|
7
7
|
class WebSocketUserAccountSubscriber {
|
|
8
|
+
get userDataAccountSubscriber() {
|
|
9
|
+
if (!this._userDataAccountSubscriber) {
|
|
10
|
+
throw new Error('userDataAccountSubscriber accessed before subscribe()');
|
|
11
|
+
}
|
|
12
|
+
return this._userDataAccountSubscriber;
|
|
13
|
+
}
|
|
14
|
+
set userDataAccountSubscriber(subscriber) {
|
|
15
|
+
this._userDataAccountSubscriber = subscriber;
|
|
16
|
+
}
|
|
8
17
|
constructor(program, userAccountPublicKey, resubOpts, commitment) {
|
|
9
18
|
this.isSubscribed = false;
|
|
10
19
|
this.program = program;
|
|
@@ -12,11 +12,13 @@ export declare class WebSocketUserStatsAccountSubscriber implements UserStatsAcc
|
|
|
12
12
|
program: VelocityProgram;
|
|
13
13
|
eventEmitter: StrictEventEmitter<EventEmitter, UserStatsAccountEvents>;
|
|
14
14
|
userStatsAccountPublicKey: PublicKey;
|
|
15
|
-
|
|
15
|
+
private _userStatsAccountSubscriber?;
|
|
16
|
+
get userStatsAccountSubscriber(): AccountSubscriber<UserStatsAccount>;
|
|
17
|
+
set userStatsAccountSubscriber(subscriber: AccountSubscriber<UserStatsAccount>);
|
|
16
18
|
constructor(program: VelocityProgram, userStatsAccountPublicKey: PublicKey, resubOpts?: ResubOpts, commitment?: Commitment);
|
|
17
19
|
subscribe(userStatsAccount?: UserStatsAccount): Promise<boolean>;
|
|
18
20
|
fetch(): Promise<void>;
|
|
19
21
|
unsubscribe(): Promise<void>;
|
|
20
22
|
assertIsSubscribed(): void;
|
|
21
|
-
getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount
|
|
23
|
+
getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined;
|
|
22
24
|
}
|
|
@@ -5,6 +5,15 @@ const types_1 = require("./types");
|
|
|
5
5
|
const events_1 = require("events");
|
|
6
6
|
const webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
|
|
7
7
|
class WebSocketUserStatsAccountSubscriber {
|
|
8
|
+
get userStatsAccountSubscriber() {
|
|
9
|
+
if (!this._userStatsAccountSubscriber) {
|
|
10
|
+
throw new Error('userStatsAccountSubscriber accessed before subscribe()');
|
|
11
|
+
}
|
|
12
|
+
return this._userStatsAccountSubscriber;
|
|
13
|
+
}
|
|
14
|
+
set userStatsAccountSubscriber(subscriber) {
|
|
15
|
+
this._userStatsAccountSubscriber = subscriber;
|
|
16
|
+
}
|
|
8
17
|
constructor(program, userStatsAccountPublicKey, resubOpts, commitment) {
|
|
9
18
|
this.isSubscribed = false;
|
|
10
19
|
this.program = program;
|
|
@@ -31,14 +31,14 @@ export declare class WebSocketVelocityClientAccountSubscriber implements Velocit
|
|
|
31
31
|
spotOracleStringMap: Map<number, string>;
|
|
32
32
|
oracleSubscribers: Map<string, AccountSubscriber<OraclePriceData>>;
|
|
33
33
|
delistedMarketSetting: DelistedMarketSetting;
|
|
34
|
-
initialPerpMarketAccountData
|
|
35
|
-
initialSpotMarketAccountData
|
|
36
|
-
initialOraclePriceData
|
|
34
|
+
initialPerpMarketAccountData?: Map<number, PerpMarketAccount>;
|
|
35
|
+
initialSpotMarketAccountData?: Map<number, SpotMarketAccount>;
|
|
36
|
+
initialOraclePriceData?: Map<string, OraclePriceData>;
|
|
37
37
|
customPerpMarketAccountSubscriber?: new (accountName: string, program: VelocityProgram, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => any, resubOpts?: ResubOpts, commitment?: Commitment) => AccountSubscriber<any>;
|
|
38
38
|
customOracleAccountSubscriber?: new (accountName: string, program: VelocityProgram, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => any, resubOpts?: ResubOpts, commitment?: Commitment) => AccountSubscriber<any>;
|
|
39
39
|
protected isSubscribing: boolean;
|
|
40
|
-
protected subscriptionPromise: Promise<boolean>;
|
|
41
40
|
protected subscriptionPromiseResolver: (val: boolean) => void;
|
|
41
|
+
protected subscriptionPromise: Promise<boolean>;
|
|
42
42
|
constructor(program: VelocityProgram, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting, resubOpts?: ResubOpts, commitment?: Commitment, customPerpMarketAccountSubscriber?: new (accountName: string, program: VelocityProgram, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => any, resubOpts?: ResubOpts, commitment?: Commitment) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>, customOracleAccountSubscriber?: new (accountName: string, program: VelocityProgram, accountPublicKey: PublicKey, decodeBuffer?: (buffer: Buffer) => any, resubOpts?: ResubOpts, commitment?: Commitment) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>);
|
|
43
43
|
subscribe(): Promise<boolean>;
|
|
44
44
|
chunks: <T>(array: readonly T[], size: number) => T[][];
|
|
@@ -42,6 +42,8 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
42
42
|
this.spotOracleStringMap = new Map();
|
|
43
43
|
this.oracleSubscribers = new Map();
|
|
44
44
|
this.isSubscribing = false;
|
|
45
|
+
this.subscriptionPromiseResolver = () => { };
|
|
46
|
+
this.subscriptionPromise = Promise.resolve(false);
|
|
45
47
|
this.chunks = (array, size) => {
|
|
46
48
|
return new Array(Math.ceil(array.length / size))
|
|
47
49
|
.fill(null)
|
|
@@ -135,11 +137,15 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
135
137
|
const oracleAccountPubkeyChunks = this.chunks(this.oracleInfos.map((oracleInfo) => oracleInfo.publicKey), 75);
|
|
136
138
|
const oracleAccountInfos = (await Promise.all(oracleAccountPubkeyChunks.map((oracleAccountPublicKeysChunk) => connection.getMultipleAccountsInfo(oracleAccountPublicKeysChunk)))).flat();
|
|
137
139
|
this.initialOraclePriceData = new Map(this.oracleInfos.reduce((result, oracleInfo, i) => {
|
|
138
|
-
|
|
140
|
+
const oracleAccountInfo = oracleAccountInfos[i];
|
|
141
|
+
if (!oracleAccountInfo) {
|
|
139
142
|
return result;
|
|
140
143
|
}
|
|
141
144
|
const oracleClient = this.oracleClientCache.get(oracleInfo.source, connection, this.program);
|
|
142
|
-
|
|
145
|
+
if (!oracleClient) {
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(oracleAccountInfo.data);
|
|
143
149
|
result.push([
|
|
144
150
|
(0, oracleId_1.getOracleId)(oracleInfo.publicKey, oracleInfo.source),
|
|
145
151
|
oraclePriceData,
|
|
@@ -157,10 +163,11 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
157
163
|
return true;
|
|
158
164
|
}
|
|
159
165
|
async subscribeToPerpMarketAccount(marketIndex) {
|
|
166
|
+
var _a;
|
|
160
167
|
const perpMarketPublicKey = await (0, pda_1.getPerpMarketPublicKey)(this.program.programId, marketIndex);
|
|
161
168
|
const AccountSubscriberClass = this.customPerpMarketAccountSubscriber || webSocketAccountSubscriber_1.WebSocketAccountSubscriber;
|
|
162
169
|
const accountSubscriber = new AccountSubscriberClass('perpMarket', this.program, perpMarketPublicKey, undefined, this.resubOpts, this.commitment);
|
|
163
|
-
const initialPerpMarketData = this.initialPerpMarketAccountData.get(marketIndex);
|
|
170
|
+
const initialPerpMarketData = (_a = this.initialPerpMarketAccountData) === null || _a === void 0 ? void 0 : _a.get(marketIndex);
|
|
164
171
|
if (initialPerpMarketData) {
|
|
165
172
|
accountSubscriber.setData(initialPerpMarketData);
|
|
166
173
|
}
|
|
@@ -177,9 +184,10 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
177
184
|
return true;
|
|
178
185
|
}
|
|
179
186
|
async subscribeToSpotMarketAccount(marketIndex) {
|
|
187
|
+
var _a;
|
|
180
188
|
const marketPublicKey = await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, marketIndex);
|
|
181
189
|
const accountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('spotMarket', this.program, marketPublicKey, undefined, this.resubOpts, this.commitment);
|
|
182
|
-
const initialSpotMarketData = this.initialSpotMarketAccountData.get(marketIndex);
|
|
190
|
+
const initialSpotMarketData = (_a = this.initialSpotMarketAccountData) === null || _a === void 0 ? void 0 : _a.get(marketIndex);
|
|
183
191
|
if (initialSpotMarketData) {
|
|
184
192
|
accountSubscriber.setData(initialSpotMarketData);
|
|
185
193
|
}
|
|
@@ -198,13 +206,17 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
198
206
|
return true;
|
|
199
207
|
}
|
|
200
208
|
async subscribeToOracle(oracleInfo) {
|
|
209
|
+
var _a;
|
|
201
210
|
const oracleId = (0, oracleId_1.getOracleId)(oracleInfo.publicKey, oracleInfo.source);
|
|
202
211
|
const client = this.oracleClientCache.get(oracleInfo.source, this.program.provider.connection, this.program);
|
|
212
|
+
if (!client) {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
203
215
|
const AccountSubscriberClass = this.customOracleAccountSubscriber || webSocketAccountSubscriber_1.WebSocketAccountSubscriber;
|
|
204
216
|
const accountSubscriber = new AccountSubscriberClass('oracle', this.program, oracleInfo.publicKey, (buffer) => {
|
|
205
217
|
return client.getOraclePriceDataFromBuffer(buffer);
|
|
206
218
|
}, this.resubOpts, this.commitment);
|
|
207
|
-
const initialOraclePriceData = this.initialOraclePriceData.get(oracleId);
|
|
219
|
+
const initialOraclePriceData = (_a = this.initialOraclePriceData) === null || _a === void 0 ? void 0 : _a.get(oracleId);
|
|
208
220
|
if (initialOraclePriceData) {
|
|
209
221
|
accountSubscriber.setData(initialOraclePriceData);
|
|
210
222
|
}
|
|
@@ -229,16 +241,20 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
229
241
|
if (!this.isSubscribed) {
|
|
230
242
|
return;
|
|
231
243
|
}
|
|
244
|
+
if (!this.stateAccountSubscriber) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
232
247
|
const promises = [this.stateAccountSubscriber.fetch()]
|
|
233
248
|
.concat(Array.from(this.perpMarketAccountSubscribers.values()).map((subscriber) => subscriber.fetch()))
|
|
234
249
|
.concat(Array.from(this.spotMarketAccountSubscribers.values()).map((subscriber) => subscriber.fetch()));
|
|
235
250
|
await Promise.all(promises);
|
|
236
251
|
}
|
|
237
252
|
async unsubscribe() {
|
|
253
|
+
var _a;
|
|
238
254
|
if (!this.isSubscribed) {
|
|
239
255
|
return;
|
|
240
256
|
}
|
|
241
|
-
await this.stateAccountSubscriber.unsubscribe();
|
|
257
|
+
await ((_a = this.stateAccountSubscriber) === null || _a === void 0 ? void 0 : _a.unsubscribe());
|
|
242
258
|
await this.unsubscribeFromMarketAccounts();
|
|
243
259
|
await this.unsubscribeFromSpotMarketAccounts();
|
|
244
260
|
await this.unsubscribeFromOracles();
|
|
@@ -315,21 +331,21 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
315
331
|
await Promise.all(addOraclePromises);
|
|
316
332
|
}
|
|
317
333
|
async handleDelistedMarkets() {
|
|
334
|
+
var _a, _b;
|
|
318
335
|
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Subscribe) {
|
|
319
336
|
return;
|
|
320
337
|
}
|
|
321
338
|
const { perpMarketIndexes, oracles } = (0, utils_1.findDelistedPerpMarketsAndOracles)(this.getMarketAccountsAndSlots(), this.getSpotMarketAccountsAndSlots());
|
|
322
339
|
for (const perpMarketIndex of perpMarketIndexes) {
|
|
323
|
-
await this.perpMarketAccountSubscribers
|
|
324
|
-
.get(perpMarketIndex)
|
|
325
|
-
.unsubscribe();
|
|
340
|
+
await ((_a = this.perpMarketAccountSubscribers
|
|
341
|
+
.get(perpMarketIndex)) === null || _a === void 0 ? void 0 : _a.unsubscribe());
|
|
326
342
|
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
|
|
327
343
|
this.perpMarketAccountSubscribers.delete(perpMarketIndex);
|
|
328
344
|
}
|
|
329
345
|
}
|
|
330
346
|
for (const oracle of oracles) {
|
|
331
347
|
const oracleId = (0, oracleId_1.getOracleId)(oracle.publicKey, oracle.source);
|
|
332
|
-
await this.oracleSubscribers.get(oracleId).unsubscribe();
|
|
348
|
+
await ((_b = this.oracleSubscribers.get(oracleId)) === null || _b === void 0 ? void 0 : _b.unsubscribe());
|
|
333
349
|
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
|
|
334
350
|
this.oracleSubscribers.delete(oracleId);
|
|
335
351
|
}
|
|
@@ -341,24 +357,36 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
341
357
|
}
|
|
342
358
|
}
|
|
343
359
|
getStateAccountAndSlot() {
|
|
360
|
+
var _a;
|
|
344
361
|
this.assertIsSubscribed();
|
|
345
|
-
|
|
362
|
+
const dataAndSlot = (_a = this.stateAccountSubscriber) === null || _a === void 0 ? void 0 : _a.dataAndSlot;
|
|
363
|
+
if (!dataAndSlot) {
|
|
364
|
+
throw new Error('State account data not available');
|
|
365
|
+
}
|
|
366
|
+
return dataAndSlot;
|
|
346
367
|
}
|
|
347
368
|
getMarketAccountAndSlot(marketIndex) {
|
|
369
|
+
var _a;
|
|
348
370
|
this.assertIsSubscribed();
|
|
349
|
-
return this.perpMarketAccountSubscribers.get(marketIndex).dataAndSlot;
|
|
371
|
+
return (_a = this.perpMarketAccountSubscribers.get(marketIndex)) === null || _a === void 0 ? void 0 : _a.dataAndSlot;
|
|
350
372
|
}
|
|
351
373
|
getMarketAccountsAndSlots() {
|
|
352
|
-
return Array.from(this.perpMarketAccountSubscribers.values())
|
|
374
|
+
return Array.from(this.perpMarketAccountSubscribers.values())
|
|
375
|
+
.map((subscriber) => subscriber.dataAndSlot)
|
|
376
|
+
.filter((dataAndSlot) => dataAndSlot !== undefined);
|
|
353
377
|
}
|
|
354
378
|
getSpotMarketAccountAndSlot(marketIndex) {
|
|
379
|
+
var _a;
|
|
355
380
|
this.assertIsSubscribed();
|
|
356
|
-
return this.spotMarketAccountSubscribers.get(marketIndex).dataAndSlot;
|
|
381
|
+
return (_a = this.spotMarketAccountSubscribers.get(marketIndex)) === null || _a === void 0 ? void 0 : _a.dataAndSlot;
|
|
357
382
|
}
|
|
358
383
|
getSpotMarketAccountsAndSlots() {
|
|
359
|
-
return Array.from(this.spotMarketAccountSubscribers.values())
|
|
384
|
+
return Array.from(this.spotMarketAccountSubscribers.values())
|
|
385
|
+
.map((subscriber) => subscriber.dataAndSlot)
|
|
386
|
+
.filter((dataAndSlot) => dataAndSlot !== undefined);
|
|
360
387
|
}
|
|
361
388
|
getOraclePriceDataAndSlot(oracleId) {
|
|
389
|
+
var _a;
|
|
362
390
|
this.assertIsSubscribed();
|
|
363
391
|
if (oracleId === ORACLE_DEFAULT_ID) {
|
|
364
392
|
return {
|
|
@@ -366,7 +394,7 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
366
394
|
slot: 0,
|
|
367
395
|
};
|
|
368
396
|
}
|
|
369
|
-
return this.oracleSubscribers.get(oracleId).dataAndSlot;
|
|
397
|
+
return (_a = this.oracleSubscribers.get(oracleId)) === null || _a === void 0 ? void 0 : _a.dataAndSlot;
|
|
370
398
|
}
|
|
371
399
|
getOraclePriceDataAndSlotForPerpMarket(marketIndex) {
|
|
372
400
|
const perpMarketAccount = this.getMarketAccountAndSlot(marketIndex);
|
|
@@ -375,8 +403,8 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
375
403
|
if (!perpMarketAccount || !oracleId) {
|
|
376
404
|
return undefined;
|
|
377
405
|
}
|
|
378
|
-
if (!perpMarketAccount.data.oracle.equals(oracle)) {
|
|
379
|
-
// If the oracle has changed
|
|
406
|
+
if (!oracle || !perpMarketAccount.data.oracle.equals(oracle)) {
|
|
407
|
+
// If the oracle has changed (or not yet cached), update the oracle map in background
|
|
380
408
|
this.setPerpOracleMap();
|
|
381
409
|
}
|
|
382
410
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
@@ -388,8 +416,8 @@ class WebSocketVelocityClientAccountSubscriber {
|
|
|
388
416
|
if (!spotMarketAccount || !oracleId) {
|
|
389
417
|
return undefined;
|
|
390
418
|
}
|
|
391
|
-
if (!spotMarketAccount.data.oracle.equals(oracle)) {
|
|
392
|
-
// If the oracle has changed
|
|
419
|
+
if (!oracle || !spotMarketAccount.data.oracle.equals(oracle)) {
|
|
420
|
+
// If the oracle has changed (or not yet cached), update the oracle map in background
|
|
393
421
|
this.setSpotOracleMap();
|
|
394
422
|
}
|
|
395
423
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
@@ -23,9 +23,13 @@ export declare class WebSocketVelocityClientAccountSubscriberV2 implements Veloc
|
|
|
23
23
|
skipInitialData: boolean;
|
|
24
24
|
eventEmitter: StrictEventEmitter<EventEmitter, VelocityClientAccountEvents>;
|
|
25
25
|
stateAccountSubscriber?: WebSocketAccountSubscriberV2<StateAccount>;
|
|
26
|
-
|
|
26
|
+
private _perpMarketAllAccountsSubscriber?;
|
|
27
|
+
get perpMarketAllAccountsSubscriber(): WebSocketProgramAccountsSubscriberV2<PerpMarketAccount>;
|
|
28
|
+
set perpMarketAllAccountsSubscriber(subscriber: WebSocketProgramAccountsSubscriberV2<PerpMarketAccount>);
|
|
27
29
|
perpMarketAccountLatestData: Map<number, DataAndSlot<PerpMarketAccount>>;
|
|
28
|
-
|
|
30
|
+
private _spotMarketAllAccountsSubscriber?;
|
|
31
|
+
get spotMarketAllAccountsSubscriber(): WebSocketProgramAccountsSubscriberV2<SpotMarketAccount>;
|
|
32
|
+
set spotMarketAllAccountsSubscriber(subscriber: WebSocketProgramAccountsSubscriberV2<SpotMarketAccount>);
|
|
29
33
|
spotMarketAccountLatestData: Map<number, DataAndSlot<SpotMarketAccount>>;
|
|
30
34
|
perpOracleMap: Map<number, PublicKey>;
|
|
31
35
|
perpOracleStringMap: Map<number, string>;
|
|
@@ -37,8 +41,8 @@ export declare class WebSocketVelocityClientAccountSubscriberV2 implements Veloc
|
|
|
37
41
|
initialSpotMarketAccountData: Map<number, SpotMarketAccount>;
|
|
38
42
|
initialOraclePriceData: Map<string, OraclePriceData>;
|
|
39
43
|
protected isSubscribing: boolean;
|
|
44
|
+
private subscriptionPromiseResolver;
|
|
40
45
|
protected subscriptionPromise: Promise<boolean>;
|
|
41
|
-
protected subscriptionPromiseResolver: (val: boolean) => void;
|
|
42
46
|
private rpc;
|
|
43
47
|
private rpcSubscriptions;
|
|
44
48
|
constructor(program: VelocityProgram, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting, resubOpts?: ResubOpts, commitment?: Commitment, skipInitialData?: boolean);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WebSocketVelocityClientAccountSubscriberV2 = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
5
6
|
const types_2 = require("../types");
|
|
6
7
|
const events_1 = require("events");
|
|
7
8
|
const pda_1 = require("../addresses/pda");
|
|
@@ -10,7 +11,7 @@ const gill_1 = require("gill");
|
|
|
10
11
|
const oracleClientCache_1 = require("../oracles/oracleClientCache");
|
|
11
12
|
const quoteAssetOracleClient_1 = require("../oracles/quoteAssetOracleClient");
|
|
12
13
|
const config_1 = require("../config");
|
|
13
|
-
const
|
|
14
|
+
const utils_2 = require("./utils");
|
|
14
15
|
const oracleId_1 = require("../oracles/oracleId");
|
|
15
16
|
const types_3 = require("../types");
|
|
16
17
|
const memcmp_1 = require("../memcmp");
|
|
@@ -18,6 +19,24 @@ const webSocketProgramAccountsSubscriberV2_1 = require("./webSocketProgramAccoun
|
|
|
18
19
|
const webSocketAccountSubscriberV2_1 = require("./webSocketAccountSubscriberV2");
|
|
19
20
|
const ORACLE_DEFAULT_ID = (0, oracleId_1.getOracleId)(web3_js_1.PublicKey.default, types_3.OracleSource.QUOTE_ASSET);
|
|
20
21
|
class WebSocketVelocityClientAccountSubscriberV2 {
|
|
22
|
+
get perpMarketAllAccountsSubscriber() {
|
|
23
|
+
if (!this._perpMarketAllAccountsSubscriber) {
|
|
24
|
+
throw new Error('perpMarketAllAccountsSubscriber accessed before subscribe()');
|
|
25
|
+
}
|
|
26
|
+
return this._perpMarketAllAccountsSubscriber;
|
|
27
|
+
}
|
|
28
|
+
set perpMarketAllAccountsSubscriber(subscriber) {
|
|
29
|
+
this._perpMarketAllAccountsSubscriber = subscriber;
|
|
30
|
+
}
|
|
31
|
+
get spotMarketAllAccountsSubscriber() {
|
|
32
|
+
if (!this._spotMarketAllAccountsSubscriber) {
|
|
33
|
+
throw new Error('spotMarketAllAccountsSubscriber accessed before subscribe()');
|
|
34
|
+
}
|
|
35
|
+
return this._spotMarketAllAccountsSubscriber;
|
|
36
|
+
}
|
|
37
|
+
set spotMarketAllAccountsSubscriber(subscriber) {
|
|
38
|
+
this._spotMarketAllAccountsSubscriber = subscriber;
|
|
39
|
+
}
|
|
21
40
|
constructor(program, perpMarketIndexes, spotMarketIndexes, oracleInfos, shouldFindAllMarketsAndOracles, delistedMarketSetting, resubOpts, commitment, skipInitialData) {
|
|
22
41
|
this.oracleClientCache = new oracleClientCache_1.OracleClientCache();
|
|
23
42
|
this.skipInitialData = true;
|
|
@@ -28,7 +47,12 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
28
47
|
this.spotOracleMap = new Map();
|
|
29
48
|
this.spotOracleStringMap = new Map();
|
|
30
49
|
this.oracleSubscribers = new Map();
|
|
50
|
+
this.initialPerpMarketAccountData = new Map();
|
|
51
|
+
this.initialSpotMarketAccountData = new Map();
|
|
52
|
+
this.initialOraclePriceData = new Map();
|
|
31
53
|
this.isSubscribing = false;
|
|
54
|
+
this.subscriptionPromiseResolver = () => { };
|
|
55
|
+
this.subscriptionPromise = Promise.resolve(false);
|
|
32
56
|
this.chunks = (array, size) => {
|
|
33
57
|
const result = [];
|
|
34
58
|
for (let i = 0; i < array.length; i += size) {
|
|
@@ -177,9 +201,7 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
177
201
|
this.isSubscribed = true;
|
|
178
202
|
this.isSubscribing = false;
|
|
179
203
|
// Before calling subscriptionPromiseResolver, check if it's defined
|
|
180
|
-
|
|
181
|
-
this.subscriptionPromiseResolver(true);
|
|
182
|
-
}
|
|
204
|
+
this.subscriptionPromiseResolver(true);
|
|
183
205
|
return true;
|
|
184
206
|
}
|
|
185
207
|
catch (error) {
|
|
@@ -223,11 +245,15 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
223
245
|
const oracleAccountPubkeyChunks = this.chunks(this.oracleInfos.map((oracleInfo) => oracleInfo.publicKey), 100);
|
|
224
246
|
const oracleAccountInfos = (await Promise.all(oracleAccountPubkeyChunks.map((oracleAccountPublicKeysChunk) => connection.getMultipleAccountsInfo(oracleAccountPublicKeysChunk)))).flat();
|
|
225
247
|
this.initialOraclePriceData = new Map(this.oracleInfos.reduce((result, oracleInfo, i) => {
|
|
226
|
-
|
|
248
|
+
const oracleAccountInfo = oracleAccountInfos[i];
|
|
249
|
+
if (!oracleAccountInfo) {
|
|
227
250
|
return result;
|
|
228
251
|
}
|
|
229
252
|
const oracleClient = this.oracleClientCache.get(oracleInfo.source, connection, this.program);
|
|
230
|
-
|
|
253
|
+
if (!oracleClient) {
|
|
254
|
+
return result;
|
|
255
|
+
}
|
|
256
|
+
const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(oracleAccountInfo.data);
|
|
231
257
|
result.push([
|
|
232
258
|
(0, oracleId_1.getOracleId)(oracleInfo.publicKey, oracleInfo.source),
|
|
233
259
|
oraclePriceData,
|
|
@@ -265,6 +291,9 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
265
291
|
try {
|
|
266
292
|
const oracleId = (0, oracleId_1.getOracleId)(oracleInfo.publicKey, oracleInfo.source);
|
|
267
293
|
const client = this.oracleClientCache.get(oracleInfo.source, this.program.provider.connection, this.program);
|
|
294
|
+
if (!client) {
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
268
297
|
const accountSubscriber = new webSocketAccountSubscriberV2_1.WebSocketAccountSubscriberV2('oracle', this.program, oracleInfo.publicKey, (buffer) => {
|
|
269
298
|
return client.getOraclePriceDataFromBuffer(buffer);
|
|
270
299
|
}, this.resubOpts, this.commitment, this.rpcSubscriptions, this.rpc);
|
|
@@ -369,11 +398,12 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
369
398
|
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Subscribe) {
|
|
370
399
|
return;
|
|
371
400
|
}
|
|
372
|
-
const { oracles } = (0,
|
|
401
|
+
const { oracles } = (0, utils_2.findDelistedPerpMarketsAndOracles)(this.getMarketAccountsAndSlots(), this.getSpotMarketAccountsAndSlots());
|
|
373
402
|
for (const oracle of oracles) {
|
|
374
403
|
const oracleId = (0, oracleId_1.getOracleId)(oracle.publicKey, oracle.source);
|
|
375
|
-
|
|
376
|
-
|
|
404
|
+
const subscriber = this.oracleSubscribers.get(oracleId);
|
|
405
|
+
if (subscriber) {
|
|
406
|
+
await subscriber.unsubscribe();
|
|
377
407
|
if (this.delistedMarketSetting === types_1.DelistedMarketSetting.Discard) {
|
|
378
408
|
this.oracleSubscribers.delete(oracleId);
|
|
379
409
|
}
|
|
@@ -386,8 +416,9 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
386
416
|
}
|
|
387
417
|
}
|
|
388
418
|
getStateAccountAndSlot() {
|
|
419
|
+
var _a;
|
|
389
420
|
this.assertIsSubscribed();
|
|
390
|
-
return this.stateAccountSubscriber.dataAndSlot;
|
|
421
|
+
return (0, utils_1.assertDataAndSlot)((_a = this.stateAccountSubscriber) === null || _a === void 0 ? void 0 : _a.dataAndSlot, 'State account data not available');
|
|
391
422
|
}
|
|
392
423
|
getMarketAccountAndSlot(marketIndex) {
|
|
393
424
|
this.assertIsSubscribed();
|
|
@@ -421,8 +452,8 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
421
452
|
if (!perpMarketAccount || !oracleId) {
|
|
422
453
|
return undefined;
|
|
423
454
|
}
|
|
424
|
-
if (!perpMarketAccount.data.oracle.equals(oracle)) {
|
|
425
|
-
// If the oracle has changed
|
|
455
|
+
if (!oracle || !perpMarketAccount.data.oracle.equals(oracle)) {
|
|
456
|
+
// If the oracle has changed (or not yet cached), update the oracle map in background
|
|
426
457
|
this.setPerpOracleMap();
|
|
427
458
|
}
|
|
428
459
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
@@ -434,8 +465,8 @@ class WebSocketVelocityClientAccountSubscriberV2 {
|
|
|
434
465
|
if (!spotMarketAccount || !oracleId) {
|
|
435
466
|
return undefined;
|
|
436
467
|
}
|
|
437
|
-
if (!spotMarketAccount.data.oracle.equals(oracle)) {
|
|
438
|
-
// If the oracle has changed
|
|
468
|
+
if (!oracle || !spotMarketAccount.data.oracle.equals(oracle)) {
|
|
469
|
+
// If the oracle has changed (or not yet cached), update the oracle map in background
|
|
439
470
|
this.setSpotOracleMap();
|
|
440
471
|
}
|
|
441
472
|
return this.getOraclePriceDataAndSlot(oracleId);
|
|
@@ -18,5 +18,5 @@ export declare class WebSocketProgramUserAccountSubscriber implements UserAccoun
|
|
|
18
18
|
fetch(): Promise<void>;
|
|
19
19
|
updateData(userAccount: UserAccount, slot: number): void;
|
|
20
20
|
unsubscribe(): Promise<void>;
|
|
21
|
-
getUserAccountAndSlot(): DataAndSlot<UserAccount
|
|
21
|
+
getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined;
|
|
22
22
|
}
|
|
@@ -45,9 +45,6 @@ class WebSocketProgramUserAccountSubscriber {
|
|
|
45
45
|
this.isSubscribed = false;
|
|
46
46
|
}
|
|
47
47
|
getUserAccountAndSlot() {
|
|
48
|
-
if (!this.userAccountAndSlot) {
|
|
49
|
-
throw new types_1.NotSubscribedError('Must subscribe before getting user account data');
|
|
50
|
-
}
|
|
51
48
|
return this.userAccountAndSlot;
|
|
52
49
|
}
|
|
53
50
|
}
|
|
@@ -5,8 +5,9 @@ const pda_1 = require("./pda");
|
|
|
5
5
|
const CACHE = new Map();
|
|
6
6
|
async function getMarketAddress(programId, marketIndex) {
|
|
7
7
|
const cacheKey = `${programId.toString()}-${marketIndex.toString()}`;
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const cached = CACHE.get(cacheKey);
|
|
9
|
+
if (cached !== undefined) {
|
|
10
|
+
return cached;
|
|
10
11
|
}
|
|
11
12
|
const publicKey = await (0, pda_1.getPerpMarketPublicKey)(programId, marketIndex);
|
|
12
13
|
CACHE.set(cacheKey, publicKey);
|
|
@@ -23,11 +23,9 @@ export declare function getInsuranceFundVaultPublicKey(programId: PublicKey, mar
|
|
|
23
23
|
export declare function getInsuranceFundStakeAccountPublicKey(programId: PublicKey, authority: PublicKey, marketIndex: number): PublicKey;
|
|
24
24
|
export declare function getVelocitySignerPublicKey(programId: PublicKey): PublicKey;
|
|
25
25
|
export declare function getReferrerNamePublicKeySync(programId: PublicKey, nameBuffer: number[]): PublicKey;
|
|
26
|
-
export declare function getProtocolIfSharesTransferConfigPublicKey(programId: PublicKey): PublicKey;
|
|
27
26
|
export declare function getPrelaunchOraclePublicKey(programId: PublicKey, marketIndex: number): PublicKey;
|
|
28
27
|
export declare function getPythLazerOraclePublicKey(progarmId: PublicKey, feedId: number): PublicKey;
|
|
29
28
|
export declare function getTokenProgramForSpotMarket(spotMarketAccount: SpotMarketAccount): PublicKey;
|
|
30
|
-
export declare function getIfRebalanceConfigPublicKey(programId: PublicKey, inMarketIndex: number, outMarketIndex: number): PublicKey;
|
|
31
29
|
export declare function getRevenueShareAccountPublicKey(programId: PublicKey, authority: PublicKey): PublicKey;
|
|
32
30
|
export declare function getRevenueShareEscrowAccountPublicKey(programId: PublicKey, authority: PublicKey): PublicKey;
|
|
33
31
|
export declare function getLpPoolPublicKey(programId: PublicKey, lpPoolId: number): PublicKey;
|
|
@@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.getLpPoolTokenTokenAccountPublicKey = exports.getConstituentCorrelationsPublicKey = exports.getAmmCachePublicKey = exports.getConstituentVaultPublicKey = exports.getConstituentPublicKey = exports.getConstituentTargetBasePublicKey = exports.getAmmConstituentMappingPublicKey = exports.getLpPoolTokenVaultPublicKey = exports.getLpPoolPublicKey = exports.getRevenueShareEscrowAccountPublicKey = exports.getRevenueShareAccountPublicKey = exports.
|
|
26
|
+
exports.getLpPoolTokenTokenAccountPublicKey = exports.getConstituentCorrelationsPublicKey = exports.getAmmCachePublicKey = exports.getConstituentVaultPublicKey = exports.getConstituentPublicKey = exports.getConstituentTargetBasePublicKey = exports.getAmmConstituentMappingPublicKey = exports.getLpPoolTokenVaultPublicKey = exports.getLpPoolPublicKey = exports.getRevenueShareEscrowAccountPublicKey = exports.getRevenueShareAccountPublicKey = exports.getTokenProgramForSpotMarket = exports.getPythLazerOraclePublicKey = exports.getPrelaunchOraclePublicKey = exports.getReferrerNamePublicKeySync = exports.getVelocitySignerPublicKey = exports.getInsuranceFundStakeAccountPublicKey = exports.getInsuranceFundVaultPublicKey = exports.getSpotMarketVaultPublicKey = exports.getSpotMarketPublicKeySync = exports.getSpotMarketPublicKey = exports.getPerpMarketPublicKeySync = exports.getPerpMarketPublicKey = exports.getSignedMsgWsDelegatesAccountPublicKey = exports.getSignedMsgUserAccountPublicKey = exports.getUserStatsAccountPublicKey = exports.getUserAccountPublicKeySync = exports.getUserAccountPublicKey = exports.getUserAccountPublicKeyAndNonce = exports.getVelocityStateAccountPublicKey = exports.getVelocityStateAccountPublicKeyAndNonce = void 0;
|
|
27
27
|
/**
|
|
28
28
|
* PDA derivation helpers for all Velocity protocol accounts.
|
|
29
29
|
* Covers: User, UserStats, PerpMarket, SpotMarket, InsuranceFundStake,
|
|
@@ -32,7 +32,6 @@ exports.getLpPoolTokenTokenAccountPublicKey = exports.getConstituentCorrelations
|
|
|
32
32
|
*/
|
|
33
33
|
const web3_js_1 = require("@solana/web3.js");
|
|
34
34
|
const anchor = __importStar(require("../isomorphic/anchor"));
|
|
35
|
-
const anchor_1 = require("../isomorphic/anchor");
|
|
36
35
|
const spl_token_1 = require("@solana/spl-token");
|
|
37
36
|
const types_1 = require("../types");
|
|
38
37
|
async function getVelocityStateAccountPublicKeyAndNonce(programId) {
|
|
@@ -145,10 +144,6 @@ function getReferrerNamePublicKeySync(programId, nameBuffer) {
|
|
|
145
144
|
], programId)[0];
|
|
146
145
|
}
|
|
147
146
|
exports.getReferrerNamePublicKeySync = getReferrerNamePublicKeySync;
|
|
148
|
-
function getProtocolIfSharesTransferConfigPublicKey(programId) {
|
|
149
|
-
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(anchor.utils.bytes.utf8.encode('if_shares_transfer_config'))], programId)[0];
|
|
150
|
-
}
|
|
151
|
-
exports.getProtocolIfSharesTransferConfigPublicKey = getProtocolIfSharesTransferConfigPublicKey;
|
|
152
147
|
function getPrelaunchOraclePublicKey(programId, marketIndex) {
|
|
153
148
|
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
154
149
|
Buffer.from(anchor.utils.bytes.utf8.encode('prelaunch_oracle')),
|
|
@@ -174,14 +169,6 @@ function getTokenProgramForSpotMarket(spotMarketAccount) {
|
|
|
174
169
|
return spl_token_1.TOKEN_PROGRAM_ID;
|
|
175
170
|
}
|
|
176
171
|
exports.getTokenProgramForSpotMarket = getTokenProgramForSpotMarket;
|
|
177
|
-
function getIfRebalanceConfigPublicKey(programId, inMarketIndex, outMarketIndex) {
|
|
178
|
-
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
179
|
-
Buffer.from(anchor.utils.bytes.utf8.encode('if_rebalance_config')),
|
|
180
|
-
new anchor_1.BN(inMarketIndex).toArrayLike(Buffer, 'le', 2),
|
|
181
|
-
new anchor_1.BN(outMarketIndex).toArrayLike(Buffer, 'le', 2),
|
|
182
|
-
], programId)[0];
|
|
183
|
-
}
|
|
184
|
-
exports.getIfRebalanceConfigPublicKey = getIfRebalanceConfigPublicKey;
|
|
185
172
|
function getRevenueShareAccountPublicKey(programId, authority) {
|
|
186
173
|
return web3_js_1.PublicKey.findProgramAddressSync([
|
|
187
174
|
Buffer.from(anchor.utils.bytes.utf8.encode('REV_SHARE')),
|