@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
|
@@ -5,7 +5,7 @@ const numericConstants_1 = require("../constants/numericConstants");
|
|
|
5
5
|
const position_1 = require("./position");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
7
|
function isUserBankrupt(user) {
|
|
8
|
-
const userAccount = user.
|
|
8
|
+
const userAccount = user.getUserAccountOrThrow();
|
|
9
9
|
let hasLiability = false;
|
|
10
10
|
for (const position of userAccount.spotPositions) {
|
|
11
11
|
if (position.scaledBalance.gt(numericConstants_1.ZERO)) {
|
|
@@ -1,4 +1,21 @@
|
|
|
1
|
-
import { RevenueShareOrder } from '../types';
|
|
1
|
+
import { OrderParams, RevenueShareEscrowAccount, RevenueShareOrder, UserStatsAccount } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* True when the user's RevenueShareEscrow was initialized with a referrer.
|
|
4
|
+
* Fills for such users must include the escrow account or the program rejects
|
|
5
|
+
* them with UnableToLoadRevenueShareAccount.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isBuilderReferral(userStats: Pick<UserStatsAccount, 'referrerStatus'>): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* True when the escrow was initialized with a referrer. Referral rewards
|
|
10
|
+
* accrue into such escrows on fills, so fills of the escrow owner's orders
|
|
11
|
+
* must include the escrow account (see `isBuilderReferral`).
|
|
12
|
+
*/
|
|
13
|
+
export declare function escrowHasReferrer(escrow: Pick<RevenueShareEscrowAccount, 'referrer'>): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* True when the order params carry a builder code (`builderIdx` +
|
|
16
|
+
* `builderFeeTenthBps`).
|
|
17
|
+
*/
|
|
18
|
+
export declare function hasBuilderParams(orderParams: Pick<OrderParams, 'builderIdx' | 'builderFeeTenthBps'>): boolean;
|
|
2
19
|
export declare function isBuilderOrderOpen(order: RevenueShareOrder): boolean;
|
|
3
20
|
export declare function isBuilderOrderCompleted(order: RevenueShareOrder): boolean;
|
|
4
21
|
export declare function isBuilderOrderReferral(order: RevenueShareOrder): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/math/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/math/builder.ts"],"names":[],"mappings":"AACA,OAAO,EACN,WAAW,EAEX,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAElB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,GACjD,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAC,GACjD,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,oBAAoB,CAAC,GACjE,OAAO,CAOT;AAGD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAEpE;AAGD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAEzE;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAExE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAEzE"}
|
package/lib/node/math/builder.js
CHANGED
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isBuilderOrderAvailable = exports.isBuilderOrderReferral = exports.isBuilderOrderCompleted = exports.isBuilderOrderOpen = void 0;
|
|
3
|
+
exports.isBuilderOrderAvailable = exports.isBuilderOrderReferral = exports.isBuilderOrderCompleted = exports.isBuilderOrderOpen = exports.hasBuilderParams = exports.escrowHasReferrer = exports.isBuilderReferral = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
/**
|
|
7
|
+
* True when the user's RevenueShareEscrow was initialized with a referrer.
|
|
8
|
+
* Fills for such users must include the escrow account or the program rejects
|
|
9
|
+
* them with UnableToLoadRevenueShareAccount.
|
|
10
|
+
*/
|
|
11
|
+
function isBuilderReferral(userStats) {
|
|
12
|
+
return (userStats.referrerStatus & types_1.ReferrerStatus.BuilderReferral) !== 0;
|
|
13
|
+
}
|
|
14
|
+
exports.isBuilderReferral = isBuilderReferral;
|
|
15
|
+
/**
|
|
16
|
+
* True when the escrow was initialized with a referrer. Referral rewards
|
|
17
|
+
* accrue into such escrows on fills, so fills of the escrow owner's orders
|
|
18
|
+
* must include the escrow account (see `isBuilderReferral`).
|
|
19
|
+
*/
|
|
20
|
+
function escrowHasReferrer(escrow) {
|
|
21
|
+
return !escrow.referrer.equals(web3_js_1.PublicKey.default);
|
|
22
|
+
}
|
|
23
|
+
exports.escrowHasReferrer = escrowHasReferrer;
|
|
24
|
+
/**
|
|
25
|
+
* True when the order params carry a builder code (`builderIdx` +
|
|
26
|
+
* `builderFeeTenthBps`).
|
|
27
|
+
*/
|
|
28
|
+
function hasBuilderParams(orderParams) {
|
|
29
|
+
return (orderParams.builderIdx !== null &&
|
|
30
|
+
orderParams.builderIdx !== undefined &&
|
|
31
|
+
orderParams.builderFeeTenthBps !== null &&
|
|
32
|
+
orderParams.builderFeeTenthBps !== undefined);
|
|
33
|
+
}
|
|
34
|
+
exports.hasBuilderParams = hasBuilderParams;
|
|
4
35
|
const FLAG_IS_OPEN = 0x01;
|
|
5
36
|
function isBuilderOrderOpen(order) {
|
|
6
37
|
return (order.bitFlags & FLAG_IS_OPEN) !== 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"funding.d.ts","sourceRoot":"","sources":["../../../src/math/funding.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAW1C,OAAO,EAAE,iBAAiB,EAAa,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"funding.d.ts","sourceRoot":"","sources":["../../../src/math/funding.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAW1C,OAAO,EAAE,iBAAiB,EAAa,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAoHtE;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,eAAe,CAAC,EAAE,eAAe,EACjC,SAAS,CAAC,EAAE,EAAE,EACd,GAAG,CAAC,EAAE,EAAE,GACN,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CA6HtB;AAcD;;;GAGG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,GAAG,MAAM,GACrB;IACF,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B,EAAE,MAAM,CAAC;CACpC,CAoDA;AAiBD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,eAAe,CAAC,EAAE,eAAe,EACjC,SAAS,CAAC,EAAE,EAAE,EACd,GAAG,CAAC,EAAE,EAAE,GACN,CAAC,EAAE,EAAE,EAAE,CAAC,CAgBV;AAED;;;;;;GAMG;AACH,wBAAgB,yCAAyC,CACxD,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,eAAe,CAAC,EAAE,eAAe,EACjC,SAAS,CAAC,EAAE,EAAE,EACd,GAAG,CAAC,EAAE,EAAE,GACN,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAiBlB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,EAAE,CAQlE"}
|
package/lib/node/math/funding.js
CHANGED
|
@@ -11,12 +11,12 @@ const utils_1 = require("./utils");
|
|
|
11
11
|
const numericConstants_2 = require("../constants/numericConstants");
|
|
12
12
|
function calculateLiveMarkTwap(market, mmOraclePriceData, markPrice, now, period = new anchor_1.BN(3600)) {
|
|
13
13
|
now = now || new anchor_1.BN((Date.now() / 1000).toFixed(0));
|
|
14
|
-
const lastMarkTwapWithMantissa = market.
|
|
15
|
-
const lastMarkPriceTwapTs = market.
|
|
14
|
+
const lastMarkTwapWithMantissa = market.marketStats.lastMarkPriceTwap;
|
|
15
|
+
const lastMarkPriceTwapTs = market.marketStats.lastMarkPriceTwapTs;
|
|
16
16
|
const timeSinceLastMarkChange = now.sub(lastMarkPriceTwapTs);
|
|
17
17
|
const markTwapTimeSinceLastUpdate = anchor_1.BN.max(period, anchor_1.BN.max(numericConstants_1.ZERO, period.sub(timeSinceLastMarkChange)));
|
|
18
18
|
if (!markPrice) {
|
|
19
|
-
const [bid, ask] = (0, amm_1.calculateBidAskPrice)(market.amm, mmOraclePriceData);
|
|
19
|
+
const [bid, ask] = (0, amm_1.calculateBidAskPrice)(market.amm, market.marketStats, mmOraclePriceData);
|
|
20
20
|
markPrice = bid.add(ask).div(new anchor_1.BN(2));
|
|
21
21
|
}
|
|
22
22
|
const markTwapWithMantissa = markTwapTimeSinceLastUpdate
|
|
@@ -29,21 +29,21 @@ function shrinkStaleTwaps(market, markTwapWithMantissa, oracleTwapWithMantissa,
|
|
|
29
29
|
now = now || new anchor_1.BN((Date.now() / 1000).toFixed(0));
|
|
30
30
|
let newMarkTwap = markTwapWithMantissa;
|
|
31
31
|
let newOracleTwap = oracleTwapWithMantissa;
|
|
32
|
-
if (market.
|
|
32
|
+
if (market.marketStats.lastMarkPriceTwapTs.gt(market.marketStats.historicalOracleData.lastOraclePriceTwapTs)) {
|
|
33
33
|
// shrink oracle based on invalid intervals
|
|
34
|
-
const oracleInvalidDuration = anchor_1.BN.max(numericConstants_1.ZERO, market.
|
|
35
|
-
const timeSinceLastOracleTwapUpdate = now.sub(market.
|
|
36
|
-
const oracleTwapTimeSinceLastUpdate = anchor_1.BN.max(numericConstants_1.ONE, anchor_1.BN.min(market.
|
|
34
|
+
const oracleInvalidDuration = anchor_1.BN.max(numericConstants_1.ZERO, market.marketStats.lastMarkPriceTwapTs.sub(market.marketStats.historicalOracleData.lastOraclePriceTwapTs));
|
|
35
|
+
const timeSinceLastOracleTwapUpdate = now.sub(market.marketStats.historicalOracleData.lastOraclePriceTwapTs);
|
|
36
|
+
const oracleTwapTimeSinceLastUpdate = anchor_1.BN.max(numericConstants_1.ONE, anchor_1.BN.min(market.marketStats.fundingPeriod, anchor_1.BN.max(numericConstants_1.ONE, market.marketStats.fundingPeriod.sub(timeSinceLastOracleTwapUpdate))));
|
|
37
37
|
newOracleTwap = oracleTwapTimeSinceLastUpdate
|
|
38
38
|
.mul(oracleTwapWithMantissa)
|
|
39
39
|
.add(oracleInvalidDuration.mul(markTwapWithMantissa))
|
|
40
40
|
.div(oracleTwapTimeSinceLastUpdate.add(oracleInvalidDuration));
|
|
41
41
|
}
|
|
42
|
-
else if (market.
|
|
42
|
+
else if (market.marketStats.lastMarkPriceTwapTs.lt(market.marketStats.historicalOracleData.lastOraclePriceTwapTs)) {
|
|
43
43
|
// shrink mark to oracle twap over tradless intervals
|
|
44
|
-
const tradelessDuration = anchor_1.BN.max(numericConstants_1.ZERO, market.
|
|
45
|
-
const timeSinceLastMarkTwapUpdate = now.sub(market.
|
|
46
|
-
const markTwapTimeSinceLastUpdate = anchor_1.BN.max(numericConstants_1.ONE, anchor_1.BN.min(market.
|
|
44
|
+
const tradelessDuration = anchor_1.BN.max(numericConstants_1.ZERO, market.marketStats.historicalOracleData.lastOraclePriceTwapTs.sub(market.marketStats.lastMarkPriceTwapTs));
|
|
45
|
+
const timeSinceLastMarkTwapUpdate = now.sub(market.marketStats.lastMarkPriceTwapTs);
|
|
46
|
+
const markTwapTimeSinceLastUpdate = anchor_1.BN.max(numericConstants_1.ONE, anchor_1.BN.min(market.marketStats.fundingPeriod, anchor_1.BN.max(numericConstants_1.ONE, market.marketStats.fundingPeriod.sub(timeSinceLastMarkTwapUpdate))));
|
|
47
47
|
newMarkTwap = markTwapTimeSinceLastUpdate
|
|
48
48
|
.mul(markTwapWithMantissa)
|
|
49
49
|
.add(tradelessDuration.mul(oracleTwapWithMantissa))
|
|
@@ -65,8 +65,11 @@ function calculateAllEstimatedFundingRate(market, mmOraclePriceData, oraclePrice
|
|
|
65
65
|
// todo: sufficiently differs from blockchain timestamp?
|
|
66
66
|
now = now || new anchor_1.BN((Date.now() / 1000).toFixed(0));
|
|
67
67
|
// calculate real-time mark and oracle twap
|
|
68
|
-
const liveMarkTwap = calculateLiveMarkTwap(market, mmOraclePriceData, markPrice, now, market.
|
|
69
|
-
|
|
68
|
+
const liveMarkTwap = calculateLiveMarkTwap(market, mmOraclePriceData, markPrice, now, market.marketStats.fundingPeriod);
|
|
69
|
+
if (!oraclePriceData) {
|
|
70
|
+
throw new Error('calculateAllEstimatedFundingRate: oraclePriceData is required for an initialized market');
|
|
71
|
+
}
|
|
72
|
+
const liveOracleTwap = (0, oracles_1.calculateLiveOracleTwap)(market.marketStats.historicalOracleData, oraclePriceData, now, market.marketStats.fundingPeriod);
|
|
70
73
|
const [markTwap, oracleTwap] = shrinkStaleTwaps(market, liveMarkTwap, liveOracleTwap, now);
|
|
71
74
|
// if(!markTwap.eq(liveMarkTwap)){
|
|
72
75
|
// console.log('shrink mark:', liveMarkTwap.toString(), '->', markTwap.toString());
|
|
@@ -89,9 +92,9 @@ function calculateAllEstimatedFundingRate(market, mmOraclePriceData, oraclePrice
|
|
|
89
92
|
.div(oracleTwap);
|
|
90
93
|
const secondsInHour = new anchor_1.BN(3600);
|
|
91
94
|
const hoursInDay = new anchor_1.BN(24);
|
|
92
|
-
const timeSinceLastUpdate = now.sub(market.
|
|
95
|
+
const timeSinceLastUpdate = now.sub(market.lastFundingRateTs);
|
|
93
96
|
const lowerboundEst = twapSpreadPct
|
|
94
|
-
.mul(market.
|
|
97
|
+
.mul(market.marketStats.fundingPeriod)
|
|
95
98
|
.mul(anchor_1.BN.min(secondsInHour, timeSinceLastUpdate))
|
|
96
99
|
.div(secondsInHour)
|
|
97
100
|
.div(secondsInHour)
|
|
@@ -107,16 +110,16 @@ function calculateAllEstimatedFundingRate(market, mmOraclePriceData, oraclePrice
|
|
|
107
110
|
let cappedAltEst;
|
|
108
111
|
let largerSide;
|
|
109
112
|
let smallerSide;
|
|
110
|
-
if (market.
|
|
111
|
-
largerSide = market.
|
|
112
|
-
smallerSide = market.
|
|
113
|
+
if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
|
|
114
|
+
largerSide = market.baseAssetAmountLong.abs();
|
|
115
|
+
smallerSide = market.baseAssetAmountShort.abs();
|
|
113
116
|
if (twapSpread.gt(new anchor_1.BN(0))) {
|
|
114
117
|
return [markTwap, oracleTwap, lowerboundEst, interpEst, interpEst];
|
|
115
118
|
}
|
|
116
119
|
}
|
|
117
|
-
else if (market.
|
|
118
|
-
largerSide = market.
|
|
119
|
-
smallerSide = market.
|
|
120
|
+
else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort.abs())) {
|
|
121
|
+
largerSide = market.baseAssetAmountShort.abs();
|
|
122
|
+
smallerSide = market.baseAssetAmountLong.abs();
|
|
120
123
|
if (twapSpread.lt(new anchor_1.BN(0))) {
|
|
121
124
|
return [markTwap, oracleTwap, lowerboundEst, interpEst, interpEst];
|
|
122
125
|
}
|
|
@@ -212,10 +215,10 @@ function getMaxPriceDivergenceForFundingRate(market, oracleTwap) {
|
|
|
212
215
|
*/
|
|
213
216
|
function calculateLongShortFundingRate(market, mmOraclePriceData, oraclePriceData, markPrice, now) {
|
|
214
217
|
const [_1, _2, _, cappedAltEst, interpEst] = calculateAllEstimatedFundingRate(market, mmOraclePriceData, oraclePriceData, markPrice, now);
|
|
215
|
-
if (market.
|
|
218
|
+
if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort)) {
|
|
216
219
|
return [cappedAltEst, interpEst];
|
|
217
220
|
}
|
|
218
|
-
else if (market.
|
|
221
|
+
else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort)) {
|
|
219
222
|
return [interpEst, cappedAltEst];
|
|
220
223
|
}
|
|
221
224
|
else {
|
|
@@ -232,10 +235,10 @@ exports.calculateLongShortFundingRate = calculateLongShortFundingRate;
|
|
|
232
235
|
*/
|
|
233
236
|
function calculateLongShortFundingRateAndLiveTwaps(market, mmOraclePriceData, oraclePriceData, markPrice, now) {
|
|
234
237
|
const [markTwapLive, oracleTwapLive, _2, cappedAltEst, interpEst] = calculateAllEstimatedFundingRate(market, mmOraclePriceData, oraclePriceData, markPrice, now);
|
|
235
|
-
if (market.
|
|
238
|
+
if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
|
|
236
239
|
return [markTwapLive, oracleTwapLive, cappedAltEst, interpEst];
|
|
237
240
|
}
|
|
238
|
-
else if (market.
|
|
241
|
+
else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort.abs())) {
|
|
239
242
|
return [markTwapLive, oracleTwapLive, interpEst, cappedAltEst];
|
|
240
243
|
}
|
|
241
244
|
else {
|
|
@@ -250,11 +253,8 @@ exports.calculateLongShortFundingRateAndLiveTwaps = calculateLongShortFundingRat
|
|
|
250
253
|
*/
|
|
251
254
|
function calculateFundingPool(market) {
|
|
252
255
|
// todo
|
|
253
|
-
|
|
254
|
-
const feePool = anchor_1.BN.max(numericConstants_1.ZERO, market.amm.totalFeeMinusDistributions
|
|
255
|
-
.sub(totalFeeLB)
|
|
256
|
-
.mul(new anchor_1.BN(1))
|
|
257
|
-
.div(new anchor_1.BN(3)));
|
|
256
|
+
// no protocol floor post-isolation: 1/3 of the AMM's own equity
|
|
257
|
+
const feePool = anchor_1.BN.max(numericConstants_1.ZERO, market.amm.totalFeeMinusDistributions.mul(new anchor_1.BN(1)).div(new anchor_1.BN(3)));
|
|
258
258
|
return feePool;
|
|
259
259
|
}
|
|
260
260
|
exports.calculateFundingPool = calculateFundingPool;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { BN } from '../isomorphic/anchor';
|
|
3
3
|
import { SpotMarketAccount } from '../types';
|
|
4
4
|
export declare function nextRevenuePoolSettleApr(spotMarket: SpotMarketAccount, vaultBalance: BN, // vault token amount
|
|
5
|
-
amount
|
|
5
|
+
amount: BN): number;
|
|
6
6
|
export declare function stakeAmountToShares(amount: BN, totalIfShares: BN, insuranceFundVaultBalance: BN): BN;
|
|
7
7
|
export declare function unstakeSharesToAmount(nShares: BN, totalIfShares: BN, insuranceFundVaultBalance: BN): BN;
|
|
8
8
|
export declare function unstakeSharesToAmountWithOpenRequest(nShares: BN, withdrawRequestShares: BN, withdrawRequestAmount: BN, totalIfShares: BN, insuranceFundVaultBalance: BN): BN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insurance.d.ts","sourceRoot":"","sources":["../../../src/math/insurance.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAmB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE9D,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,EAAE,EAAE,qBAAqB;AACvC,MAAM,
|
|
1
|
+
{"version":3,"file":"insurance.d.ts","sourceRoot":"","sources":["../../../src/math/insurance.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAmB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE9D,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,EAAE,EAAE,qBAAqB;AACvC,MAAM,EAAE,EAAE,GACR,MAAM,CAqCR;AAED,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,EAAE,EACV,aAAa,EAAE,EAAE,EACjB,yBAAyB,EAAE,EAAE,GAC3B,EAAE,CASJ;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,EAAE,EACX,aAAa,EAAE,EAAE,EACjB,yBAAyB,EAAE,EAAE,GAC3B,EAAE,CAYJ;AAED,wBAAgB,oCAAoC,CACnD,OAAO,EAAE,EAAE,EACX,qBAAqB,EAAE,EAAE,EACzB,qBAAqB,EAAE,EAAE,EACzB,aAAa,EAAE,EAAE,EACjB,yBAAyB,EAAE,EAAE,GAC3B,EAAE,CAqBJ"}
|
|
@@ -12,11 +12,10 @@ amount // delta token amount
|
|
|
12
12
|
// Conmputing the APR:
|
|
13
13
|
const revenuePoolBN = (0, spotBalance_1.getTokenAmount)(spotMarket.revenuePool.scaledBalance, spotMarket, types_1.SpotBalanceType.DEPOSIT);
|
|
14
14
|
const payoutRatio = 0.1;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
?
|
|
19
|
-
spotMarket.insuranceFund.totalFactor
|
|
15
|
+
// the insurance fund is 100% staker-owned: every settled token accrues to
|
|
16
|
+
// stakers as share-price appreciation (no protocol split)
|
|
17
|
+
const ratioForStakers = spotMarket.insuranceFund.revenueSettlePeriod.gt(numericConstants_1.ZERO)
|
|
18
|
+
? 1
|
|
20
19
|
: 0;
|
|
21
20
|
// Settle periods from on-chain data:
|
|
22
21
|
const revSettlePeriod = spotMarket.insuranceFund.revenueSettlePeriod.toNumber() * 1000;
|
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
import { BN } from '../isomorphic/anchor';
|
|
3
3
|
import { OraclePriceData } from '../oracles/types';
|
|
4
4
|
import { VelocityClient } from '../velocityClient';
|
|
5
|
-
import { PerpMarketAccount, PerpPosition
|
|
6
|
-
import { PublicKey } from '@solana/web3.js';
|
|
5
|
+
import { PerpMarketAccount, PerpPosition } from '../types';
|
|
7
6
|
export declare function calculateSizePremiumLiabilityWeight(size: BN, // AMM_RESERVE_PRECISION
|
|
8
7
|
imfFactor: BN, liabilityWeight: BN, precision: BN, isBounded?: boolean): BN;
|
|
9
8
|
export declare function calculateSizeDiscountAssetWeight(size: BN, // AMM_RESERVE_PRECISION
|
|
10
9
|
imfFactor: BN, assetWeight: BN): BN;
|
|
11
|
-
export declare function calculateOraclePriceForPerpMargin(perpPosition: PerpPosition, market: PerpMarketAccount, oraclePriceData: OraclePriceData): BN;
|
|
12
10
|
/**
|
|
13
11
|
* This is _not_ the same as liability value as for prediction markets, the liability for the short in prediction market is (1 - oracle price) * base
|
|
14
12
|
* See {@link calculatePerpLiabilityValue} to get the liabiltiy value
|
|
@@ -30,17 +28,11 @@ export declare function calculatePerpLiabilityValue(baseAssetAmount: BN, price:
|
|
|
30
28
|
* @param baseSize
|
|
31
29
|
* @returns
|
|
32
30
|
*/
|
|
33
|
-
export declare function calculateMarginUSDCRequiredForTrade(
|
|
31
|
+
export declare function calculateMarginUSDCRequiredForTrade(velocityClient: VelocityClient, targetMarketIndex: number, baseSize: BN, userMaxMarginRatio?: number, entryPrice?: BN): BN;
|
|
34
32
|
/**
|
|
35
33
|
* Similar to calculatetMarginUSDCRequiredForTrade, but calculates how much of a given collateral is required to cover the margin requirements for a given trade. Basically does the same thing as getMarginUSDCRequiredForTrade but also accounts for asset weight of the selected collateral.
|
|
36
34
|
*
|
|
37
35
|
* Returns collateral required in the precision of the target collateral market.
|
|
38
36
|
*/
|
|
39
|
-
export declare function calculateCollateralDepositRequiredForTrade(
|
|
40
|
-
export declare function calculateCollateralValueOfDeposit(driftClient: VelocityClient, collateralIndex: number, baseSize: BN): BN;
|
|
41
|
-
export declare function calculateLiquidationPrice(freeCollateral: BN, freeCollateralDelta: BN, oraclePrice: BN): BN;
|
|
42
|
-
export declare function calculateUserMaxPerpOrderSize(driftClient: VelocityClient, userAccountKey: PublicKey, userAccount: UserAccount, targetMarketIndex: number, tradeSide: PositionDirection): {
|
|
43
|
-
tradeSize: BN;
|
|
44
|
-
oppositeSideTradeSize: BN;
|
|
45
|
-
};
|
|
37
|
+
export declare function calculateCollateralDepositRequiredForTrade(velocityClient: VelocityClient, targetMarketIndex: number, baseSize: BN, collateralIndex: number, userMaxMarginRatio?: number, estEntryPrice?: BN): BN;
|
|
46
38
|
//# sourceMappingURL=margin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"margin.d.ts","sourceRoot":"","sources":["../../../src/math/margin.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"margin.d.ts","sourceRoot":"","sources":["../../../src/math/margin.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAI3D,wBAAgB,mCAAmC,CAClD,IAAI,EAAE,EAAE,EAAE,wBAAwB;AAClC,SAAS,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,SAAS,EAAE,EAAE,EACb,SAAS,UAAO,GACd,EAAE,CA4BJ;AAED,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,EAAE,EAAE,wBAAwB;AAClC,SAAS,EAAE,EAAE,EACb,WAAW,EAAE,EAAE,GACb,EAAE,CAuBJ;AAED;;;;;;;GAOG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EAC/C,iBAAiB,UAAQ,GACvB,EAAE,CAeJ;AAED,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,EAAE,GACb,EAAE,CAMJ;AAED,wBAAgB,oCAAoC,CACnD,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,EAAE,EACf,iBAAiB,GAAE,OAAc,GAC/B;IAAE,wBAAwB,EAAE,EAAE,CAAC;IAAC,uBAAuB,EAAE,EAAE,CAAA;CAAE,CAkC/D;AAED,wBAAgB,2BAA2B,CAC1C,eAAe,EAAE,EAAE,EACnB,KAAK,EAAE,EAAE,GACP,EAAE,CAEJ;AAED;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAClD,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,kBAAkB,CAAC,EAAE,MAAM,EAC3B,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAsBJ;AAED;;;;GAIG;AACH,wBAAgB,0CAA0C,CACzD,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,eAAe,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,aAAa,CAAC,EAAE,EAAE,GAChB,EAAE,CAgCJ"}
|
package/lib/node/math/margin.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.calculateCollateralDepositRequiredForTrade = exports.calculateMarginUSDCRequiredForTrade = exports.calculatePerpLiabilityValue = exports.calculateWorstCasePerpLiabilityValue = exports.calculateWorstCaseBaseAssetAmount = exports.calculateBaseAssetValueWithOracle = exports.calculateSizeDiscountAssetWeight = exports.calculateSizePremiumLiabilityWeight = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Margin calculation helpers — TypeScript mirror of `programs/
|
|
5
|
+
* Margin calculation helpers — TypeScript mirror of `programs/velocity/src/math/margin.rs`.
|
|
6
6
|
* Computes initial/maintenance margin requirements, free collateral, and account health.
|
|
7
7
|
* Used by {@link User} for leverage queries and by keeper bots for liquidation eligibility checks.
|
|
8
8
|
*/
|
|
@@ -11,8 +11,6 @@ const numericConstants_1 = require("../constants/numericConstants");
|
|
|
11
11
|
const anchor_1 = require("../isomorphic/anchor");
|
|
12
12
|
const market_1 = require("./market");
|
|
13
13
|
const spotBalance_1 = require("./spotBalance");
|
|
14
|
-
const oneShotUserAccountSubscriber_1 = require("../accounts/oneShotUserAccountSubscriber");
|
|
15
|
-
const user_1 = require("../user");
|
|
16
14
|
const types_1 = require("../types");
|
|
17
15
|
const assert_1 = require("../assert/assert");
|
|
18
16
|
function calculateSizePremiumLiabilityWeight(size, // AMM_RESERVE_PRECISION
|
|
@@ -55,22 +53,6 @@ imfFactor, assetWeight) {
|
|
|
55
53
|
return minAssetWeight;
|
|
56
54
|
}
|
|
57
55
|
exports.calculateSizeDiscountAssetWeight = calculateSizeDiscountAssetWeight;
|
|
58
|
-
function calculateOraclePriceForPerpMargin(perpPosition, market, oraclePriceData) {
|
|
59
|
-
const oraclePriceOffset = anchor_1.BN.min(new anchor_1.BN(market.amm.maxSpread)
|
|
60
|
-
.mul(oraclePriceData.price)
|
|
61
|
-
.div(numericConstants_1.BID_ASK_SPREAD_PRECISION), oraclePriceData.confidence.add(new anchor_1.BN(market.amm.baseSpread)
|
|
62
|
-
.mul(oraclePriceData.price)
|
|
63
|
-
.div(numericConstants_1.BID_ASK_SPREAD_PRECISION)));
|
|
64
|
-
let marginPrice;
|
|
65
|
-
if (perpPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
|
|
66
|
-
marginPrice = oraclePriceData.price.sub(oraclePriceOffset);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
marginPrice = oraclePriceData.price.add(oraclePriceOffset);
|
|
70
|
-
}
|
|
71
|
-
return marginPrice;
|
|
72
|
-
}
|
|
73
|
-
exports.calculateOraclePriceForPerpMargin = calculateOraclePriceForPerpMargin;
|
|
74
56
|
/**
|
|
75
57
|
* This is _not_ the same as liability value as for prediction markets, the liability for the short in prediction market is (1 - oracle price) * base
|
|
76
58
|
* See {@link calculatePerpLiabilityValue} to get the liabiltiy value
|
|
@@ -130,9 +112,9 @@ exports.calculatePerpLiabilityValue = calculatePerpLiabilityValue;
|
|
|
130
112
|
* @param baseSize
|
|
131
113
|
* @returns
|
|
132
114
|
*/
|
|
133
|
-
function calculateMarginUSDCRequiredForTrade(
|
|
134
|
-
const targetMarket =
|
|
135
|
-
const price = entryPrice !== null && entryPrice !== void 0 ? entryPrice :
|
|
115
|
+
function calculateMarginUSDCRequiredForTrade(velocityClient, targetMarketIndex, baseSize, userMaxMarginRatio, entryPrice) {
|
|
116
|
+
const targetMarket = velocityClient.getPerpMarketAccountOrThrow(targetMarketIndex);
|
|
117
|
+
const price = entryPrice !== null && entryPrice !== void 0 ? entryPrice : velocityClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
|
|
136
118
|
const perpLiabilityValue = calculatePerpLiabilityValue(baseSize, price);
|
|
137
119
|
const marginRequired = new anchor_1.BN((0, market_1.calculateMarketMarginRatio)(targetMarket, baseSize.abs(), 'Initial', userMaxMarginRatio))
|
|
138
120
|
.mul(perpLiabilityValue)
|
|
@@ -145,13 +127,13 @@ exports.calculateMarginUSDCRequiredForTrade = calculateMarginUSDCRequiredForTrad
|
|
|
145
127
|
*
|
|
146
128
|
* Returns collateral required in the precision of the target collateral market.
|
|
147
129
|
*/
|
|
148
|
-
function calculateCollateralDepositRequiredForTrade(
|
|
149
|
-
const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(
|
|
150
|
-
const collateralMarket =
|
|
151
|
-
const collateralOracleData =
|
|
130
|
+
function calculateCollateralDepositRequiredForTrade(velocityClient, targetMarketIndex, baseSize, collateralIndex, userMaxMarginRatio, estEntryPrice) {
|
|
131
|
+
const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(velocityClient, targetMarketIndex, baseSize, userMaxMarginRatio, estEntryPrice);
|
|
132
|
+
const collateralMarket = velocityClient.getSpotMarketAccountOrThrow(collateralIndex);
|
|
133
|
+
const collateralOracleData = velocityClient.getOracleDataForSpotMarket(collateralIndex);
|
|
152
134
|
const scaledAssetWeight = (0, spotBalance_1.calculateScaledInitialAssetWeight)(collateralMarket, collateralOracleData.price);
|
|
153
135
|
// Base amount required to deposit = (marginRequiredUsdc / priceOfAsset) / assetWeight .. (E.g. $100 required / $10000 price / 0.5 weight)
|
|
154
|
-
const baseAmountRequired =
|
|
136
|
+
const baseAmountRequired = velocityClient
|
|
155
137
|
.convertToSpotPrecision(collateralIndex, marginRequiredUsdc)
|
|
156
138
|
.mul(numericConstants_1.PRICE_PRECISION) // adjust for division by oracle price
|
|
157
139
|
.mul(numericConstants_1.SPOT_MARKET_WEIGHT_PRECISION) // adjust for division by scaled asset weight
|
|
@@ -162,44 +144,3 @@ function calculateCollateralDepositRequiredForTrade(driftClient, targetMarketInd
|
|
|
162
144
|
return baseAmountRequired;
|
|
163
145
|
}
|
|
164
146
|
exports.calculateCollateralDepositRequiredForTrade = calculateCollateralDepositRequiredForTrade;
|
|
165
|
-
function calculateCollateralValueOfDeposit(driftClient, collateralIndex, baseSize) {
|
|
166
|
-
const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
|
|
167
|
-
const collateralOracleData = driftClient.getOracleDataForSpotMarket(collateralIndex);
|
|
168
|
-
const scaledAssetWeight = (0, spotBalance_1.calculateScaledInitialAssetWeight)(collateralMarket, collateralOracleData.price);
|
|
169
|
-
// CollateralBaseValue = oracle price * collateral base amount (and shift to QUOTE_PRECISION)
|
|
170
|
-
const collateralBaseValue = collateralOracleData.price
|
|
171
|
-
.mul(baseSize)
|
|
172
|
-
.mul(numericConstants_1.QUOTE_PRECISION)
|
|
173
|
-
.div(numericConstants_1.PRICE_PRECISION)
|
|
174
|
-
.div(new anchor_1.BN(10).pow(new anchor_1.BN(collateralMarket.decimals)));
|
|
175
|
-
const depositCollateralValue = collateralBaseValue
|
|
176
|
-
.mul(scaledAssetWeight)
|
|
177
|
-
.div(numericConstants_1.SPOT_MARKET_WEIGHT_PRECISION);
|
|
178
|
-
return depositCollateralValue;
|
|
179
|
-
}
|
|
180
|
-
exports.calculateCollateralValueOfDeposit = calculateCollateralValueOfDeposit;
|
|
181
|
-
function calculateLiquidationPrice(freeCollateral, freeCollateralDelta, oraclePrice) {
|
|
182
|
-
const liqPriceDelta = freeCollateral
|
|
183
|
-
.mul(numericConstants_1.QUOTE_PRECISION)
|
|
184
|
-
.div(freeCollateralDelta);
|
|
185
|
-
const liqPrice = oraclePrice.sub(liqPriceDelta);
|
|
186
|
-
if (liqPrice.lt(numericConstants_1.ZERO)) {
|
|
187
|
-
return new anchor_1.BN(-1);
|
|
188
|
-
}
|
|
189
|
-
return liqPrice;
|
|
190
|
-
}
|
|
191
|
-
exports.calculateLiquidationPrice = calculateLiquidationPrice;
|
|
192
|
-
function calculateUserMaxPerpOrderSize(driftClient, userAccountKey, userAccount, targetMarketIndex, tradeSide) {
|
|
193
|
-
const userAccountSubscriber = new oneShotUserAccountSubscriber_1.OneShotUserAccountSubscriber(driftClient.program, userAccountKey, userAccount);
|
|
194
|
-
const user = new user_1.User({
|
|
195
|
-
driftClient,
|
|
196
|
-
userAccountPublicKey: userAccountKey,
|
|
197
|
-
accountSubscription: {
|
|
198
|
-
type: 'custom',
|
|
199
|
-
userAccountSubscriber: userAccountSubscriber,
|
|
200
|
-
},
|
|
201
|
-
});
|
|
202
|
-
user.isSubscribed = true;
|
|
203
|
-
return user.getMaxTradeSizeUSDCForPerp(targetMarketIndex, tradeSide);
|
|
204
|
-
}
|
|
205
|
-
exports.calculateUserMaxPerpOrderSize = calculateUserMaxPerpOrderSize;
|
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
/// <reference types="bn.js" />
|
|
2
2
|
import { BN } from '../isomorphic/anchor';
|
|
3
|
-
import { PerpMarketAccount,
|
|
3
|
+
import { PerpMarketAccount, MarginCategory, SpotMarketAccount } from '../types';
|
|
4
4
|
import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
|
|
5
|
-
import { DLOB } from '../dlob/DLOB';
|
|
6
5
|
/**
|
|
7
6
|
* Calculates market mark price
|
|
8
7
|
*
|
|
9
8
|
* @param market
|
|
10
9
|
* @return markPrice : Precision PRICE_PRECISION
|
|
11
10
|
*/
|
|
12
|
-
export declare function calculateReservePrice(market: PerpMarketAccount, mmOraclePriceData
|
|
11
|
+
export declare function calculateReservePrice(market: PerpMarketAccount, mmOraclePriceData?: MMOraclePriceData): BN;
|
|
13
12
|
/**
|
|
14
13
|
* Calculates market bid price
|
|
15
14
|
*
|
|
16
15
|
* @param market
|
|
17
16
|
* @return bidPrice : Precision PRICE_PRECISION
|
|
18
17
|
*/
|
|
19
|
-
export declare function calculateBidPrice(market: PerpMarketAccount, mmOraclePriceData
|
|
18
|
+
export declare function calculateBidPrice(market: PerpMarketAccount, mmOraclePriceData?: MMOraclePriceData, latestSlot?: BN): BN;
|
|
20
19
|
/**
|
|
21
20
|
* Calculates market ask price
|
|
22
21
|
*
|
|
23
22
|
* @param market
|
|
24
23
|
* @return askPrice : Precision PRICE_PRECISION
|
|
25
24
|
*/
|
|
26
|
-
export declare function calculateAskPrice(market: PerpMarketAccount, mmOraclePriceData
|
|
27
|
-
export declare function calculateNewMarketAfterTrade(baseAssetAmount: BN, direction: PositionDirection, market: PerpMarketAccount): PerpMarketAccount;
|
|
28
|
-
export declare function calculateOracleReserveSpread(market: PerpMarketAccount, mmOraclePriceData: MMOraclePriceData): BN;
|
|
25
|
+
export declare function calculateAskPrice(market: PerpMarketAccount, mmOraclePriceData?: MMOraclePriceData, latestSlot?: BN): BN;
|
|
29
26
|
export declare function calculateOracleSpread(price: BN, oraclePriceData: OraclePriceData): BN;
|
|
30
27
|
export declare function calculateMarketMarginRatio(market: PerpMarketAccount, size: BN, marginCategory: MarginCategory, customMarginRatio?: number): number;
|
|
31
28
|
export declare function calculateUnrealizedAssetWeight(market: PerpMarketAccount, quoteSpotMarket: SpotMarketAccount, unrealizedPnl: BN, marginCategory: MarginCategory, oraclePriceData: Pick<OraclePriceData, 'price'>): BN;
|
|
@@ -33,11 +30,6 @@ export declare function calculateMarketAvailablePNL(perpMarket: PerpMarketAccoun
|
|
|
33
30
|
export declare function calculateMarketMaxAvailableInsurance(perpMarket: PerpMarketAccount, spotMarket: SpotMarketAccount): BN;
|
|
34
31
|
export declare function calculateNetUserPnl(perpMarket: PerpMarketAccount, oraclePriceData: Pick<OraclePriceData, 'price'>): BN;
|
|
35
32
|
export declare function calculateNetUserPnlImbalance(perpMarket: PerpMarketAccount, spotMarket: SpotMarketAccount, oraclePriceData: Pick<OraclePriceData, 'price'>, applyFeePoolDiscount?: boolean): BN;
|
|
36
|
-
export declare function calculateAvailablePerpLiquidity(market: PerpMarketAccount, mmOraclePriceData: MMOraclePriceData, dlob: DLOB, slot: number): {
|
|
37
|
-
bids: BN;
|
|
38
|
-
asks: BN;
|
|
39
|
-
};
|
|
40
|
-
export declare function calculatePerpMarketBaseLiquidatorFee(market: PerpMarketAccount): number;
|
|
41
33
|
/**
|
|
42
34
|
* Calculates trigger price for a perp market based on oracle price and current time
|
|
43
35
|
* Implements the same logic as the Rust get_trigger_price function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/math/market.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EACN,iBAAiB,
|
|
1
|
+
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/math/market.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EACN,iBAAiB,EAEjB,cAAc,EACd,iBAAiB,EAGjB,MAAM,UAAU,CAAC;AAUlB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AActE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,GACnC,EAAE,CAOJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAWJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAWJ;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,EAAE,EACT,eAAe,EAAE,eAAe,GAC9B,EAAE,CAEJ;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,EAAE,EACR,cAAc,EAAE,cAAc,EAC9B,iBAAiB,SAAI,GACnB,MAAM,CAgCR;AAED,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,iBAAiB,EAClC,aAAa,EAAE,EAAE,EACjB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CA+BJ;AAED,wBAAgB,2BAA2B,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAMJ;AAED,wBAAgB,oCAAoC,CACnD,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAcJ;AAED,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,EAAE,CAaJ;AAED,wBAAgB,4BAA4B,CAC3C,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,EAC/C,oBAAoB,UAAO,GACzB,EAAE,CAoBJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,EAAE,EACf,GAAG,EAAE,EAAE,EACP,cAAc,EAAE,OAAO,GACrB,EAAE,CA2BJ"}
|
package/lib/node/math/market.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTriggerPrice = exports.
|
|
3
|
+
exports.getTriggerPrice = exports.calculateNetUserPnlImbalance = exports.calculateNetUserPnl = exports.calculateMarketMaxAvailableInsurance = exports.calculateMarketAvailablePNL = exports.calculateUnrealizedAssetWeight = exports.calculateMarketMarginRatio = exports.calculateOracleSpread = exports.calculateAskPrice = exports.calculateBidPrice = exports.calculateReservePrice = void 0;
|
|
4
4
|
const anchor_1 = require("../isomorphic/anchor");
|
|
5
5
|
const types_1 = require("../types");
|
|
6
6
|
const amm_1 = require("./amm");
|
|
@@ -26,7 +26,7 @@ exports.calculateReservePrice = calculateReservePrice;
|
|
|
26
26
|
* @return bidPrice : Precision PRICE_PRECISION
|
|
27
27
|
*/
|
|
28
28
|
function calculateBidPrice(market, mmOraclePriceData, latestSlot) {
|
|
29
|
-
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, types_1.PositionDirection.SHORT, mmOraclePriceData, latestSlot);
|
|
29
|
+
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, market.marketStats, types_1.PositionDirection.SHORT, mmOraclePriceData, latestSlot);
|
|
30
30
|
return (0, amm_1.calculatePrice)(baseAssetReserve, quoteAssetReserve, newPeg);
|
|
31
31
|
}
|
|
32
32
|
exports.calculateBidPrice = calculateBidPrice;
|
|
@@ -37,25 +37,10 @@ exports.calculateBidPrice = calculateBidPrice;
|
|
|
37
37
|
* @return askPrice : Precision PRICE_PRECISION
|
|
38
38
|
*/
|
|
39
39
|
function calculateAskPrice(market, mmOraclePriceData, latestSlot) {
|
|
40
|
-
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, types_1.PositionDirection.LONG, mmOraclePriceData, latestSlot);
|
|
40
|
+
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, market.marketStats, types_1.PositionDirection.LONG, mmOraclePriceData, latestSlot);
|
|
41
41
|
return (0, amm_1.calculatePrice)(baseAssetReserve, quoteAssetReserve, newPeg);
|
|
42
42
|
}
|
|
43
43
|
exports.calculateAskPrice = calculateAskPrice;
|
|
44
|
-
function calculateNewMarketAfterTrade(baseAssetAmount, direction, market) {
|
|
45
|
-
const [newQuoteAssetReserve, newBaseAssetReserve] = (0, amm_1.calculateAmmReservesAfterSwap)(market.amm, 'base', baseAssetAmount.abs(), (0, amm_1.getSwapDirection)('base', direction));
|
|
46
|
-
const newAmm = Object.assign({}, market.amm);
|
|
47
|
-
const newMarket = Object.assign({}, market);
|
|
48
|
-
newMarket.amm = newAmm;
|
|
49
|
-
newMarket.amm.quoteAssetReserve = newQuoteAssetReserve;
|
|
50
|
-
newMarket.amm.baseAssetReserve = newBaseAssetReserve;
|
|
51
|
-
return newMarket;
|
|
52
|
-
}
|
|
53
|
-
exports.calculateNewMarketAfterTrade = calculateNewMarketAfterTrade;
|
|
54
|
-
function calculateOracleReserveSpread(market, mmOraclePriceData) {
|
|
55
|
-
const reservePrice = calculateReservePrice(market, mmOraclePriceData);
|
|
56
|
-
return calculateOracleSpread(reservePrice, mmOraclePriceData);
|
|
57
|
-
}
|
|
58
|
-
exports.calculateOracleReserveSpread = calculateOracleReserveSpread;
|
|
59
44
|
function calculateOracleSpread(price, oraclePriceData) {
|
|
60
45
|
return price.sub(oraclePriceData.price);
|
|
61
46
|
}
|
|
@@ -122,7 +107,7 @@ function calculateNetUserPnl(perpMarket, oraclePriceData) {
|
|
|
122
107
|
.mul(oraclePriceData.price)
|
|
123
108
|
.div(numericConstants_1.BASE_PRECISION)
|
|
124
109
|
.div(numericConstants_1.PRICE_TO_QUOTE_PRECISION);
|
|
125
|
-
const netUserCostBasis = perpMarket.
|
|
110
|
+
const netUserCostBasis = perpMarket.quoteAssetAmount.add(perpMarket.netUnsettledFundingPnl);
|
|
126
111
|
const netUserPnl = netUserPositionValue.add(netUserCostBasis);
|
|
127
112
|
return netUserPnl;
|
|
128
113
|
}
|
|
@@ -138,25 +123,6 @@ function calculateNetUserPnlImbalance(perpMarket, spotMarket, oraclePriceData, a
|
|
|
138
123
|
return imbalance;
|
|
139
124
|
}
|
|
140
125
|
exports.calculateNetUserPnlImbalance = calculateNetUserPnlImbalance;
|
|
141
|
-
function calculateAvailablePerpLiquidity(market, mmOraclePriceData, dlob, slot) {
|
|
142
|
-
let [bids, asks] = (0, amm_1.calculateMarketOpenBidAsk)(market.amm.baseAssetReserve, market.amm.minBaseAssetReserve, market.amm.maxBaseAssetReserve, market.amm.orderStepSize);
|
|
143
|
-
asks = asks.abs();
|
|
144
|
-
for (const bid of dlob.getRestingLimitBids(market.marketIndex, slot, types_1.MarketType.PERP, mmOraclePriceData)) {
|
|
145
|
-
bids = bids.add(bid.order.baseAssetAmount.sub(bid.order.baseAssetAmountFilled));
|
|
146
|
-
}
|
|
147
|
-
for (const ask of dlob.getRestingLimitAsks(market.marketIndex, slot, types_1.MarketType.PERP, mmOraclePriceData)) {
|
|
148
|
-
asks = asks.add(ask.order.baseAssetAmount.sub(ask.order.baseAssetAmountFilled));
|
|
149
|
-
}
|
|
150
|
-
return {
|
|
151
|
-
bids: bids,
|
|
152
|
-
asks: asks,
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
exports.calculateAvailablePerpLiquidity = calculateAvailablePerpLiquidity;
|
|
156
|
-
function calculatePerpMarketBaseLiquidatorFee(market) {
|
|
157
|
-
return market.liquidatorFee;
|
|
158
|
-
}
|
|
159
|
-
exports.calculatePerpMarketBaseLiquidatorFee = calculatePerpMarketBaseLiquidatorFee;
|
|
160
126
|
/**
|
|
161
127
|
* Calculates trigger price for a perp market based on oracle price and current time
|
|
162
128
|
* Implements the same logic as the Rust get_trigger_price function
|
|
@@ -172,8 +138,8 @@ function getTriggerPrice(market, oraclePrice, now, useMedianPrice) {
|
|
|
172
138
|
}
|
|
173
139
|
const lastFillPrice = market.lastFillPrice;
|
|
174
140
|
// Calculate 5-minute basis
|
|
175
|
-
const markPrice5minTwap = market.
|
|
176
|
-
const lastOraclePriceTwap5min = market.
|
|
141
|
+
const markPrice5minTwap = market.marketStats.lastMarkPriceTwap5Min;
|
|
142
|
+
const lastOraclePriceTwap5min = market.marketStats.historicalOracleData.lastOraclePriceTwap5Min;
|
|
177
143
|
const basis5min = markPrice5minTwap.sub(lastOraclePriceTwap5min);
|
|
178
144
|
const oraclePlusBasis5min = oraclePrice.add(basis5min);
|
|
179
145
|
// Calculate funding basis
|
|
@@ -193,19 +159,19 @@ exports.getTriggerPrice = getTriggerPrice;
|
|
|
193
159
|
* Implements the same logic as the Rust get_last_funding_basis function
|
|
194
160
|
*/
|
|
195
161
|
function getLastFundingBasis(market, oraclePrice, now) {
|
|
196
|
-
if (market.
|
|
197
|
-
const lastFundingRate = market.
|
|
162
|
+
if (market.marketStats.lastFundingOracleTwap.gt(numericConstants_1.ZERO)) {
|
|
163
|
+
const lastFundingRate = market.lastFundingRate
|
|
198
164
|
.mul(numericConstants_1.PRICE_PRECISION)
|
|
199
|
-
.div(market.
|
|
165
|
+
.div(market.marketStats.lastFundingOracleTwap)
|
|
200
166
|
.muln(24);
|
|
201
167
|
const lastFundingRatePreAdj = lastFundingRate.sub(numericConstants_1.FUNDING_RATE_PRECISION.div(new anchor_1.BN(3333)) // FUNDING_RATE_OFFSET_PERCENTAGE
|
|
202
168
|
);
|
|
203
|
-
const timeLeftUntilFundingUpdate = anchor_1.BN.min(anchor_1.BN.max(now.sub(market.
|
|
169
|
+
const timeLeftUntilFundingUpdate = anchor_1.BN.min(anchor_1.BN.max(now.sub(market.lastFundingRateTs), numericConstants_1.ZERO), market.marketStats.fundingPeriod);
|
|
204
170
|
const lastFundingBasis = oraclePrice
|
|
205
171
|
.mul(lastFundingRatePreAdj)
|
|
206
172
|
.div(numericConstants_1.PERCENTAGE_PRECISION)
|
|
207
|
-
.mul(market.
|
|
208
|
-
.div(market.
|
|
173
|
+
.mul(market.marketStats.fundingPeriod.sub(timeLeftUntilFundingUpdate))
|
|
174
|
+
.div(market.marketStats.fundingPeriod)
|
|
209
175
|
.div(new anchor_1.BN(1000)); // FUNDING_RATE_BUFFER
|
|
210
176
|
return lastFundingBasis;
|
|
211
177
|
}
|