@velocity-exchange/sdk 0.0.5 → 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/.prettierignore +1 -1
- package/CHANGELOG.md +35 -0
- package/README.md +30 -30
- package/bun.lock +24 -2
- 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 +9 -3
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +0 -4
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +19 -6
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -5
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +44 -23
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +4 -1
- 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 -5
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +69 -35
- package/lib/browser/accounts/types.d.ts +6 -12
- package/lib/browser/accounts/utils.d.ts +1 -0
- package/lib/browser/accounts/utils.js +10 -3
- 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 -8
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +52 -26
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -7
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +49 -20
- 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 +1 -9
- package/lib/browser/addresses/pda.js +4 -23
- package/lib/browser/adminClient.d.ts +25 -29
- package/lib/browser/adminClient.js +168 -169
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +2 -4
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +8 -10
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +2 -4
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +11 -10
- package/lib/browser/auctionSubscriber/types.d.ts +3 -2
- 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 +11 -20
- package/lib/browser/config.js +13 -36
- 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.d.ts +0 -2
- package/lib/browser/constituentMap/constituentMap.js +10 -6
- 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/VelocityCore.d.ts +9 -15
- package/lib/browser/core/VelocityCore.js +5 -7
- package/lib/browser/core/instructions/perpOrders.d.ts +14 -0
- package/lib/browser/core/instructions/perpOrders.js +14 -0
- package/lib/browser/core/instructions/withdraw.d.ts +1 -1
- package/lib/browser/core/instructions/withdraw.js +1 -1
- package/lib/browser/core/remainingAccounts.d.ts +2 -2
- package/lib/browser/core/remainingAccounts.js +5 -5
- package/lib/browser/decode/user.js +9 -1
- package/lib/browser/dlob/DLOB.d.ts +7 -2
- package/lib/browser/dlob/DLOB.js +205 -142
- package/lib/browser/dlob/DLOBNode.d.ts +5 -2
- package/lib/browser/dlob/DLOBNode.js +7 -0
- package/lib/browser/dlob/DLOBSubscriber.d.ts +0 -2
- package/lib/browser/dlob/DLOBSubscriber.js +39 -39
- package/lib/browser/dlob/NodeList.js +8 -7
- package/lib/browser/dlob/orderBookLevels.js +24 -17
- package/lib/browser/dlob/types.d.ts +0 -2
- package/lib/browser/events/eventList.js +4 -1
- package/lib/browser/events/eventSubscriber.d.ts +6 -3
- package/lib/browser/events/eventSubscriber.js +75 -26
- package/lib/browser/events/eventsServerLogProvider.d.ts +1 -1
- package/lib/browser/events/eventsServerLogProvider.js +17 -10
- package/lib/browser/events/fetchLogs.d.ts +1 -1
- package/lib/browser/events/fetchLogs.js +4 -2
- package/lib/browser/events/parse.js +14 -14
- 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 +3 -7
- package/lib/browser/events/types.js +1 -3
- 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/{node/idl/drift.d.ts → browser/idl/velocity.d.ts} +2412 -2481
- package/lib/browser/idl/{drift.json → velocity.json} +2265 -2333
- package/lib/browser/index.d.ts +1 -3
- package/lib/browser/index.js +1 -4
- 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 +87 -31
- package/lib/browser/math/auction.js +16 -12
- package/lib/browser/math/bankruptcy.js +1 -1
- package/lib/browser/math/builder.d.ts +18 -1
- package/lib/browser/math/builder.js +32 -1
- package/lib/browser/math/funding.js +30 -30
- package/lib/browser/math/insurance.d.ts +1 -1
- package/lib/browser/math/insurance.js +4 -5
- package/lib/browser/math/margin.d.ts +3 -11
- package/lib/browser/math/margin.js +10 -69
- package/lib/browser/math/market.d.ts +4 -12
- package/lib/browser/math/market.js +12 -46
- package/lib/browser/math/oracles.d.ts +4 -7
- package/lib/browser/math/oracles.js +24 -37
- package/lib/browser/math/orders.d.ts +2 -7
- package/lib/browser/math/orders.js +9 -81
- package/lib/browser/math/position.d.ts +0 -4
- package/lib/browser/math/position.js +6 -11
- 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 +11 -63
- package/lib/browser/math/superStake.js +29 -28
- package/lib/browser/math/trade.js +7 -7
- package/lib/browser/math/utils.d.ts +1 -1
- package/lib/browser/math/utils.js +1 -1
- 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 +5 -4
- 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 -3
- package/lib/browser/orderSubscriber/OrderSubscriber.js +16 -14
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +1 -1
- package/lib/browser/orderSubscriber/grpcSubscription.js +2 -2
- package/lib/browser/orderSubscriber/types.d.ts +0 -2
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +1 -1
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +2 -6
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +34 -18
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +0 -4
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +3 -11
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
- package/lib/browser/priorityFee/types.d.ts +3 -8
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +0 -8
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +1 -3
- package/lib/browser/pyth/pythLazerSubscriber.d.ts +1 -1
- package/lib/browser/pyth/pythLazerSubscriber.js +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/swap/UnifiedSwapClient.js +1 -1
- package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.d.ts +0 -3
- package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +5 -5
- package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +7 -7
- package/lib/browser/swift/signedMsgUserAccountSubscriber.js +14 -10
- package/lib/browser/swift/swiftOrderSubscriber.d.ts +7 -6
- package/lib/browser/swift/swiftOrderSubscriber.js +15 -16
- 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 +102 -157
- package/lib/browser/types.js +6 -2
- package/lib/browser/user.d.ts +22 -10
- package/lib/browser/user.js +174 -154
- package/lib/browser/userConfig.d.ts +3 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +1 -1
- package/lib/browser/userMap/WebsocketSubscription.js +1 -1
- package/lib/browser/userMap/grpcSubscription.d.ts +1 -1
- package/lib/browser/userMap/grpcSubscription.js +1 -1
- package/lib/browser/userMap/referrerMap.d.ts +0 -2
- package/lib/browser/userMap/referrerMap.js +10 -7
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +0 -2
- package/lib/browser/userMap/revenueShareEscrowMap.js +4 -4
- package/lib/browser/userMap/userMap.d.ts +3 -5
- package/lib/browser/userMap/userMap.js +39 -30
- package/lib/browser/userMap/userMapConfig.d.ts +3 -2
- package/lib/browser/userMap/userStatsMap.d.ts +1 -3
- package/lib/browser/userMap/userStatsMap.js +18 -17
- package/lib/browser/userStats.d.ts +7 -4
- package/lib/browser/userStats.js +28 -18
- package/lib/browser/userStatsConfig.d.ts +3 -2
- 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/util/ed25519Utils.d.ts +1 -1
- package/lib/browser/util/ed25519Utils.js +1 -1
- package/lib/browser/velocityClient.d.ts +144 -71
- package/lib/browser/velocityClient.js +653 -457
- package/lib/browser/velocityClientConfig.d.ts +0 -8
- 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 +9 -3
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +0 -4
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +19 -6
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +1 -5
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +44 -23
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +4 -1
- 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 -5
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +69 -35
- package/lib/node/accounts/types.d.ts +6 -12
- 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 +10 -3
- 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 -8
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +52 -26
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +7 -7
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +49 -20
- 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 +1 -9
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +4 -23
- package/lib/node/adminClient.d.ts +25 -29
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +168 -169
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +2 -4
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +8 -10
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +2 -4
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +11 -10
- package/lib/node/auctionSubscriber/types.d.ts +3 -2
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- 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 +11 -20
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +13 -36
- 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 +0 -2
- package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
- package/lib/node/constituentMap/constituentMap.js +10 -6
- 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/VelocityCore.d.ts +9 -15
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +5 -7
- 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/instructions/withdraw.d.ts +1 -1
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +1 -1
- 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 +5 -5
- 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 +7 -2
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +205 -142
- 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 +0 -2
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +39 -39
- 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 +24 -17
- package/lib/node/dlob/types.d.ts +0 -2
- package/lib/node/dlob/types.d.ts.map +1 -1
- 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 +6 -3
- 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 +17 -10
- 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/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +14 -14
- 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 +3 -7
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +1 -3
- 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/{browser/idl/drift.d.ts → node/idl/velocity.d.ts} +2413 -2480
- package/lib/node/idl/velocity.d.ts.map +1 -0
- package/lib/node/idl/{drift.json → velocity.json} +2265 -2333
- package/lib/node/index.d.ts +1 -3
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +1 -4
- 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 +87 -31
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +16 -12
- package/lib/node/math/bankruptcy.js +1 -1
- package/lib/node/math/builder.d.ts +18 -1
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +32 -1
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +30 -30
- 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 +3 -11
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +10 -69
- 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 +12 -46
- package/lib/node/math/oracles.d.ts +4 -7
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +24 -37
- package/lib/node/math/orders.d.ts +2 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +9 -81
- 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 +6 -11
- 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 +11 -63
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +29 -28
- 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 +7 -7
- package/lib/node/math/utils.d.ts +1 -1
- package/lib/node/math/utils.js +1 -1
- 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 +5 -4
- 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 -3
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +16 -14
- package/lib/node/orderSubscriber/WebsocketSubscription.js +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +2 -2
- package/lib/node/orderSubscriber/types.d.ts +0 -2
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- 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 +2 -6
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +34 -18
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +0 -4
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +3 -11
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/types.d.ts +3 -8
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +0 -8
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +1 -3
- package/lib/node/pyth/pythLazerSubscriber.d.ts +1 -1
- package/lib/node/pyth/pythLazerSubscriber.js +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/swap/UnifiedSwapClient.js +1 -1
- 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 +7 -7
- package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/swift/signedMsgUserAccountSubscriber.js +14 -10
- package/lib/node/swift/swiftOrderSubscriber.d.ts +7 -6
- package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
- package/lib/node/swift/swiftOrderSubscriber.js +15 -16
- 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 +100 -155
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +6 -2
- package/lib/node/user.d.ts +22 -10
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +174 -154
- package/lib/node/userConfig.d.ts +3 -2
- package/lib/node/userConfig.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.d.ts +1 -1
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +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/grpcSubscription.js +1 -1
- package/lib/node/userMap/referrerMap.d.ts +0 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +10 -7
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +0 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +4 -4
- package/lib/node/userMap/userMap.d.ts +3 -5
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +39 -30
- package/lib/node/userMap/userMapConfig.d.ts +3 -2
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +1 -3
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +18 -17
- package/lib/node/userStats.d.ts +7 -4
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -18
- package/lib/node/userStatsConfig.d.ts +3 -2
- package/lib/node/userStatsConfig.d.ts.map +1 -1
- 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/util/ed25519Utils.d.ts +1 -1
- package/lib/node/util/ed25519Utils.js +1 -1
- package/lib/node/velocityClient.d.ts +145 -72
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +653 -457
- package/lib/node/velocityClientConfig.d.ts +0 -8
- package/lib/node/velocityClientConfig.d.ts.map +1 -1
- package/package.json +10 -9
- package/scripts/deposit-isolated-positions.ts +2 -2
- package/scripts/find-flagged-users.ts +1 -1
- package/scripts/grpc-client-test-comparison.ts +4 -4
- package/scripts/grpc-multiuser-client-test-comparison.ts +2 -2
- package/scripts/single-grpc-client-test.ts +3 -3
- package/scripts/updateVersion.js +4 -4
- package/scripts/withdraw-isolated-positions.ts +2 -2
- 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 +12 -4
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +17 -14
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +69 -49
- package/src/accounts/laserProgramAccountSubscriber.ts +4 -1
- 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 +80 -41
- package/src/accounts/types.ts +8 -13
- package/src/accounts/utils.ts +12 -2
- 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 +79 -58
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +77 -45
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +1 -6
- package/src/addresses/marketAddresses.ts +3 -2
- package/src/addresses/pda.ts +3 -38
- package/src/adminClient.ts +285 -315
- package/src/auctionSubscriber/auctionSubscriber.ts +8 -11
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +13 -11
- package/src/auctionSubscriber/types.ts +3 -3
- 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 +16 -70
- package/src/constants/index.ts +1 -2
- package/src/constants/numericConstants.ts +3 -3
- package/src/constituentMap/constituentMap.ts +10 -7
- package/src/constituentMap/pollingConstituentAccountSubscriber.ts +4 -2
- package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +13 -4
- package/src/core/VelocityCore.ts +11 -20
- package/src/core/instructions/perpOrders.ts +14 -0
- package/src/core/instructions/withdraw.ts +2 -2
- package/src/core/remainingAccounts.ts +7 -7
- package/src/decode/user.ts +8 -1
- package/src/dlob/DLOB.ts +300 -176
- package/src/dlob/DLOBNode.ts +23 -3
- package/src/dlob/DLOBSubscriber.ts +53 -42
- package/src/dlob/NodeList.ts +8 -7
- package/src/dlob/orderBookLevels.ts +51 -25
- package/src/dlob/types.ts +0 -2
- package/src/events/eventList.ts +4 -1
- package/src/events/eventSubscriber.ts +108 -50
- package/src/events/eventsServerLogProvider.ts +24 -15
- package/src/events/fetchLogs.ts +3 -3
- package/src/events/parse.ts +14 -14
- package/src/events/pollingLogProvider.ts +2 -2
- package/src/events/txEventCache.ts +8 -2
- package/src/events/types.ts +4 -15
- package/src/events/webSocketLogProvider.ts +5 -3
- package/src/factory/bigNum.ts +2 -2
- package/src/idl/{drift.json → velocity.json} +2265 -2333
- package/src/idl/{drift.ts → velocity.ts} +2267 -2335
- package/src/index.ts +1 -6
- package/src/jupiter/jupiterClient.ts +30 -10
- package/src/margin/README.md +2 -2
- package/src/marginCalculation.ts +1 -0
- package/src/math/amm.ts +217 -40
- package/src/math/auction.ts +16 -12
- package/src/math/bankruptcy.ts +1 -1
- package/src/math/builder.ts +45 -1
- package/src/math/funding.ts +51 -47
- package/src/math/insurance.ts +6 -8
- package/src/math/margin.ts +12 -119
- package/src/math/market.ts +16 -98
- package/src/math/oracles.ts +29 -43
- package/src/math/orders.ts +13 -109
- package/src/math/position.ts +6 -12
- 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 +36 -85
- package/src/math/trade.ts +7 -3
- package/src/math/utils.ts +1 -1
- 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 +10 -5
- package/src/oracles/utils.ts +15 -0
- package/src/orderSubscriber/OrderSubscriber.ts +12 -12
- package/src/orderSubscriber/WebsocketSubscription.ts +1 -1
- package/src/orderSubscriber/grpcSubscription.ts +2 -2
- package/src/orderSubscriber/types.ts +0 -2
- package/src/priorityFee/heliusPriorityFeeMethod.ts +1 -1
- package/src/priorityFee/priorityFeeSubscriber.ts +50 -21
- package/src/priorityFee/priorityFeeSubscriberMap.ts +2 -10
- package/src/priorityFee/solanaPriorityFeeMethod.ts +1 -1
- package/src/priorityFee/types.ts +3 -13
- package/src/priorityFee/velocityPriorityFeeMethod.ts +0 -12
- package/src/pyth/pythLazerSubscriber.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/swap/UnifiedSwapClient.ts +1 -1
- package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +5 -6
- package/src/swift/signedMsgUserAccountSubscriber.ts +18 -16
- package/src/swift/swiftOrderSubscriber.ts +17 -21
- 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 +119 -173
- package/src/user.ts +208 -165
- package/src/userConfig.ts +1 -3
- package/src/userMap/WebsocketSubscription.ts +2 -2
- package/src/userMap/grpcSubscription.ts +2 -2
- package/src/userMap/referrerMap.ts +13 -13
- package/src/userMap/revenueShareEscrowMap.ts +6 -5
- package/src/userMap/userMap.ts +46 -32
- package/src/userMap/userMapConfig.ts +3 -3
- package/src/userMap/userStatsMap.ts +32 -23
- package/src/userStats.ts +22 -13
- package/src/userStatsConfig.ts +3 -3
- package/src/util/TransactionConfirmationManager.ts +10 -2
- package/src/util/chainClock.ts +1 -1
- package/src/util/computeUnits.ts +7 -3
- package/src/util/ed25519Utils.ts +1 -1
- package/src/velocityClient.ts +867 -600
- package/src/velocityClientConfig.ts +0 -10
- package/tests/{DriftCore → VelocityCore}/decode.test.ts +1 -1
- package/tests/{DriftCore → VelocityCore}/fill_trigger.test.ts +1 -1
- package/tests/{DriftCore → VelocityCore}/instructions.test.ts +1 -1
- package/tests/{DriftCore → VelocityCore}/pdas.test.ts +4 -2
- package/tests/amm/test.ts +138 -0
- package/tests/ci/verifyConstants.ts +24 -27
- package/tests/decode/test.ts +2 -2
- package/tests/dlob/helpers.ts +11 -10
- package/tests/events/parseLogsForCuUsage.ts +15 -15
- package/tests/user/helpers.ts +9 -9
- package/tests/user/test.ts +13 -10
- 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/deprecatedAlias.d.ts +0 -26
- package/lib/browser/util/deprecatedAlias.js +0 -10
- 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/idl/drift.d.ts.map +0 -1
- 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/deprecatedAlias.d.ts +0 -27
- package/lib/node/util/deprecatedAlias.d.ts.map +0 -1
- package/lib/node/util/deprecatedAlias.js +0 -10
- 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/deprecatedAlias.ts +0 -21
- package/src/util/tps.ts +0 -27
- /package/lib/browser/idl/{drift.js → velocity.js} +0 -0
- /package/lib/node/idl/{drift.js → velocity.js} +0 -0
- /package/tests/{DriftCore → VelocityCore}/perp_orders.test.ts +0 -0
- /package/tests/{DriftCore → VelocityCore}/remainingAccounts.test.ts +0 -0
- /package/tests/{DriftCore → VelocityCore}/settlement_liquidation.test.ts +0 -0
package/src/userConfig.ts
CHANGED
|
@@ -5,15 +5,13 @@ import { GrpcConfigs, UserAccountSubscriber } from './accounts/types';
|
|
|
5
5
|
import { WebSocketProgramAccountSubscriber } from './accounts/webSocketProgramAccountSubscriber';
|
|
6
6
|
import { UserAccount } from './types';
|
|
7
7
|
import { grpcMultiUserAccountSubscriber } from './accounts/grpcMultiUserAccountSubscriber';
|
|
8
|
-
import { AtLeastOne } from './util/deprecatedAlias';
|
|
9
8
|
|
|
10
9
|
type UserConfigBase = {
|
|
11
10
|
accountSubscription?: UserSubscriptionConfig;
|
|
12
11
|
userAccountPublicKey: PublicKey;
|
|
13
12
|
};
|
|
14
13
|
|
|
15
|
-
export type UserConfig = UserConfigBase &
|
|
16
|
-
AtLeastOne<'velocityClient', 'driftClient', VelocityClient>;
|
|
14
|
+
export type UserConfig = UserConfigBase & { velocityClient: VelocityClient };
|
|
17
15
|
|
|
18
16
|
export type UserSubscriptionConfig =
|
|
19
17
|
| {
|
|
@@ -14,7 +14,7 @@ export class WebsocketSubscription {
|
|
|
14
14
|
private additionalFilters?: MemcmpFilter[];
|
|
15
15
|
private decodeFn: (name: string, data: Buffer) => UserAccount;
|
|
16
16
|
|
|
17
|
-
private subscriber
|
|
17
|
+
private subscriber?: WebSocketProgramAccountSubscriber<UserAccount>;
|
|
18
18
|
|
|
19
19
|
constructor({
|
|
20
20
|
userMap,
|
|
@@ -54,7 +54,7 @@ export class WebsocketSubscription {
|
|
|
54
54
|
this.subscriber = new WebSocketProgramAccountSubscriber<UserAccount>(
|
|
55
55
|
'UserMap',
|
|
56
56
|
'user',
|
|
57
|
-
this.userMap.
|
|
57
|
+
this.userMap.velocityClient.program,
|
|
58
58
|
this.decodeFn,
|
|
59
59
|
{
|
|
60
60
|
filters,
|
|
@@ -15,7 +15,7 @@ export class grpcSubscription {
|
|
|
15
15
|
private additionalFilters?: MemcmpFilter[];
|
|
16
16
|
private decodeFn: (name: string, data: Buffer) => UserAccount;
|
|
17
17
|
|
|
18
|
-
private subscriber
|
|
18
|
+
private subscriber?: WebSocketProgramAccountSubscriber<UserAccount>;
|
|
19
19
|
|
|
20
20
|
constructor({
|
|
21
21
|
grpcConfigs,
|
|
@@ -56,7 +56,7 @@ export class grpcSubscription {
|
|
|
56
56
|
this.grpcConfigs,
|
|
57
57
|
'UserMap',
|
|
58
58
|
'user',
|
|
59
|
-
this.userMap.
|
|
59
|
+
this.userMap.velocityClient.program,
|
|
60
60
|
this.decodeFn,
|
|
61
61
|
{
|
|
62
62
|
filters,
|
|
@@ -29,14 +29,10 @@ export class ReferrerMap {
|
|
|
29
29
|
*/
|
|
30
30
|
private referrerReferrerInfoMap = new Map<string, ReferrerInfo>();
|
|
31
31
|
private velocityClient: VelocityClient;
|
|
32
|
-
/** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
|
|
33
|
-
private get driftClient(): VelocityClient {
|
|
34
|
-
return this.velocityClient;
|
|
35
|
-
}
|
|
36
32
|
private parallelSync: boolean;
|
|
37
33
|
|
|
38
34
|
private fetchPromise?: Promise<void>;
|
|
39
|
-
private fetchPromiseResolver: () => void;
|
|
35
|
+
private fetchPromiseResolver: () => void = () => {};
|
|
40
36
|
|
|
41
37
|
/**
|
|
42
38
|
* Creates a new UserStatsMap instance.
|
|
@@ -76,12 +72,16 @@ export class ReferrerMap {
|
|
|
76
72
|
this.velocityClient.program.programId,
|
|
77
73
|
new PublicKey(authority)
|
|
78
74
|
);
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
75
|
+
const accountInfo = await this.velocityClient.connection.getAccountInfo(
|
|
76
|
+
userStatsAccountPublicKey,
|
|
77
|
+
'processed'
|
|
78
|
+
);
|
|
79
|
+
if (!accountInfo) {
|
|
80
|
+
throw new Error(
|
|
81
|
+
`ReferrerMap: UserStats account not found for authority ${authority}`
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
const buffer = accountInfo.data;
|
|
85
85
|
|
|
86
86
|
const referrer = bs58.encode(buffer.subarray(40, 72));
|
|
87
87
|
|
|
@@ -177,7 +177,7 @@ export class ReferrerMap {
|
|
|
177
177
|
const rpcRequestArgs = [
|
|
178
178
|
this.velocityClient.program.programId.toBase58(),
|
|
179
179
|
{
|
|
180
|
-
commitment: this.velocityClient.opts
|
|
180
|
+
commitment: this.velocityClient.opts?.commitment,
|
|
181
181
|
filters: [getUserStatsFilter()],
|
|
182
182
|
encoding: 'base64',
|
|
183
183
|
dataSlice: {
|
|
@@ -217,7 +217,7 @@ export class ReferrerMap {
|
|
|
217
217
|
const rpcRequestArgs = [
|
|
218
218
|
this.velocityClient.program.programId.toBase58(),
|
|
219
219
|
{
|
|
220
|
-
commitment: this.velocityClient.opts
|
|
220
|
+
commitment: this.velocityClient.opts?.commitment,
|
|
221
221
|
filters: [getUserStatsFilter(), referrerFilter],
|
|
222
222
|
encoding: 'base64',
|
|
223
223
|
dataSlice: {
|
|
@@ -10,14 +10,10 @@ export class RevenueShareEscrowMap {
|
|
|
10
10
|
*/
|
|
11
11
|
private authorityEscrowMap = new Map<string, RevenueShareEscrowAccount>();
|
|
12
12
|
private velocityClient: VelocityClient;
|
|
13
|
-
/** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
|
|
14
|
-
private get driftClient(): VelocityClient {
|
|
15
|
-
return this.velocityClient;
|
|
16
|
-
}
|
|
17
13
|
private parallelSync: boolean;
|
|
18
14
|
|
|
19
15
|
private fetchPromise?: Promise<void>;
|
|
20
|
-
private fetchPromiseResolver: () => void;
|
|
16
|
+
private fetchPromiseResolver: () => void = () => {};
|
|
21
17
|
|
|
22
18
|
/**
|
|
23
19
|
* Creates a new RevenueShareEscrowMap instance.
|
|
@@ -134,6 +130,11 @@ export class RevenueShareEscrowMap {
|
|
|
134
130
|
),
|
|
135
131
|
'confirmed'
|
|
136
132
|
);
|
|
133
|
+
if (accountInfo === null) {
|
|
134
|
+
throw new Error(
|
|
135
|
+
`RevenueShareEscrow account not found for authority ${authority} during slowSync`
|
|
136
|
+
);
|
|
137
|
+
}
|
|
137
138
|
const escrowNew = (
|
|
138
139
|
this.velocityClient.program.account as any
|
|
139
140
|
).revenueShareEscrow.coder.accounts.decode(
|
package/src/userMap/userMap.ts
CHANGED
|
@@ -78,10 +78,6 @@ export interface UserMapInterface {
|
|
|
78
78
|
export class UserMap implements UserMapInterface {
|
|
79
79
|
private userMap = new Map<string, DataAndSlot<User>>();
|
|
80
80
|
velocityClient: VelocityClient;
|
|
81
|
-
/** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
|
|
82
|
-
public get driftClient(): VelocityClient {
|
|
83
|
-
return this.velocityClient;
|
|
84
|
-
}
|
|
85
81
|
eventEmitter: StrictEventEmitter<EventEmitter, UserEvents>;
|
|
86
82
|
private connection: Connection;
|
|
87
83
|
private commitment: Commitment;
|
|
@@ -89,23 +85,26 @@ export class UserMap implements UserMapInterface {
|
|
|
89
85
|
private filterByPoolId?: number;
|
|
90
86
|
private additionalFilters?: MemcmpFilter[];
|
|
91
87
|
private disableSyncOnTotalAccountsChange: boolean;
|
|
92
|
-
private lastNumberOfSubAccounts
|
|
88
|
+
private lastNumberOfSubAccounts?: BN;
|
|
93
89
|
private subscription:
|
|
94
90
|
| PollingSubscription
|
|
95
91
|
| WebsocketSubscription
|
|
96
92
|
| grpcSubscription;
|
|
97
93
|
private stateAccountUpdateCallback = async (state: StateAccount) => {
|
|
98
|
-
if (
|
|
94
|
+
if (
|
|
95
|
+
this.lastNumberOfSubAccounts === undefined ||
|
|
96
|
+
!state.numberOfSubAccounts.eq(this.lastNumberOfSubAccounts)
|
|
97
|
+
) {
|
|
99
98
|
await this.sync();
|
|
100
99
|
this.lastNumberOfSubAccounts = state.numberOfSubAccounts;
|
|
101
100
|
}
|
|
102
101
|
};
|
|
103
|
-
private decode;
|
|
102
|
+
private decode: (name: string, buffer: Buffer) => UserAccount;
|
|
104
103
|
private mostRecentSlot = 0;
|
|
105
104
|
private syncConfig: SyncConfig;
|
|
106
105
|
|
|
107
106
|
private syncPromise?: Promise<void>;
|
|
108
|
-
private syncPromiseResolver: () => void;
|
|
107
|
+
private syncPromiseResolver: () => void = () => {};
|
|
109
108
|
|
|
110
109
|
private throwOnFailedSync: boolean;
|
|
111
110
|
|
|
@@ -114,27 +113,27 @@ export class UserMap implements UserMapInterface {
|
|
|
114
113
|
*/
|
|
115
114
|
constructor(config: UserMapConfig) {
|
|
116
115
|
// Type-system guarantees at least one of the two is supplied.
|
|
117
|
-
this.velocityClient =
|
|
116
|
+
this.velocityClient = config.velocityClient!;
|
|
118
117
|
if (config.connection) {
|
|
119
118
|
this.connection = config.connection;
|
|
120
119
|
} else {
|
|
121
120
|
this.connection = this.velocityClient.connection;
|
|
122
121
|
}
|
|
123
122
|
this.commitment =
|
|
124
|
-
config.subscriptionConfig.type === 'websocket' ||
|
|
123
|
+
(config.subscriptionConfig.type === 'websocket' ||
|
|
125
124
|
config.subscriptionConfig.type === 'polling'
|
|
126
125
|
? config.subscriptionConfig.commitment ??
|
|
127
|
-
this.velocityClient.opts
|
|
128
|
-
: this.velocityClient.opts
|
|
126
|
+
this.velocityClient.opts?.commitment
|
|
127
|
+
: this.velocityClient.opts?.commitment) ?? 'confirmed';
|
|
129
128
|
this.includeIdle = config.includeIdle ?? false;
|
|
130
129
|
this.filterByPoolId = config.filterByPoolId;
|
|
131
130
|
this.additionalFilters = config.additionalFilters;
|
|
132
131
|
this.disableSyncOnTotalAccountsChange =
|
|
133
132
|
config.disableSyncOnTotalAccountsChange ?? false;
|
|
134
133
|
|
|
135
|
-
let decodeFn;
|
|
134
|
+
let decodeFn: (name: string, buffer: Buffer) => UserAccount;
|
|
136
135
|
if (config.fastDecode ?? true) {
|
|
137
|
-
decodeFn = (
|
|
136
|
+
decodeFn = (_name: string, buffer: Buffer) => decodeUser(buffer);
|
|
138
137
|
} else {
|
|
139
138
|
decodeFn = (
|
|
140
139
|
this.velocityClient.program.account as any
|
|
@@ -223,9 +222,15 @@ export class UserMap implements UserMapInterface {
|
|
|
223
222
|
},
|
|
224
223
|
});
|
|
225
224
|
await user.subscribe(userAccount);
|
|
225
|
+
const resolvedSlot = slot ?? user.getUserAccountAndSlot()?.slot;
|
|
226
|
+
if (resolvedSlot === undefined) {
|
|
227
|
+
throw new Error(
|
|
228
|
+
'UserMap.addPubkey: no slot available after subscribing user account'
|
|
229
|
+
);
|
|
230
|
+
}
|
|
226
231
|
this.userMap.set(userAccountPublicKey.toString(), {
|
|
227
232
|
data: user,
|
|
228
|
-
slot:
|
|
233
|
+
slot: resolvedSlot,
|
|
229
234
|
});
|
|
230
235
|
this.eventEmitter.emit('userUpdate', user);
|
|
231
236
|
}
|
|
@@ -263,7 +268,11 @@ export class UserMap implements UserMapInterface {
|
|
|
263
268
|
accountSubscription
|
|
264
269
|
);
|
|
265
270
|
}
|
|
266
|
-
|
|
271
|
+
const userWithSlot = this.userMap.get(key);
|
|
272
|
+
if (!userWithSlot) {
|
|
273
|
+
throw new Error(`UserMap.mustGet: no user found for ${key}`);
|
|
274
|
+
}
|
|
275
|
+
return userWithSlot.data;
|
|
267
276
|
}
|
|
268
277
|
public async mustGetWithSlot(
|
|
269
278
|
key: string,
|
|
@@ -277,12 +286,16 @@ export class UserMap implements UserMapInterface {
|
|
|
277
286
|
accountSubscription
|
|
278
287
|
);
|
|
279
288
|
}
|
|
280
|
-
|
|
289
|
+
const userWithSlot = this.userMap.get(key);
|
|
290
|
+
if (!userWithSlot) {
|
|
291
|
+
throw new Error(`UserMap.mustGetWithSlot: no user found for ${key}`);
|
|
292
|
+
}
|
|
293
|
+
return userWithSlot;
|
|
281
294
|
}
|
|
282
295
|
|
|
283
296
|
public async mustGetUserAccount(key: string): Promise<UserAccount> {
|
|
284
297
|
const user = await this.mustGet(key);
|
|
285
|
-
return user.
|
|
298
|
+
return user.getUserAccountOrThrow();
|
|
286
299
|
}
|
|
287
300
|
|
|
288
301
|
/**
|
|
@@ -295,7 +308,7 @@ export class UserMap implements UserMapInterface {
|
|
|
295
308
|
if (!user) {
|
|
296
309
|
return undefined;
|
|
297
310
|
}
|
|
298
|
-
return user.data.getUserAccount()
|
|
311
|
+
return user.data.getUserAccount()?.authority;
|
|
299
312
|
}
|
|
300
313
|
|
|
301
314
|
/**
|
|
@@ -379,15 +392,15 @@ export class UserMap implements UserMapInterface {
|
|
|
379
392
|
filterCriteria?: UserFilterCriteria
|
|
380
393
|
): PublicKey[] {
|
|
381
394
|
const usersMeetingCriteria = Array.from(this.values()).filter((user) => {
|
|
382
|
-
|
|
395
|
+
const userAccount = user.getUserAccountOrThrow();
|
|
383
396
|
if (filterCriteria && filterCriteria.hasOpenOrders) {
|
|
384
|
-
|
|
397
|
+
return userAccount.hasOpenOrder;
|
|
385
398
|
}
|
|
386
|
-
return
|
|
399
|
+
return true;
|
|
387
400
|
});
|
|
388
401
|
const userAuths = new Set(
|
|
389
402
|
usersMeetingCriteria.map((user) =>
|
|
390
|
-
user.
|
|
403
|
+
user.getUserAccountOrThrow().authority.toBase58()
|
|
391
404
|
)
|
|
392
405
|
);
|
|
393
406
|
const userAuthKeys = Array.from(userAuths).map(
|
|
@@ -420,7 +433,7 @@ export class UserMap implements UserMapInterface {
|
|
|
420
433
|
|
|
421
434
|
/**
|
|
422
435
|
* Syncs the UserMap using the default sync method (single getProgramAccounts call with filters).
|
|
423
|
-
* This method may fail when
|
|
436
|
+
* This method may fail when velocity has too many users. (nodejs response size limits)
|
|
424
437
|
* @returns
|
|
425
438
|
*/
|
|
426
439
|
private async defaultSync() {
|
|
@@ -517,7 +530,7 @@ export class UserMap implements UserMapInterface {
|
|
|
517
530
|
|
|
518
531
|
/**
|
|
519
532
|
* Syncs the UserMap using the paginated sync method (multiple getMultipleAccounts calls with filters).
|
|
520
|
-
* This method is more reliable when
|
|
533
|
+
* This method is more reliable when velocity has many users.
|
|
521
534
|
* @returns
|
|
522
535
|
*/
|
|
523
536
|
private async paginatedSync() {
|
|
@@ -541,9 +554,12 @@ export class UserMap implements UserMapInterface {
|
|
|
541
554
|
(account) => account.pubkey
|
|
542
555
|
);
|
|
543
556
|
|
|
544
|
-
const limitConcurrency = async (
|
|
545
|
-
|
|
546
|
-
|
|
557
|
+
const limitConcurrency = async (
|
|
558
|
+
tasks: Array<() => Promise<void>>,
|
|
559
|
+
limit: number
|
|
560
|
+
) => {
|
|
561
|
+
const executing: Promise<void>[] = [];
|
|
562
|
+
const results: Promise<void>[] = [];
|
|
547
563
|
|
|
548
564
|
for (let i = 0; i < tasks.length; i++) {
|
|
549
565
|
const executor = Promise.resolve().then(tasks[i]);
|
|
@@ -569,7 +585,7 @@ export class UserMap implements UserMapInterface {
|
|
|
569
585
|
|
|
570
586
|
// @ts-ignore
|
|
571
587
|
const chunkSize = this.syncConfig.chunkSize ?? 100;
|
|
572
|
-
const tasks = [];
|
|
588
|
+
const tasks: Array<() => Promise<void>> = [];
|
|
573
589
|
for (let i = 0; i < accountPublicKeys.length; i += chunkSize) {
|
|
574
590
|
const chunk = accountPublicKeys.slice(i, i + chunkSize);
|
|
575
591
|
tasks.push(async () => {
|
|
@@ -630,9 +646,7 @@ export class UserMap implements UserMapInterface {
|
|
|
630
646
|
throw err;
|
|
631
647
|
}
|
|
632
648
|
} finally {
|
|
633
|
-
|
|
634
|
-
this.syncPromiseResolver();
|
|
635
|
-
}
|
|
649
|
+
this.syncPromiseResolver();
|
|
636
650
|
this.syncPromise = undefined;
|
|
637
651
|
}
|
|
638
652
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Commitment, Connection, MemcmpFilter } from '@solana/web3.js';
|
|
2
2
|
import { VelocityClient } from '../velocityClient';
|
|
3
3
|
import { GrpcConfigs } from '../accounts/types';
|
|
4
|
-
import { AtLeastOne } from '../util/deprecatedAlias';
|
|
5
4
|
|
|
6
5
|
// passed into UserMap.getUniqueAuthorities to filter users
|
|
7
6
|
export type UserAccountFilterCriteria = {
|
|
@@ -65,5 +64,6 @@ type UserMapConfigBase = {
|
|
|
65
64
|
additionalFilters?: MemcmpFilter[];
|
|
66
65
|
};
|
|
67
66
|
|
|
68
|
-
export type UserMapConfig = UserMapConfigBase &
|
|
69
|
-
|
|
67
|
+
export type UserMapConfig = UserMapConfigBase & {
|
|
68
|
+
velocityClient: VelocityClient;
|
|
69
|
+
};
|
|
@@ -27,16 +27,12 @@ export class UserStatsMap {
|
|
|
27
27
|
*/
|
|
28
28
|
private userStatsMap = new Map<string, UserStats>();
|
|
29
29
|
private velocityClient: VelocityClient;
|
|
30
|
-
/** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
|
|
31
|
-
private get driftClient(): VelocityClient {
|
|
32
|
-
return this.velocityClient;
|
|
33
|
-
}
|
|
34
30
|
private bulkAccountLoader: BulkAccountLoader;
|
|
35
31
|
private decode;
|
|
36
32
|
private syncConfig: SyncConfig;
|
|
37
33
|
|
|
38
34
|
private syncPromise?: Promise<void>;
|
|
39
|
-
private syncPromiseResolver: () => void;
|
|
35
|
+
private syncPromiseResolver: () => void = () => {};
|
|
40
36
|
|
|
41
37
|
/**
|
|
42
38
|
* Creates a new UserStatsMap instance.
|
|
@@ -53,7 +49,7 @@ export class UserStatsMap {
|
|
|
53
49
|
if (!bulkAccountLoader) {
|
|
54
50
|
bulkAccountLoader = new BulkAccountLoader(
|
|
55
51
|
velocityClient.connection,
|
|
56
|
-
velocityClient.opts
|
|
52
|
+
velocityClient.opts?.commitment ?? 'confirmed',
|
|
57
53
|
0
|
|
58
54
|
);
|
|
59
55
|
}
|
|
@@ -114,8 +110,12 @@ export class UserStatsMap {
|
|
|
114
110
|
|
|
115
111
|
public async updateWithOrderRecord(record: OrderRecord, userMap: UserMap) {
|
|
116
112
|
const user = await userMap.mustGet(record.user.toString());
|
|
117
|
-
if (!this.has(user.
|
|
118
|
-
await this.addUserStat(
|
|
113
|
+
if (!this.has(user.getUserAccountOrThrow().authority.toString())) {
|
|
114
|
+
await this.addUserStat(
|
|
115
|
+
user.getUserAccountOrThrow().authority,
|
|
116
|
+
undefined,
|
|
117
|
+
false
|
|
118
|
+
);
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -137,12 +137,14 @@ export class UserStatsMap {
|
|
|
137
137
|
const liqRecord = record as LiquidationRecord;
|
|
138
138
|
|
|
139
139
|
const user = await userMap.mustGet(liqRecord.user.toString());
|
|
140
|
-
await this.mustGet(user.
|
|
140
|
+
await this.mustGet(user.getUserAccountOrThrow().authority.toString());
|
|
141
141
|
|
|
142
142
|
const liquidatorUser = await userMap.mustGet(
|
|
143
143
|
liqRecord.liquidator.toString()
|
|
144
144
|
);
|
|
145
|
-
await this.mustGet(
|
|
145
|
+
await this.mustGet(
|
|
146
|
+
liquidatorUser.getUserAccountOrThrow().authority.toString()
|
|
147
|
+
);
|
|
146
148
|
} else if (record.eventType === 'OrderRecord') {
|
|
147
149
|
if (!userMap) {
|
|
148
150
|
return;
|
|
@@ -157,11 +159,11 @@ export class UserStatsMap {
|
|
|
157
159
|
|
|
158
160
|
if (actionRecord.taker) {
|
|
159
161
|
const taker = await userMap.mustGet(actionRecord.taker.toString());
|
|
160
|
-
await this.mustGet(taker.
|
|
162
|
+
await this.mustGet(taker.getUserAccountOrThrow().authority.toString());
|
|
161
163
|
}
|
|
162
164
|
if (actionRecord.maker) {
|
|
163
165
|
const maker = await userMap.mustGet(actionRecord.maker.toString());
|
|
164
|
-
await this.mustGet(maker.
|
|
166
|
+
await this.mustGet(maker.getUserAccountOrThrow().authority.toString());
|
|
165
167
|
}
|
|
166
168
|
} else if (record.eventType === 'SettlePnlRecord') {
|
|
167
169
|
if (!userMap) {
|
|
@@ -169,7 +171,7 @@ export class UserStatsMap {
|
|
|
169
171
|
}
|
|
170
172
|
const settlePnlRecord = record as SettlePnlRecord;
|
|
171
173
|
const user = await userMap.mustGet(settlePnlRecord.user.toString());
|
|
172
|
-
await this.mustGet(user.
|
|
174
|
+
await this.mustGet(user.getUserAccountOrThrow().authority.toString());
|
|
173
175
|
} else if (record.eventType === 'NewUserRecord') {
|
|
174
176
|
const newUserRecord = record as NewUserRecord;
|
|
175
177
|
await this.mustGet(newUserRecord.userAuthority.toString());
|
|
@@ -183,7 +185,7 @@ export class UserStatsMap {
|
|
|
183
185
|
return this.userStatsMap.has(authorityPublicKey);
|
|
184
186
|
}
|
|
185
187
|
|
|
186
|
-
public get(authorityPublicKey: string): UserStats {
|
|
188
|
+
public get(authorityPublicKey: string): UserStats | undefined {
|
|
187
189
|
return this.userStatsMap.get(authorityPublicKey);
|
|
188
190
|
}
|
|
189
191
|
|
|
@@ -201,7 +203,13 @@ export class UserStatsMap {
|
|
|
201
203
|
false
|
|
202
204
|
);
|
|
203
205
|
}
|
|
204
|
-
|
|
206
|
+
const userStats = this.get(authorityPublicKey);
|
|
207
|
+
if (!userStats) {
|
|
208
|
+
throw new Error(
|
|
209
|
+
`UserStatsMap: UserStats missing for authority ${authorityPublicKey} after addUserStat`
|
|
210
|
+
);
|
|
211
|
+
}
|
|
212
|
+
return userStats;
|
|
205
213
|
}
|
|
206
214
|
|
|
207
215
|
public values(): IterableIterator<UserStats> {
|
|
@@ -266,9 +274,12 @@ export class UserStatsMap {
|
|
|
266
274
|
accountsToLoad = accountsPrefetch.map((account) => account.pubkey);
|
|
267
275
|
}
|
|
268
276
|
|
|
269
|
-
const limitConcurrency = async (
|
|
270
|
-
|
|
271
|
-
|
|
277
|
+
const limitConcurrency = async (
|
|
278
|
+
tasks: Array<() => Promise<void>>,
|
|
279
|
+
limit: number
|
|
280
|
+
) => {
|
|
281
|
+
const executing: Array<Promise<void>> = [];
|
|
282
|
+
const results: Array<Promise<void>> = [];
|
|
272
283
|
|
|
273
284
|
for (let i = 0; i < tasks.length; i++) {
|
|
274
285
|
const executor = Promise.resolve().then(tasks[i]);
|
|
@@ -294,7 +305,7 @@ export class UserStatsMap {
|
|
|
294
305
|
|
|
295
306
|
// @ts-ignore
|
|
296
307
|
const chunkSize = this.syncConfig.chunkSize ?? 100;
|
|
297
|
-
const tasks = [];
|
|
308
|
+
const tasks: Array<() => Promise<void>> = [];
|
|
298
309
|
for (let i = 0; i < accountsToLoad.length; i += chunkSize) {
|
|
299
310
|
const chunk = accountsToLoad.slice(i, i + chunkSize);
|
|
300
311
|
tasks.push(async () => {
|
|
@@ -302,7 +313,7 @@ export class UserStatsMap {
|
|
|
302
313
|
await this.velocityClient.connection.getMultipleAccountsInfoAndContext(
|
|
303
314
|
chunk,
|
|
304
315
|
{
|
|
305
|
-
commitment: this.velocityClient.opts
|
|
316
|
+
commitment: this.velocityClient.opts?.commitment,
|
|
306
317
|
}
|
|
307
318
|
);
|
|
308
319
|
|
|
@@ -346,9 +357,7 @@ export class UserStatsMap {
|
|
|
346
357
|
} catch (err) {
|
|
347
358
|
console.error(`Error in UserStatsMap.paginatedSync():`, err);
|
|
348
359
|
} finally {
|
|
349
|
-
|
|
350
|
-
this.syncPromiseResolver();
|
|
351
|
-
}
|
|
360
|
+
this.syncPromiseResolver();
|
|
352
361
|
this.syncPromise = undefined;
|
|
353
362
|
}
|
|
354
363
|
}
|
package/src/userStats.ts
CHANGED
|
@@ -18,17 +18,13 @@ import { grpcUserStatsAccountSubscriber } from './accounts/grpcUserStatsAccountS
|
|
|
18
18
|
|
|
19
19
|
export class UserStats {
|
|
20
20
|
velocityClient: VelocityClient;
|
|
21
|
-
/** @deprecated Use `velocityClient` instead. `driftClient` will be removed in a future major. */
|
|
22
|
-
public get driftClient(): VelocityClient {
|
|
23
|
-
return this.velocityClient;
|
|
24
|
-
}
|
|
25
21
|
userStatsAccountPublicKey: PublicKey;
|
|
26
22
|
accountSubscriber: UserStatsAccountSubscriber;
|
|
27
|
-
isSubscribed
|
|
23
|
+
isSubscribed = false;
|
|
28
24
|
|
|
29
25
|
public constructor(config: UserStatsConfig) {
|
|
30
26
|
// Type-system guarantees at least one of the two is supplied.
|
|
31
|
-
const velocityClient =
|
|
27
|
+
const velocityClient = config.velocityClient!;
|
|
32
28
|
this.velocityClient = velocityClient;
|
|
33
29
|
this.userStatsAccountPublicKey = config.userStatsAccountPublicKey;
|
|
34
30
|
if (config.accountSubscription?.type === 'polling') {
|
|
@@ -61,7 +57,7 @@ export class UserStats {
|
|
|
61
57
|
this.accountSubscriber =
|
|
62
58
|
config.accountSubscription.userStatsAccountSubscriber;
|
|
63
59
|
} else {
|
|
64
|
-
const exhaustiveCheck:
|
|
60
|
+
const exhaustiveCheck: undefined = config.accountSubscription;
|
|
65
61
|
|
|
66
62
|
throw new Error(
|
|
67
63
|
`Unknown user stats account subscription type: ${exhaustiveCheck}`
|
|
@@ -87,27 +83,40 @@ export class UserStats {
|
|
|
87
83
|
this.isSubscribed = false;
|
|
88
84
|
}
|
|
89
85
|
|
|
90
|
-
public getAccountAndSlot(): DataAndSlot<UserStatsAccount> {
|
|
86
|
+
public getAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined {
|
|
91
87
|
return this.accountSubscriber.getUserStatsAccountAndSlot();
|
|
92
88
|
}
|
|
93
89
|
|
|
94
|
-
public getAccount(): UserStatsAccount {
|
|
95
|
-
return this.accountSubscriber.getUserStatsAccountAndSlot()
|
|
90
|
+
public getAccount(): UserStatsAccount | undefined {
|
|
91
|
+
return this.accountSubscriber.getUserStatsAccountAndSlot()?.data;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Like {@link getAccount} but throws a named error instead of returning
|
|
96
|
+
* `undefined` when the stats account has not been loaded yet.
|
|
97
|
+
*/
|
|
98
|
+
public getAccountOrThrow(): UserStatsAccount {
|
|
99
|
+
const account = this.getAccount();
|
|
100
|
+
if (!account) {
|
|
101
|
+
throw new Error('UserStats account not loaded');
|
|
102
|
+
}
|
|
103
|
+
return account;
|
|
96
104
|
}
|
|
97
105
|
|
|
98
106
|
public getReferrerInfo(): ReferrerInfo | undefined {
|
|
99
|
-
|
|
107
|
+
const account = this.getAccount();
|
|
108
|
+
if (!account || account.referrer.equals(PublicKey.default)) {
|
|
100
109
|
return undefined;
|
|
101
110
|
} else {
|
|
102
111
|
return {
|
|
103
112
|
referrer: getUserAccountPublicKeySync(
|
|
104
113
|
this.velocityClient.program.programId,
|
|
105
|
-
|
|
114
|
+
account.referrer,
|
|
106
115
|
0
|
|
107
116
|
),
|
|
108
117
|
referrerStats: getUserStatsAccountPublicKey(
|
|
109
118
|
this.velocityClient.program.programId,
|
|
110
|
-
|
|
119
|
+
account.referrer
|
|
111
120
|
),
|
|
112
121
|
};
|
|
113
122
|
}
|
package/src/userStatsConfig.ts
CHANGED
|
@@ -2,15 +2,15 @@ import { VelocityClient } from './velocityClient';
|
|
|
2
2
|
import { Commitment, PublicKey } from '@solana/web3.js';
|
|
3
3
|
import { BulkAccountLoader } from './accounts/bulkAccountLoader';
|
|
4
4
|
import { GrpcConfigs, UserStatsAccountSubscriber } from './accounts/types';
|
|
5
|
-
import { AtLeastOne } from './util/deprecatedAlias';
|
|
6
5
|
|
|
7
6
|
type UserStatsConfigBase = {
|
|
8
7
|
accountSubscription?: UserStatsSubscriptionConfig;
|
|
9
8
|
userStatsAccountPublicKey: PublicKey;
|
|
10
9
|
};
|
|
11
10
|
|
|
12
|
-
export type UserStatsConfig = UserStatsConfigBase &
|
|
13
|
-
|
|
11
|
+
export type UserStatsConfig = UserStatsConfigBase & {
|
|
12
|
+
velocityClient: VelocityClient;
|
|
13
|
+
};
|
|
14
14
|
|
|
15
15
|
export type UserStatsSubscriptionConfig =
|
|
16
16
|
| {
|
|
@@ -62,7 +62,7 @@ export class TransactionConfirmationManager {
|
|
|
62
62
|
|
|
63
63
|
let response: RpcResponseAndContext<SignatureResult> | null = null;
|
|
64
64
|
|
|
65
|
-
let subscriptionId: ClientSubscriptionId;
|
|
65
|
+
let subscriptionId: ClientSubscriptionId | undefined;
|
|
66
66
|
|
|
67
67
|
const confirmationPromise = new Promise((resolve, reject) => {
|
|
68
68
|
try {
|
|
@@ -262,13 +262,21 @@ export class TransactionConfirmationManager {
|
|
|
262
262
|
|
|
263
263
|
if (status.err) {
|
|
264
264
|
this.pendingConfirmations.delete(request.txSig);
|
|
265
|
+
const txError = await getTransactionErrorFromTxSig(
|
|
266
|
+
request.txSig,
|
|
267
|
+
this.connection
|
|
268
|
+
);
|
|
265
269
|
request.reject(
|
|
266
|
-
|
|
270
|
+
txError ??
|
|
271
|
+
new Error(
|
|
272
|
+
`Transaction failed but no error could be resolved for signature ${request.txSig}`
|
|
273
|
+
)
|
|
267
274
|
);
|
|
268
275
|
continue;
|
|
269
276
|
}
|
|
270
277
|
|
|
271
278
|
if (
|
|
279
|
+
status.confirmationStatus === undefined ||
|
|
272
280
|
confirmationStatusValues[status.confirmationStatus] === undefined ||
|
|
273
281
|
confirmationStatusValues[request.desiredConfirmationStatus] ===
|
|
274
282
|
undefined
|
package/src/util/chainClock.ts
CHANGED
package/src/util/computeUnits.ts
CHANGED
|
@@ -11,13 +11,17 @@ export async function findComputeUnitConsumption(
|
|
|
11
11
|
connection: Connection,
|
|
12
12
|
txSignature: string,
|
|
13
13
|
commitment: Finality = 'confirmed'
|
|
14
|
-
): Promise<
|
|
14
|
+
): Promise<string[]> {
|
|
15
15
|
const tx = await connection.getTransaction(txSignature, { commitment });
|
|
16
|
-
const computeUnits = [];
|
|
16
|
+
const computeUnits: string[] = [];
|
|
17
|
+
const logMessages = tx?.meta?.logMessages;
|
|
18
|
+
if (!logMessages) {
|
|
19
|
+
return computeUnits;
|
|
20
|
+
}
|
|
17
21
|
const regex = new RegExp(
|
|
18
22
|
`Program ${programId.toString()} consumed ([0-9]{0,6}) of ([0-9]{0,7}) compute units`
|
|
19
23
|
);
|
|
20
|
-
|
|
24
|
+
logMessages.forEach((logMessage) => {
|
|
21
25
|
const match = logMessage.match(regex);
|
|
22
26
|
if (match && match[1]) {
|
|
23
27
|
computeUnits.push(match[1]);
|
package/src/util/ed25519Utils.ts
CHANGED
|
@@ -37,7 +37,7 @@ const ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<
|
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Constructs a minimal Ed25519 verification instruction that references the data
|
|
40
|
-
* inside the
|
|
40
|
+
* inside the velocity custom instruction (e.g. postPythLazerOracleUpdate, placeSignedMsgTakerOrder).
|
|
41
41
|
*
|
|
42
42
|
* @param customInstructionIndex The index of the custom instruction in the transaction (e.g. if tx contains compute budget limit, compute budget price, ed25519 verify, custom ix, this would be 3).
|
|
43
43
|
* @param messageOffset The offset within the custom instruction data where the signed message begins.
|