@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/index.ts
CHANGED
|
@@ -26,10 +26,7 @@ export { WebSocketAccountSubscriberV2 } from './accounts/webSocketAccountSubscri
|
|
|
26
26
|
export { WebSocketProgramAccountSubscriber } from './accounts/webSocketProgramAccountSubscriber';
|
|
27
27
|
export { WebSocketProgramUserAccountSubscriber } from './accounts/websocketProgramUserAccountSubscriber';
|
|
28
28
|
export { WebSocketProgramAccountsSubscriberV2 } from './accounts/webSocketProgramAccountsSubscriberV2';
|
|
29
|
-
export {
|
|
30
|
-
WebSocketVelocityClientAccountSubscriberV2,
|
|
31
|
-
WebSocketDriftClientAccountSubscriberV2,
|
|
32
|
-
} from './accounts/webSocketVelocityClientAccountSubscriberV2';
|
|
29
|
+
export { WebSocketVelocityClientAccountSubscriberV2 } from './accounts/webSocketVelocityClientAccountSubscriberV2';
|
|
33
30
|
export * from './accounts/bulkAccountLoader';
|
|
34
31
|
export * from './accounts/bulkUserSubscription';
|
|
35
32
|
export * from './accounts/bulkUserStatsSubscription';
|
|
@@ -110,13 +107,11 @@ export * from './tx/fastSingleTxSender';
|
|
|
110
107
|
export * from './tx/retryTxSender';
|
|
111
108
|
export * from './tx/whileValidTxSender';
|
|
112
109
|
export * from './tx/priorityFeeCalculator';
|
|
113
|
-
export * from './tx/forwardOnlyTxSender';
|
|
114
110
|
export * from './tx/types';
|
|
115
111
|
export * from './tx/txHandler';
|
|
116
112
|
export * from './tx/txParamProcessor';
|
|
117
113
|
export * from './util/computeUnits';
|
|
118
114
|
export * from './util/digest';
|
|
119
|
-
export * from './util/tps';
|
|
120
115
|
export * from './util/promiseTimeout';
|
|
121
116
|
export * from './math/spotBalance';
|
|
122
117
|
export * from './velocityClientConfig';
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
TransactionMessage,
|
|
7
7
|
VersionedTransaction,
|
|
8
8
|
} from '@solana/web3.js';
|
|
9
|
-
import fetch from 'node-fetch';
|
|
9
|
+
import fetch, { RequestInit } from 'node-fetch';
|
|
10
10
|
import { BN } from '../isomorphic/anchor';
|
|
11
11
|
import { SwapMode } from '../swap/UnifiedSwapClient';
|
|
12
12
|
|
|
@@ -302,6 +302,22 @@ export class JupiterClient {
|
|
|
302
302
|
maxAutoSlippageBps?: number;
|
|
303
303
|
usdEstimate?: number;
|
|
304
304
|
}): Promise<QuoteResponse> {
|
|
305
|
+
if (autoSlippage && maxAutoSlippageBps === undefined) {
|
|
306
|
+
throw new Error(
|
|
307
|
+
'JupiterClient.getQuote: maxAutoSlippageBps is required when autoSlippage is enabled'
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
if (autoSlippage && usdEstimate === undefined) {
|
|
311
|
+
throw new Error(
|
|
312
|
+
'JupiterClient.getQuote: usdEstimate is required when autoSlippage is enabled'
|
|
313
|
+
);
|
|
314
|
+
}
|
|
315
|
+
const maxAutoSlippageBpsParam =
|
|
316
|
+
autoSlippage && maxAutoSlippageBps !== undefined
|
|
317
|
+
? maxAutoSlippageBps.toString()
|
|
318
|
+
: '0';
|
|
319
|
+
const autoSlippageCollisionUsdValueParam =
|
|
320
|
+
autoSlippage && usdEstimate !== undefined ? usdEstimate.toString() : '0';
|
|
305
321
|
const params = new URLSearchParams({
|
|
306
322
|
inputMint: inputMint.toString(),
|
|
307
323
|
outputMint: outputMint.toString(),
|
|
@@ -311,10 +327,8 @@ export class JupiterClient {
|
|
|
311
327
|
onlyDirectRoutes: onlyDirectRoutes.toString(),
|
|
312
328
|
maxAccounts: maxAccounts.toString(),
|
|
313
329
|
autoSlippage: autoSlippage.toString(),
|
|
314
|
-
maxAutoSlippageBps:
|
|
315
|
-
autoSlippageCollisionUsdValue:
|
|
316
|
-
? usdEstimate.toString()
|
|
317
|
-
: '0',
|
|
330
|
+
maxAutoSlippageBps: maxAutoSlippageBpsParam,
|
|
331
|
+
autoSlippageCollisionUsdValue: autoSlippageCollisionUsdValueParam,
|
|
318
332
|
...(excludeDexes && { excludeDexes: excludeDexes.join(',') }),
|
|
319
333
|
});
|
|
320
334
|
if (swapMode === 'ExactOut') {
|
|
@@ -409,7 +423,9 @@ export class JupiterClient {
|
|
|
409
423
|
return await this.getLookupTable(lookup.accountKey);
|
|
410
424
|
})
|
|
411
425
|
)
|
|
412
|
-
).filter(
|
|
426
|
+
).filter(
|
|
427
|
+
(lookup): lookup is AddressLookupTableAccount => lookup !== undefined
|
|
428
|
+
);
|
|
413
429
|
|
|
414
430
|
const transactionMessage = TransactionMessage.decompile(message, {
|
|
415
431
|
addressLookupTableAccounts: lookupTables,
|
|
@@ -422,12 +438,16 @@ export class JupiterClient {
|
|
|
422
438
|
|
|
423
439
|
async getLookupTable(
|
|
424
440
|
accountKey: PublicKey
|
|
425
|
-
): Promise<AddressLookupTableAccount> {
|
|
426
|
-
|
|
427
|
-
|
|
441
|
+
): Promise<AddressLookupTableAccount | undefined> {
|
|
442
|
+
const cached = this.lookupTableCahce.get(accountKey.toString());
|
|
443
|
+
if (cached !== undefined) {
|
|
444
|
+
return cached;
|
|
428
445
|
}
|
|
429
446
|
|
|
430
|
-
return (
|
|
447
|
+
return (
|
|
448
|
+
(await this.connection.getAddressLookupTable(accountKey)).value ??
|
|
449
|
+
undefined
|
|
450
|
+
);
|
|
431
451
|
}
|
|
432
452
|
|
|
433
453
|
/**
|
package/src/margin/README.md
CHANGED
|
@@ -4,8 +4,8 @@ This document describes the single-source-of-truth margin engine in the SDK that
|
|
|
4
4
|
|
|
5
5
|
### Alignment with on-chain
|
|
6
6
|
|
|
7
|
-
- The SDK snapshot shape mirrors `programs/
|
|
8
|
-
- The inputs and ordering mirror `calculate_margin_requirement_and_total_collateral_and_liability_info` in `programs/
|
|
7
|
+
- The SDK snapshot shape mirrors `programs/velocity/src/state/margin_calculation.rs` field-for-field.
|
|
8
|
+
- The inputs and ordering mirror `calculate_margin_requirement_and_total_collateral_and_liability_info` in `programs/velocity/src/math/margin.rs`.
|
|
9
9
|
- Isolated positions are represented as `isolatedMarginCalculations` keyed by perp `marketIndex`, matching program logic.
|
|
10
10
|
|
|
11
11
|
### Core SDK types (shape parity)
|
package/src/marginCalculation.ts
CHANGED
package/src/math/amm.ts
CHANGED
|
@@ -8,15 +8,16 @@ import {
|
|
|
8
8
|
ONE,
|
|
9
9
|
AMM_TO_QUOTE_PRECISION_RATIO,
|
|
10
10
|
QUOTE_PRECISION,
|
|
11
|
-
MARGIN_PRECISION,
|
|
12
11
|
PRICE_DIV_PEG,
|
|
13
12
|
PERCENTAGE_PRECISION,
|
|
14
13
|
DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT,
|
|
15
14
|
FUNDING_RATE_BUFFER_PRECISION,
|
|
15
|
+
FUNDING_RATE_OFFSET_PERCENTAGE,
|
|
16
16
|
TWO,
|
|
17
17
|
} from '../constants/numericConstants';
|
|
18
18
|
import {
|
|
19
19
|
AMM,
|
|
20
|
+
MarketStats,
|
|
20
21
|
PositionDirection,
|
|
21
22
|
SwapDirection,
|
|
22
23
|
PerpMarketAccount,
|
|
@@ -67,8 +68,9 @@ export function calculateOptimalPegAndBudget(
|
|
|
67
68
|
);
|
|
68
69
|
const prePegCost = calculateRepegCost(amm, newPeg);
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
// no protocol floor post-isolation: tfmd contains only the AMM's own
|
|
72
|
+
// equity and is fully spendable on the repeg
|
|
73
|
+
const budget = BN.max(ZERO, amm.totalFeeMinusDistributions);
|
|
72
74
|
|
|
73
75
|
let checkLowerBound = true;
|
|
74
76
|
if (budget.lt(prePegCost)) {
|
|
@@ -101,9 +103,9 @@ export function calculateOptimalPegAndBudget(
|
|
|
101
103
|
checkLowerBound = false;
|
|
102
104
|
|
|
103
105
|
return [newTargetPrice, newOptimalPeg, newBudget, false];
|
|
104
|
-
} else if (
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
} else if (budget.eq(ZERO)) {
|
|
107
|
+
// mirrors the program: budget = max(0, tfmd), so a zero budget
|
|
108
|
+
// means the AMM has no equity to spend (no floor post-isolation)
|
|
107
109
|
checkLowerBound = false;
|
|
108
110
|
}
|
|
109
111
|
}
|
|
@@ -155,7 +157,7 @@ export function calculateNewAmm(
|
|
|
155
157
|
|
|
156
158
|
export function calculateUpdatedAMM(
|
|
157
159
|
amm: AMM,
|
|
158
|
-
mmOraclePriceData
|
|
160
|
+
mmOraclePriceData?: MMOraclePriceData
|
|
159
161
|
): AMM {
|
|
160
162
|
if (amm.curveUpdateIntensity == 0 || mmOraclePriceData === undefined) {
|
|
161
163
|
return amm;
|
|
@@ -195,13 +197,15 @@ export function calculateUpdatedAMM(
|
|
|
195
197
|
|
|
196
198
|
export function calculateUpdatedAMMSpreadReserves(
|
|
197
199
|
amm: AMM,
|
|
200
|
+
marketStats: MarketStats,
|
|
198
201
|
direction: PositionDirection,
|
|
199
|
-
mmOraclePriceData
|
|
202
|
+
mmOraclePriceData?: MMOraclePriceData,
|
|
200
203
|
latestSlot?: BN
|
|
201
204
|
): { baseAssetReserve: BN; quoteAssetReserve: BN; sqrtK: BN; newPeg: BN } {
|
|
202
205
|
const newAmm = calculateUpdatedAMM(amm, mmOraclePriceData);
|
|
203
206
|
const [shortReserves, longReserves] = calculateSpreadReserves(
|
|
204
207
|
newAmm,
|
|
208
|
+
marketStats,
|
|
205
209
|
mmOraclePriceData,
|
|
206
210
|
undefined,
|
|
207
211
|
latestSlot
|
|
@@ -223,7 +227,8 @@ export function calculateUpdatedAMMSpreadReserves(
|
|
|
223
227
|
|
|
224
228
|
export function calculateBidAskPrice(
|
|
225
229
|
amm: AMM,
|
|
226
|
-
|
|
230
|
+
marketStats: MarketStats,
|
|
231
|
+
mmOraclePriceData?: MMOraclePriceData,
|
|
227
232
|
withUpdate = true,
|
|
228
233
|
latestSlot?: BN
|
|
229
234
|
): [BN, BN] {
|
|
@@ -236,6 +241,7 @@ export function calculateBidAskPrice(
|
|
|
236
241
|
|
|
237
242
|
const [bidReserves, askReserves] = calculateSpreadReserves(
|
|
238
243
|
newAmm,
|
|
244
|
+
marketStats,
|
|
239
245
|
mmOraclePriceData,
|
|
240
246
|
undefined,
|
|
241
247
|
latestSlot
|
|
@@ -546,14 +552,6 @@ export function calculateEffectiveLeverage(
|
|
|
546
552
|
return effectiveLeverage;
|
|
547
553
|
}
|
|
548
554
|
|
|
549
|
-
export function calculateMaxSpread(marginRatioInitial: number): number {
|
|
550
|
-
const maxTargetSpread: number = new BN(marginRatioInitial)
|
|
551
|
-
.mul(BID_ASK_SPREAD_PRECISION.div(MARGIN_PRECISION))
|
|
552
|
-
.toNumber();
|
|
553
|
-
|
|
554
|
-
return maxTargetSpread;
|
|
555
|
-
}
|
|
556
|
-
|
|
557
555
|
export function calculateVolSpreadBN(
|
|
558
556
|
lastOracleConfPct: BN,
|
|
559
557
|
reservePrice: BN,
|
|
@@ -603,6 +601,81 @@ export function calculateVolSpreadBN(
|
|
|
603
601
|
return [longVolSpread, shortVolSpread];
|
|
604
602
|
}
|
|
605
603
|
|
|
604
|
+
/**
|
|
605
|
+
* Funding bias β(f) (BID_ASK_SPREAD_PRECISION): bounded multiplier for the
|
|
606
|
+
* paying-side spread while the vAMM is paying funding. Mirrors the program's
|
|
607
|
+
* `calculate_spread_funding_bias_scale`.
|
|
608
|
+
*
|
|
609
|
+
* ρ(f) = clamp(|f| / f_ref, 0, 1), f_ref = FUNDING_RATE_OFFSET_PERCENTAGE
|
|
610
|
+
* β(f) = 1 + s * ρ(f), s = fundingBiasSensitivity / 100
|
|
611
|
+
*
|
|
612
|
+
* f = 24h avg funding rate normalized to a daily fraction of the oracle twap
|
|
613
|
+
* captured at the last funding update. The vAMM pays when f * q < 0
|
|
614
|
+
* (q = baseAssetAmountWithAmm). Returns 1x when the vAMM receives funding or
|
|
615
|
+
* s = 0.
|
|
616
|
+
*/
|
|
617
|
+
export function calculateSpreadFundingBiasScale(
|
|
618
|
+
baseAssetAmountWithAmm: BN,
|
|
619
|
+
last24HAvgFundingRate: BN,
|
|
620
|
+
lastFundingOracleTwap: BN,
|
|
621
|
+
fundingBiasSensitivity: number
|
|
622
|
+
): number {
|
|
623
|
+
const one = BID_ASK_SPREAD_PRECISION.toNumber();
|
|
624
|
+
if (fundingBiasSensitivity === 0 || lastFundingOracleTwap.lte(ZERO)) {
|
|
625
|
+
return one;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
// f: daily funding rate as a fraction of price, FUNDING_RATE_PRECISION
|
|
629
|
+
const fNorm = last24HAvgFundingRate
|
|
630
|
+
.mul(PRICE_PRECISION)
|
|
631
|
+
.div(lastFundingOracleTwap)
|
|
632
|
+
.muln(24);
|
|
633
|
+
|
|
634
|
+
// f * q >= 0: vAMM receives (or rate/inventory is zero), β = 1
|
|
635
|
+
if (fNorm.isZero() || baseAssetAmountWithAmm.isZero()) {
|
|
636
|
+
return one;
|
|
637
|
+
}
|
|
638
|
+
if (fNorm.isNeg() === baseAssetAmountWithAmm.isNeg()) {
|
|
639
|
+
return one;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
// ρ = clamp(|f| / f_ref, 0, 1), PERCENTAGE_PRECISION
|
|
643
|
+
const ramp = BN.min(
|
|
644
|
+
fNorm.abs().mul(PERCENTAGE_PRECISION).div(FUNDING_RATE_OFFSET_PERCENTAGE),
|
|
645
|
+
PERCENTAGE_PRECISION
|
|
646
|
+
).toNumber();
|
|
647
|
+
|
|
648
|
+
// β = 1 + s * ρ
|
|
649
|
+
return one + Math.floor((fundingBiasSensitivity * ramp) / 100);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
export interface SpreadTerms {
|
|
653
|
+
longVolSpread: number;
|
|
654
|
+
shortVolSpread: number;
|
|
655
|
+
longSpreadwPS: number;
|
|
656
|
+
shortSpreadwPS: number;
|
|
657
|
+
maxTargetSpread: number;
|
|
658
|
+
inventorySpreadScale: number;
|
|
659
|
+
longSpreadwInvScale: number;
|
|
660
|
+
shortSpreadwInvScale: number;
|
|
661
|
+
effectiveLeverage: number;
|
|
662
|
+
effectiveLeverageCapped: number;
|
|
663
|
+
longSpreadwEL: number;
|
|
664
|
+
shortSpreadwEL: number;
|
|
665
|
+
revenueRetreatAmount: number;
|
|
666
|
+
halfRevenueRetreatAmount: number;
|
|
667
|
+
longSpreadwRevRetreat: number;
|
|
668
|
+
shortSpreadwRevRetreat: number;
|
|
669
|
+
fundingBiasScale: number;
|
|
670
|
+
longSpreadwFundingBias: number;
|
|
671
|
+
shortSpreadwFundingBias: number;
|
|
672
|
+
longSpreadwOffsetShrink: number;
|
|
673
|
+
shortSpreadwOffsetShrink: number;
|
|
674
|
+
totalSpread: number;
|
|
675
|
+
longSpread: number;
|
|
676
|
+
shortSpread: number;
|
|
677
|
+
}
|
|
678
|
+
|
|
606
679
|
export function calculateSpreadBN(
|
|
607
680
|
baseSpread: number,
|
|
608
681
|
lastOracleReservePriceSpreadPct: BN,
|
|
@@ -624,8 +697,63 @@ export function calculateSpreadBN(
|
|
|
624
697
|
shortIntensity: BN,
|
|
625
698
|
volume24H: BN,
|
|
626
699
|
ammInventorySpreadAdjustment: number,
|
|
700
|
+
last24HAvgFundingRate?: BN,
|
|
701
|
+
lastFundingOracleTwap?: BN,
|
|
702
|
+
fundingBiasSensitivity?: number,
|
|
703
|
+
returnTerms?: false
|
|
704
|
+
): [number, number];
|
|
705
|
+
export function calculateSpreadBN(
|
|
706
|
+
baseSpread: number,
|
|
707
|
+
lastOracleReservePriceSpreadPct: BN,
|
|
708
|
+
lastOracleConfPct: BN,
|
|
709
|
+
maxSpread: number,
|
|
710
|
+
quoteAssetReserve: BN,
|
|
711
|
+
terminalQuoteAssetReserve: BN,
|
|
712
|
+
pegMultiplier: BN,
|
|
713
|
+
baseAssetAmountWithAmm: BN,
|
|
714
|
+
reservePrice: BN,
|
|
715
|
+
totalFeeMinusDistributions: BN,
|
|
716
|
+
netRevenueSinceLastFunding: BN,
|
|
717
|
+
baseAssetReserve: BN,
|
|
718
|
+
minBaseAssetReserve: BN,
|
|
719
|
+
maxBaseAssetReserve: BN,
|
|
720
|
+
markStd: BN,
|
|
721
|
+
oracleStd: BN,
|
|
722
|
+
longIntensity: BN,
|
|
723
|
+
shortIntensity: BN,
|
|
724
|
+
volume24H: BN,
|
|
725
|
+
ammInventorySpreadAdjustment: number,
|
|
726
|
+
last24HAvgFundingRate: BN,
|
|
727
|
+
lastFundingOracleTwap: BN,
|
|
728
|
+
fundingBiasSensitivity: number,
|
|
729
|
+
returnTerms: true
|
|
730
|
+
): SpreadTerms;
|
|
731
|
+
export function calculateSpreadBN(
|
|
732
|
+
baseSpread: number,
|
|
733
|
+
lastOracleReservePriceSpreadPct: BN,
|
|
734
|
+
lastOracleConfPct: BN,
|
|
735
|
+
maxSpread: number,
|
|
736
|
+
quoteAssetReserve: BN,
|
|
737
|
+
terminalQuoteAssetReserve: BN,
|
|
738
|
+
pegMultiplier: BN,
|
|
739
|
+
baseAssetAmountWithAmm: BN,
|
|
740
|
+
reservePrice: BN,
|
|
741
|
+
totalFeeMinusDistributions: BN,
|
|
742
|
+
netRevenueSinceLastFunding: BN,
|
|
743
|
+
baseAssetReserve: BN,
|
|
744
|
+
minBaseAssetReserve: BN,
|
|
745
|
+
maxBaseAssetReserve: BN,
|
|
746
|
+
markStd: BN,
|
|
747
|
+
oracleStd: BN,
|
|
748
|
+
longIntensity: BN,
|
|
749
|
+
shortIntensity: BN,
|
|
750
|
+
volume24H: BN,
|
|
751
|
+
ammInventorySpreadAdjustment: number,
|
|
752
|
+
last24HAvgFundingRate: BN = ZERO,
|
|
753
|
+
lastFundingOracleTwap: BN = ZERO,
|
|
754
|
+
fundingBiasSensitivity = 0,
|
|
627
755
|
returnTerms = false
|
|
628
|
-
) {
|
|
756
|
+
): [number, number] | SpreadTerms {
|
|
629
757
|
assert(Number.isInteger(baseSpread));
|
|
630
758
|
assert(Number.isInteger(maxSpread));
|
|
631
759
|
|
|
@@ -646,6 +774,9 @@ export function calculateSpreadBN(
|
|
|
646
774
|
halfRevenueRetreatAmount: 0,
|
|
647
775
|
longSpreadwRevRetreat: 0,
|
|
648
776
|
shortSpreadwRevRetreat: 0,
|
|
777
|
+
fundingBiasScale: 0,
|
|
778
|
+
longSpreadwFundingBias: 0,
|
|
779
|
+
shortSpreadwFundingBias: 0,
|
|
649
780
|
longSpreadwOffsetShrink: 0,
|
|
650
781
|
shortSpreadwOffsetShrink: 0,
|
|
651
782
|
totalSpread: 0,
|
|
@@ -792,6 +923,32 @@ export function calculateSpreadBN(
|
|
|
792
923
|
spreadTerms.longSpreadwRevRetreat = longSpread;
|
|
793
924
|
spreadTerms.shortSpreadwRevRetreat = shortSpread;
|
|
794
925
|
|
|
926
|
+
// funding bias: w_pay = min(w_max, (w_0 * σ(q) * λ(q) + r(q)) * β(f)).
|
|
927
|
+
// β multiplies the fully built paying side only, selected by sign(q)
|
|
928
|
+
// (the same side σ widens); the max-spread cap below still bounds it.
|
|
929
|
+
// β = 1 when the vAMM receives.
|
|
930
|
+
const fundingBiasScale = calculateSpreadFundingBiasScale(
|
|
931
|
+
baseAssetAmountWithAmm,
|
|
932
|
+
last24HAvgFundingRate,
|
|
933
|
+
lastFundingOracleTwap,
|
|
934
|
+
fundingBiasSensitivity
|
|
935
|
+
);
|
|
936
|
+
const spreadPrecision = BID_ASK_SPREAD_PRECISION.toNumber();
|
|
937
|
+
if (fundingBiasScale > spreadPrecision) {
|
|
938
|
+
if (baseAssetAmountWithAmm.gt(ZERO)) {
|
|
939
|
+
longSpread = Math.floor(
|
|
940
|
+
(longSpread * fundingBiasScale) / spreadPrecision
|
|
941
|
+
);
|
|
942
|
+
} else if (baseAssetAmountWithAmm.lt(ZERO)) {
|
|
943
|
+
shortSpread = Math.floor(
|
|
944
|
+
(shortSpread * fundingBiasScale) / spreadPrecision
|
|
945
|
+
);
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
spreadTerms.fundingBiasScale = fundingBiasScale;
|
|
949
|
+
spreadTerms.longSpreadwFundingBias = longSpread;
|
|
950
|
+
spreadTerms.shortSpreadwFundingBias = shortSpread;
|
|
951
|
+
|
|
795
952
|
if (ammInventorySpreadAdjustment < 0) {
|
|
796
953
|
const adjustment = Math.abs(ammInventorySpreadAdjustment);
|
|
797
954
|
|
|
@@ -844,7 +1001,8 @@ export function calculateSpreadBN(
|
|
|
844
1001
|
|
|
845
1002
|
export function calculateSpread(
|
|
846
1003
|
amm: AMM,
|
|
847
|
-
|
|
1004
|
+
marketStats: MarketStats,
|
|
1005
|
+
oraclePriceData?: OraclePriceData,
|
|
848
1006
|
now?: BN,
|
|
849
1007
|
reservePrice?: BN
|
|
850
1008
|
): [number, number] {
|
|
@@ -852,6 +1010,12 @@ export function calculateSpread(
|
|
|
852
1010
|
return [amm.baseSpread / 2, amm.baseSpread / 2];
|
|
853
1011
|
}
|
|
854
1012
|
|
|
1013
|
+
if (!oraclePriceData) {
|
|
1014
|
+
throw new Error(
|
|
1015
|
+
'calculateSpread: oraclePriceData is required when baseSpread and curveUpdateIntensity are nonzero'
|
|
1016
|
+
);
|
|
1017
|
+
}
|
|
1018
|
+
|
|
855
1019
|
if (!reservePrice) {
|
|
856
1020
|
reservePrice = calculatePrice(
|
|
857
1021
|
amm.baseAssetReserve,
|
|
@@ -867,9 +1031,13 @@ export function calculateSpread(
|
|
|
867
1031
|
.div(reservePrice);
|
|
868
1032
|
|
|
869
1033
|
now = now || new BN(new Date().getTime() / 1000); //todo
|
|
870
|
-
const liveOracleStd = calculateLiveOracleStd(
|
|
1034
|
+
const liveOracleStd = calculateLiveOracleStd(
|
|
1035
|
+
marketStats,
|
|
1036
|
+
oraclePriceData,
|
|
1037
|
+
now
|
|
1038
|
+
);
|
|
871
1039
|
const confIntervalPct = getNewOracleConfPct(
|
|
872
|
-
|
|
1040
|
+
marketStats,
|
|
873
1041
|
oraclePriceData,
|
|
874
1042
|
reservePrice,
|
|
875
1043
|
now
|
|
@@ -890,12 +1058,15 @@ export function calculateSpread(
|
|
|
890
1058
|
amm.baseAssetReserve,
|
|
891
1059
|
amm.minBaseAssetReserve,
|
|
892
1060
|
amm.maxBaseAssetReserve,
|
|
893
|
-
|
|
1061
|
+
marketStats.markStd,
|
|
894
1062
|
liveOracleStd,
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
amm.ammInventorySpreadAdjustment
|
|
1063
|
+
marketStats.longIntensityVolume,
|
|
1064
|
+
marketStats.shortIntensityVolume,
|
|
1065
|
+
marketStats.volume24H,
|
|
1066
|
+
amm.ammInventorySpreadAdjustment,
|
|
1067
|
+
marketStats.last24HAvgFundingRate,
|
|
1068
|
+
marketStats.lastFundingOracleTwap,
|
|
1069
|
+
amm.fundingBiasSensitivity
|
|
899
1070
|
);
|
|
900
1071
|
let longSpread = spreads[0];
|
|
901
1072
|
let shortSpread = spreads[1];
|
|
@@ -925,7 +1096,8 @@ export function calculateSpread(
|
|
|
925
1096
|
|
|
926
1097
|
export function calculateSpreadReserves(
|
|
927
1098
|
amm: AMM,
|
|
928
|
-
|
|
1099
|
+
marketStats: MarketStats,
|
|
1100
|
+
mmOraclePriceData?: MMOraclePriceData,
|
|
929
1101
|
now?: BN,
|
|
930
1102
|
latestSlot?: BN
|
|
931
1103
|
) {
|
|
@@ -934,8 +1106,8 @@ export function calculateSpreadReserves(
|
|
|
934
1106
|
direction: PositionDirection,
|
|
935
1107
|
amm: AMM
|
|
936
1108
|
): {
|
|
937
|
-
baseAssetReserve;
|
|
938
|
-
quoteAssetReserve;
|
|
1109
|
+
baseAssetReserve: BN;
|
|
1110
|
+
quoteAssetReserve: BN;
|
|
939
1111
|
} {
|
|
940
1112
|
if (spread === 0) {
|
|
941
1113
|
return {
|
|
@@ -1022,25 +1194,27 @@ export function calculateSpreadReserves(
|
|
|
1022
1194
|
|
|
1023
1195
|
referencePriceOffset = calculateReferencePriceOffset(
|
|
1024
1196
|
reservePrice,
|
|
1025
|
-
|
|
1197
|
+
marketStats.last24HAvgFundingRate,
|
|
1026
1198
|
liquidityFractionAfterDeadband,
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1199
|
+
marketStats.historicalOracleData.lastOraclePriceTwap5Min,
|
|
1200
|
+
marketStats.lastMarkPriceTwap5Min,
|
|
1201
|
+
marketStats.historicalOracleData.lastOraclePriceTwap,
|
|
1202
|
+
marketStats.lastMarkPriceTwap,
|
|
1031
1203
|
maxOffset
|
|
1032
1204
|
).toNumber();
|
|
1033
1205
|
}
|
|
1034
1206
|
|
|
1035
1207
|
let [longSpread, shortSpread] = calculateSpread(
|
|
1036
1208
|
amm,
|
|
1209
|
+
marketStats,
|
|
1037
1210
|
mmOraclePriceData,
|
|
1038
1211
|
now,
|
|
1039
1212
|
reservePrice
|
|
1040
1213
|
);
|
|
1041
1214
|
|
|
1215
|
+
const lastReferencePriceOffset = marketStats.lastReferencePriceOffset;
|
|
1042
1216
|
const doReferencePricOffsetSmooth =
|
|
1043
|
-
Math.sign(referencePriceOffset) !== Math.sign(
|
|
1217
|
+
Math.sign(referencePriceOffset) !== Math.sign(lastReferencePriceOffset) &&
|
|
1044
1218
|
amm.curveUpdateIntensity > 100;
|
|
1045
1219
|
|
|
1046
1220
|
if (doReferencePricOffsetSmooth) {
|
|
@@ -1048,17 +1222,17 @@ export function calculateSpreadReserves(
|
|
|
1048
1222
|
latestSlot != null
|
|
1049
1223
|
? BN.max(latestSlot.sub(amm.lastUpdateSlot), ZERO).toNumber()
|
|
1050
1224
|
: 0;
|
|
1051
|
-
const fullOffsetDelta = referencePriceOffset -
|
|
1225
|
+
const fullOffsetDelta = referencePriceOffset - lastReferencePriceOffset;
|
|
1052
1226
|
const raw = Math.trunc(
|
|
1053
1227
|
Math.min(Math.abs(fullOffsetDelta), slotsPassed * 1000) / 10
|
|
1054
1228
|
);
|
|
1055
1229
|
const maxAllowed =
|
|
1056
|
-
Math.abs(
|
|
1230
|
+
Math.abs(lastReferencePriceOffset) || Math.abs(referencePriceOffset);
|
|
1057
1231
|
|
|
1058
1232
|
const magnitude = Math.min(Math.max(raw, 10), maxAllowed);
|
|
1059
1233
|
const referencePriceDelta = Math.sign(fullOffsetDelta) * magnitude;
|
|
1060
1234
|
|
|
1061
|
-
referencePriceOffset =
|
|
1235
|
+
referencePriceOffset = lastReferencePriceOffset + referencePriceDelta;
|
|
1062
1236
|
|
|
1063
1237
|
if (referencePriceDelta < 0) {
|
|
1064
1238
|
longSpread += Math.abs(referencePriceDelta);
|
|
@@ -1159,9 +1333,10 @@ export function calculateTerminalPrice(market: PerpMarketAccount) {
|
|
|
1159
1333
|
|
|
1160
1334
|
export function calculateMaxBaseAssetAmountToTrade(
|
|
1161
1335
|
amm: AMM,
|
|
1336
|
+
marketStats: MarketStats,
|
|
1162
1337
|
limit_price: BN,
|
|
1163
1338
|
direction: PositionDirection,
|
|
1164
|
-
mmOraclePriceData
|
|
1339
|
+
mmOraclePriceData: MMOraclePriceData,
|
|
1165
1340
|
now?: BN
|
|
1166
1341
|
): [BN, PositionDirection] {
|
|
1167
1342
|
const invariant = amm.sqrtK.mul(amm.sqrtK);
|
|
@@ -1175,6 +1350,7 @@ export function calculateMaxBaseAssetAmountToTrade(
|
|
|
1175
1350
|
const newBaseAssetReserve = squareRootBN(newBaseAssetReserveSquared);
|
|
1176
1351
|
const [shortSpreadReserves, longSpreadReserves] = calculateSpreadReserves(
|
|
1177
1352
|
amm,
|
|
1353
|
+
marketStats,
|
|
1178
1354
|
mmOraclePriceData,
|
|
1179
1355
|
now
|
|
1180
1356
|
);
|
|
@@ -1221,6 +1397,7 @@ export function calculateQuoteAssetAmountSwapped(
|
|
|
1221
1397
|
|
|
1222
1398
|
export function calculateMaxBaseAssetAmountFillable(
|
|
1223
1399
|
amm: AMM,
|
|
1400
|
+
orderStepSize: BN,
|
|
1224
1401
|
orderDirection: PositionDirection
|
|
1225
1402
|
): BN {
|
|
1226
1403
|
const maxFillSize = amm.baseAssetReserve.div(
|
|
@@ -1241,6 +1418,6 @@ export function calculateMaxBaseAssetAmountFillable(
|
|
|
1241
1418
|
|
|
1242
1419
|
return standardizeBaseAssetAmount(
|
|
1243
1420
|
BN.min(maxFillSize, maxBaseAssetAmountOnSide),
|
|
1244
|
-
|
|
1421
|
+
orderStepSize
|
|
1245
1422
|
);
|
|
1246
1423
|
}
|
package/src/math/auction.ts
CHANGED
|
@@ -254,11 +254,11 @@ export function getTriggerAuctionStartPrice(params: {
|
|
|
254
254
|
const { perpMarket, direction, oraclePrice, limitPrice } = params;
|
|
255
255
|
|
|
256
256
|
const twapMismatch =
|
|
257
|
-
perpMarket.
|
|
258
|
-
.sub(perpMarket.
|
|
257
|
+
perpMarket.marketStats.historicalOracleData.lastOraclePriceTwapTs
|
|
258
|
+
.sub(perpMarket.marketStats.lastMarkPriceTwapTs)
|
|
259
259
|
.abs()
|
|
260
260
|
.gte(new BN(60)) ||
|
|
261
|
-
perpMarket.
|
|
261
|
+
perpMarket.marketStats.volume24H.lte(new BN(100_000).mul(QUOTE_PRECISION));
|
|
262
262
|
|
|
263
263
|
let baselineStartOffset: BN;
|
|
264
264
|
|
|
@@ -266,27 +266,31 @@ export function getTriggerAuctionStartPrice(params: {
|
|
|
266
266
|
const contractTierNumber = getPerpMarketTierNumber(perpMarket);
|
|
267
267
|
const priceDivisor = contractTierNumber <= 1 ? 500 : 100;
|
|
268
268
|
baselineStartOffset = isVariant(direction, 'long')
|
|
269
|
-
? perpMarket.
|
|
270
|
-
: perpMarket.
|
|
269
|
+
? perpMarket.marketStats.lastBidPriceTwap.divn(priceDivisor)
|
|
270
|
+
: perpMarket.marketStats.lastAskPriceTwap.divn(priceDivisor).neg();
|
|
271
271
|
} else {
|
|
272
272
|
const markTwapSlow = isVariant(direction, 'long')
|
|
273
|
-
? perpMarket.
|
|
274
|
-
: perpMarket.
|
|
273
|
+
? perpMarket.marketStats.lastBidPriceTwap
|
|
274
|
+
: perpMarket.marketStats.lastAskPriceTwap;
|
|
275
275
|
|
|
276
|
-
const markTwapFast = perpMarket.
|
|
276
|
+
const markTwapFast = perpMarket.marketStats.lastMarkPriceTwap5Min;
|
|
277
277
|
const oracleTwapSlow =
|
|
278
|
-
perpMarket.
|
|
278
|
+
perpMarket.marketStats.historicalOracleData.lastOraclePriceTwap;
|
|
279
279
|
const oracleTwapFast =
|
|
280
|
-
perpMarket.
|
|
280
|
+
perpMarket.marketStats.historicalOracleData.lastOraclePriceTwap5Min;
|
|
281
281
|
|
|
282
282
|
const offsetSlow = markTwapSlow.sub(oracleTwapSlow);
|
|
283
283
|
const offsetFast = markTwapFast.sub(oracleTwapFast);
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
// long_spread/short_spread were removed from AMM in the decoupling refactor.
|
|
286
|
+
// Fall back to half base_spread as the per-side spread approximation; the
|
|
287
|
+
// AMM no longer caches an exact per-side spread without oracle context.
|
|
288
|
+
const halfBaseSpread = new BN(Math.floor(perpMarket.amm.baseSpread / 2));
|
|
289
|
+
const fracOfLongSpreadInPrice = halfBaseSpread
|
|
286
290
|
.mul(markTwapSlow)
|
|
287
291
|
.div(PRICE_PRECISION.muln(10)); // divide by 10x for safety
|
|
288
292
|
|
|
289
|
-
const fracOfShortSpreadInPrice =
|
|
293
|
+
const fracOfShortSpreadInPrice = halfBaseSpread
|
|
290
294
|
.mul(markTwapSlow)
|
|
291
295
|
.div(PRICE_PRECISION.muln(10)); // divide by 10x for safety
|
|
292
296
|
|
package/src/math/bankruptcy.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { isVariant } from '../types';
|
|
|
4
4
|
import { User } from '../user';
|
|
5
5
|
|
|
6
6
|
export function isUserBankrupt(user: User): boolean {
|
|
7
|
-
const userAccount = user.
|
|
7
|
+
const userAccount = user.getUserAccountOrThrow();
|
|
8
8
|
let hasLiability = false;
|
|
9
9
|
for (const position of userAccount.spotPositions) {
|
|
10
10
|
if (position.scaledBalance.gt(ZERO)) {
|