@drift-labs/sdk 2.130.0-beta.9 → 2.130.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/VERSION +1 -1
- package/lib/browser/accounts/{userAccount/basicUserAccountSubscriber.d.ts → basicUserAccountSubscriber.d.ts} +2 -2
- package/lib/browser/accounts/{bulkAccountLoader/bulkAccountLoader.d.ts → bulkAccountLoader.d.ts} +2 -2
- package/lib/browser/accounts/{bulkAccountLoader/bulkAccountLoader.js → bulkAccountLoader.js} +2 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +1 -1
- package/lib/browser/accounts/bulkUserSubscription.d.ts +1 -1
- package/lib/browser/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.js → customizedCadenceBulkAccountLoader.js} +1 -1
- package/lib/browser/accounts/{baseSubscribers/grpcAccountSubscriber.d.ts → grpcAccountSubscriber.d.ts} +2 -1
- package/lib/{node/accounts/baseSubscribers → browser/accounts}/grpcAccountSubscriber.js +17 -13
- package/lib/browser/accounts/{driftClientAccount/grpcDriftClientAccountSubscriber.d.ts → grpcDriftClientAccountSubscriber.d.ts} +2 -2
- package/lib/{node/accounts/driftClientAccount → browser/accounts}/grpcDriftClientAccountSubscriber.js +4 -4
- package/lib/browser/accounts/{insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.d.ts → grpcInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
- package/lib/{node/accounts/insuranceFundStakeAccount → browser/accounts}/grpcInsuranceFundStakeAccountSubscriber.js +1 -1
- package/lib/browser/accounts/{programAccount/grpcProgramAccountSubscriber.d.ts → grpcProgramAccountSubscriber.d.ts} +2 -1
- package/lib/browser/accounts/{programAccount/grpcProgramAccountSubscriber.js → grpcProgramAccountSubscriber.js} +17 -13
- package/lib/browser/accounts/{userAccount/grpcUserAccountSubscriber.d.ts → grpcUserAccountSubscriber.d.ts} +2 -2
- package/lib/browser/accounts/{userAccount/grpcUserAccountSubscriber.js → grpcUserAccountSubscriber.js} +1 -1
- package/lib/browser/accounts/{userStatsAccount/grpcUserStatsAccountSubscriber.d.ts → grpcUserStatsAccountSubscriber.d.ts} +2 -2
- package/lib/{node/accounts/userStatsAccount → browser/accounts}/grpcUserStatsAccountSubscriber.js +1 -1
- package/lib/browser/accounts/{userAccount/oneShotUserAccountSubscriber.d.ts → oneShotUserAccountSubscriber.d.ts} +2 -2
- package/lib/browser/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.d.ts → pollingDriftClientAccountSubscriber.d.ts} +5 -5
- package/lib/browser/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.js → pollingDriftClientAccountSubscriber.js} +8 -8
- package/lib/browser/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.d.ts → pollingHighLeverageModeConfigAccountSubscriber.d.ts} +3 -3
- package/lib/browser/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.js → pollingHighLeverageModeConfigAccountSubscriber.js} +1 -1
- package/lib/browser/accounts/{insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.d.ts → pollingInsuranceFundStakeAccountSubscriber.d.ts} +3 -3
- package/lib/{node/accounts/insuranceFundStakeAccount → browser/accounts}/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
- package/lib/browser/accounts/{oracleAccount/pollingOracleAccountSubscriber.d.ts → pollingOracleAccountSubscriber.d.ts} +3 -3
- package/lib/{node/accounts/oracleAccount → browser/accounts}/pollingOracleAccountSubscriber.js +1 -1
- package/lib/browser/accounts/{tokenAccount/pollingTokenAccountSubscriber.d.ts → pollingTokenAccountSubscriber.d.ts} +2 -2
- package/lib/browser/accounts/{tokenAccount/pollingTokenAccountSubscriber.js → pollingTokenAccountSubscriber.js} +2 -2
- package/lib/browser/accounts/{userAccount/pollingUserAccountSubscriber.d.ts → pollingUserAccountSubscriber.d.ts} +4 -4
- package/lib/browser/accounts/{userAccount/pollingUserAccountSubscriber.js → pollingUserAccountSubscriber.js} +1 -1
- package/lib/browser/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.d.ts → pollingUserStatsAccountSubscriber.d.ts} +3 -3
- package/lib/browser/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.js → pollingUserStatsAccountSubscriber.js} +1 -1
- package/lib/browser/accounts/types.d.ts +11 -0
- package/lib/browser/accounts/{baseSubscribers/webSocketAccountSubscriber.d.ts → webSocketAccountSubscriber.d.ts} +1 -1
- package/lib/{node/accounts/baseSubscribers → browser/accounts}/webSocketAccountSubscriber.js +1 -1
- package/lib/browser/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.d.ts → webSocketDriftClientAccountSubscriber.d.ts} +4 -4
- package/lib/browser/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.js → webSocketDriftClientAccountSubscriber.js} +9 -9
- package/lib/browser/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.d.ts → webSocketHighLeverageModeConfigAccountSubscriber.d.ts} +2 -2
- package/lib/browser/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.js → webSocketHighLeverageModeConfigAccountSubscriber.js} +2 -2
- package/lib/browser/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.d.ts → webSocketInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
- package/lib/browser/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.js → webSocketInsuranceFundStakeAccountSubscriber.js} +2 -2
- package/lib/browser/accounts/{programAccount/webSocketProgramAccountSubscriber.d.ts → webSocketProgramAccountSubscriber.d.ts} +1 -1
- package/lib/browser/accounts/{userAccount/webSocketUserAccountSubscriber.d.ts → webSocketUserAccountSubscriber.d.ts} +2 -2
- package/lib/{node/accounts/userAccount → browser/accounts}/webSocketUserAccountSubscriber.js +2 -2
- package/lib/browser/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.d.ts → webSocketUserStatsAccountSubsriber.d.ts} +2 -2
- package/lib/browser/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.js → webSocketUserStatsAccountSubsriber.js} +2 -2
- package/lib/browser/adminClient.d.ts +2 -2
- package/lib/browser/adminClient.js +14 -14
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +1 -1
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
- package/lib/browser/{config/index.d.ts → config.d.ts} +5 -5
- package/lib/{node/config/index.js → browser/config.js} +3 -3
- package/lib/browser/constants/perpMarkets.d.ts +1 -1
- package/lib/browser/constants/spotMarkets.d.ts +1 -1
- package/lib/browser/dlob/DLOB.d.ts +3 -3
- package/lib/browser/dlob/DLOB.js +18 -13
- package/lib/browser/dlob/DLOBNode.d.ts +5 -3
- package/lib/browser/dlob/DLOBNode.js +14 -13
- package/lib/browser/dlob/DLOBSubscriber.js +1 -1
- package/lib/browser/dlob/NodeList.d.ts +4 -1
- package/lib/browser/dlob/NodeList.js +11 -8
- package/lib/browser/dlob/orderBookLevels.d.ts +6 -0
- package/lib/browser/dlob/orderBookLevels.js +5 -2
- package/lib/browser/driftClient.d.ts +1 -1
- package/lib/browser/driftClient.js +18 -5
- package/lib/browser/driftClientConfig.d.ts +2 -2
- package/lib/browser/idl/drift.json +82 -11
- package/lib/browser/index.d.ts +14 -21
- package/lib/browser/index.js +14 -21
- package/lib/browser/math/amm.d.ts +4 -0
- package/lib/browser/math/amm.js +25 -9
- package/lib/browser/math/margin.js +1 -1
- package/lib/browser/math/market.d.ts +10 -0
- package/lib/browser/math/market.js +76 -1
- package/lib/browser/math/orders.d.ts +1 -0
- package/lib/browser/math/orders.js +13 -1
- package/lib/browser/math/state.d.ts +1 -0
- package/lib/browser/math/state.js +6 -1
- package/lib/browser/openbook/openbookV2Subscriber.d.ts +1 -1
- package/lib/browser/oracles/types.d.ts +1 -0
- package/lib/browser/oracles/utils.js +1 -3
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -1
- package/lib/browser/orderSubscriber/OrderSubscriber.js +10 -3
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +1 -1
- package/lib/browser/orderSubscriber/grpcSubscription.js +1 -1
- package/lib/browser/phoenix/phoenixSubscriber.d.ts +1 -1
- package/lib/browser/serum/serumSubscriber.d.ts +1 -1
- package/lib/browser/serum/types.d.ts +1 -1
- package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.d.ts +1 -1
- package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
- package/lib/browser/swift/signedMsgUserAccountSubscriber.d.ts +1 -1
- package/lib/browser/swift/signedMsgUserAccountSubscriber.js +1 -1
- package/lib/browser/swift/swiftOrderSubscriber.d.ts +1 -1
- package/lib/browser/types.d.ts +7 -0
- package/lib/browser/types.js +6 -1
- package/lib/browser/user.js +3 -3
- package/lib/browser/userConfig.d.ts +1 -1
- package/lib/browser/userMap/PollingSubscription.d.ts +2 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +2 -2
- package/lib/browser/userMap/WebsocketSubscription.js +1 -1
- package/lib/browser/userMap/grpcSubscription.d.ts +2 -2
- package/lib/browser/userMap/grpcSubscription.js +1 -1
- package/lib/browser/userMap/userMap.d.ts +18 -3
- package/lib/browser/userMap/userMap.js +1 -1
- package/lib/browser/userMap/userStatsMap.d.ts +1 -1
- package/lib/browser/userMap/userStatsMap.js +1 -1
- package/lib/browser/userStats.js +3 -3
- package/lib/browser/userStatsConfig.d.ts +1 -1
- package/lib/node/accounts/{userAccount/basicUserAccountSubscriber.d.ts → basicUserAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{bulkAccountLoader/bulkAccountLoader.d.ts → bulkAccountLoader.d.ts} +2 -2
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -0
- package/lib/node/accounts/{bulkAccountLoader/bulkAccountLoader.js → bulkAccountLoader.js} +2 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.d.ts +1 -1
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -0
- package/lib/node/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.js → customizedCadenceBulkAccountLoader.js} +1 -1
- package/lib/node/accounts/{baseSubscribers/grpcAccountSubscriber.d.ts → grpcAccountSubscriber.d.ts} +2 -1
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/baseSubscribers → node/accounts}/grpcAccountSubscriber.js +17 -13
- package/lib/node/accounts/{driftClientAccount/grpcDriftClientAccountSubscriber.d.ts → grpcDriftClientAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/grpcDriftClientAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/driftClientAccount → node/accounts}/grpcDriftClientAccountSubscriber.js +4 -4
- package/lib/node/accounts/{insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.d.ts → grpcInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/insuranceFundStakeAccount → node/accounts}/grpcInsuranceFundStakeAccountSubscriber.js +1 -1
- package/lib/node/accounts/{programAccount/grpcProgramAccountSubscriber.d.ts → grpcProgramAccountSubscriber.d.ts} +2 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{programAccount/grpcProgramAccountSubscriber.js → grpcProgramAccountSubscriber.js} +17 -13
- package/lib/node/accounts/{userAccount/grpcUserAccountSubscriber.d.ts → grpcUserAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{userAccount/grpcUserAccountSubscriber.js → grpcUserAccountSubscriber.js} +1 -1
- package/lib/node/accounts/{userStatsAccount/grpcUserStatsAccountSubscriber.d.ts → grpcUserStatsAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/userStatsAccount → node/accounts}/grpcUserStatsAccountSubscriber.js +1 -1
- package/lib/node/accounts/{userAccount/oneShotUserAccountSubscriber.d.ts → oneShotUserAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.d.ts → pollingDriftClientAccountSubscriber.d.ts} +5 -5
- package/lib/node/accounts/pollingDriftClientAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.js → pollingDriftClientAccountSubscriber.js} +8 -8
- package/lib/node/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.d.ts → pollingHighLeverageModeConfigAccountSubscriber.d.ts} +3 -3
- package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.js → pollingHighLeverageModeConfigAccountSubscriber.js} +1 -1
- package/lib/node/accounts/{insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.d.ts → pollingInsuranceFundStakeAccountSubscriber.d.ts} +3 -3
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/insuranceFundStakeAccount → node/accounts}/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
- package/lib/node/accounts/{oracleAccount/pollingOracleAccountSubscriber.d.ts → pollingOracleAccountSubscriber.d.ts} +3 -3
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/oracleAccount → node/accounts}/pollingOracleAccountSubscriber.js +1 -1
- package/lib/node/accounts/{tokenAccount/pollingTokenAccountSubscriber.d.ts → pollingTokenAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{tokenAccount/pollingTokenAccountSubscriber.js → pollingTokenAccountSubscriber.js} +2 -2
- package/lib/node/accounts/{userAccount/pollingUserAccountSubscriber.d.ts → pollingUserAccountSubscriber.d.ts} +4 -4
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{userAccount/pollingUserAccountSubscriber.js → pollingUserAccountSubscriber.js} +1 -1
- package/lib/node/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.d.ts → pollingUserStatsAccountSubscriber.d.ts} +3 -3
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.js → pollingUserStatsAccountSubscriber.js} +1 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -0
- package/lib/node/accounts/types.d.ts +11 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/{baseSubscribers/webSocketAccountSubscriber.d.ts → webSocketAccountSubscriber.d.ts} +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/baseSubscribers → node/accounts}/webSocketAccountSubscriber.js +1 -1
- package/lib/node/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.d.ts → webSocketDriftClientAccountSubscriber.d.ts} +4 -4
- package/lib/node/accounts/webSocketDriftClientAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.js → webSocketDriftClientAccountSubscriber.js} +9 -9
- package/lib/node/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.d.ts → webSocketHighLeverageModeConfigAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.js → webSocketHighLeverageModeConfigAccountSubscriber.js} +2 -2
- package/lib/node/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.d.ts → webSocketInsuranceFundStakeAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.js → webSocketInsuranceFundStakeAccountSubscriber.js} +2 -2
- package/lib/node/accounts/{programAccount/webSocketProgramAccountSubscriber.d.ts → webSocketProgramAccountSubscriber.d.ts} +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -0
- package/lib/node/accounts/{userAccount/webSocketUserAccountSubscriber.d.ts → webSocketUserAccountSubscriber.d.ts} +2 -2
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -0
- package/lib/{browser/accounts/userAccount → node/accounts}/webSocketUserAccountSubscriber.js +2 -2
- package/lib/node/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.d.ts → webSocketUserStatsAccountSubsriber.d.ts} +2 -2
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -0
- package/lib/node/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.js → webSocketUserStatsAccountSubsriber.js} +2 -2
- package/lib/node/adminClient.d.ts +2 -2
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +14 -14
- package/lib/node/auctionSubscriber/auctionSubscriber.js +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
- package/lib/node/{config/index.d.ts → config.d.ts} +6 -6
- package/lib/node/config.d.ts.map +1 -0
- package/lib/{browser/config/index.js → node/config.js} +3 -3
- package/lib/node/constants/perpMarkets.d.ts +1 -1
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.d.ts +1 -1
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.d.ts +3 -3
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +18 -13
- package/lib/node/dlob/DLOBNode.d.ts +5 -3
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +14 -13
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +1 -1
- package/lib/node/dlob/NodeList.d.ts +4 -1
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +11 -8
- package/lib/node/dlob/orderBookLevels.d.ts +6 -0
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +5 -2
- package/lib/node/driftClient.d.ts +1 -1
- package/lib/node/driftClient.d.ts.map +1 -1
- package/lib/node/driftClient.js +18 -5
- package/lib/node/driftClientConfig.d.ts +2 -2
- package/lib/node/driftClientConfig.d.ts.map +1 -1
- package/lib/node/idl/drift.json +82 -11
- package/lib/node/index.d.ts +14 -21
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +14 -21
- package/lib/node/math/amm.d.ts +4 -0
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +25 -9
- package/lib/node/math/margin.js +1 -1
- package/lib/node/math/market.d.ts +10 -0
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +76 -1
- package/lib/node/math/orders.d.ts +1 -0
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +13 -1
- package/lib/node/math/state.d.ts +1 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +6 -1
- package/lib/node/openbook/openbookV2Subscriber.d.ts +1 -1
- package/lib/node/openbook/openbookV2Subscriber.d.ts.map +1 -1
- package/lib/node/oracles/types.d.ts +1 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +1 -3
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +10 -3
- package/lib/node/orderSubscriber/WebsocketSubscription.js +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +1 -1
- package/lib/node/phoenix/phoenixSubscriber.d.ts +1 -1
- package/lib/node/phoenix/phoenixSubscriber.d.ts.map +1 -1
- package/lib/node/serum/serumSubscriber.d.ts +1 -1
- package/lib/node/serum/serumSubscriber.d.ts.map +1 -1
- package/lib/node/serum/types.d.ts +1 -1
- package/lib/node/serum/types.d.ts.map +1 -1
- package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts +1 -1
- package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
- package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts +1 -1
- package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/swift/signedMsgUserAccountSubscriber.js +1 -1
- package/lib/node/swift/swiftOrderSubscriber.d.ts +1 -1
- package/lib/node/swift/swiftOrderSubscriber.d.ts.map +1 -1
- package/lib/node/types.d.ts +7 -0
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +6 -1
- package/lib/node/user.js +3 -3
- package/lib/node/userConfig.d.ts +1 -1
- package/lib/node/userConfig.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.d.ts +2 -2
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.d.ts +2 -2
- 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 +2 -2
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +1 -1
- package/lib/node/userMap/userMap.d.ts +18 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +1 -1
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +1 -1
- package/lib/node/userStats.js +3 -3
- package/lib/node/userStatsConfig.d.ts +1 -1
- package/lib/node/userStatsConfig.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/accounts/{userAccount/basicUserAccountSubscriber.ts → basicUserAccountSubscriber.ts} +2 -6
- package/src/accounts/{bulkAccountLoader/bulkAccountLoader.ts → bulkAccountLoader.ts} +4 -4
- package/src/accounts/bulkUserStatsSubscription.ts +2 -2
- package/src/accounts/bulkUserSubscription.ts +2 -2
- package/src/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.ts → customizedCadenceBulkAccountLoader.ts} +1 -1
- package/src/accounts/{baseSubscribers/grpcAccountSubscriber.ts → grpcAccountSubscriber.ts} +26 -13
- package/src/accounts/{driftClientAccount/grpcDriftClientAccountSubscriber.ts → grpcDriftClientAccountSubscriber.ts} +7 -11
- package/src/accounts/{insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.ts → grpcInsuranceFundStakeAccountSubscriber.ts} +3 -3
- package/src/accounts/{programAccount/grpcProgramAccountSubscriber.ts → grpcProgramAccountSubscriber.ts} +28 -13
- package/src/accounts/{userAccount/grpcUserAccountSubscriber.ts → grpcUserAccountSubscriber.ts} +3 -3
- package/src/accounts/{userStatsAccount/grpcUserStatsAccountSubscriber.ts → grpcUserStatsAccountSubscriber.ts} +3 -3
- package/src/accounts/{userAccount/oneShotUserAccountSubscriber.ts → oneShotUserAccountSubscriber.ts} +2 -2
- package/src/accounts/{driftClientAccount/pollingDriftClientAccountSubscriber.ts → pollingDriftClientAccountSubscriber.ts} +10 -10
- package/src/accounts/{highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.ts → pollingHighLeverageModeConfigAccountSubscriber.ts} +3 -3
- package/src/accounts/{insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.ts → pollingInsuranceFundStakeAccountSubscriber.ts} +3 -3
- package/src/accounts/{oracleAccount/pollingOracleAccountSubscriber.ts → pollingOracleAccountSubscriber.ts} +3 -3
- package/src/accounts/{tokenAccount/pollingTokenAccountSubscriber.ts → pollingTokenAccountSubscriber.ts} +3 -3
- package/src/accounts/{userAccount/pollingUserAccountSubscriber.ts → pollingUserAccountSubscriber.ts} +4 -4
- package/src/accounts/{userStatsAccount/pollingUserStatsAccountSubscriber.ts → pollingUserStatsAccountSubscriber.ts} +3 -3
- package/src/accounts/types.ts +12 -0
- package/src/accounts/{baseSubscribers/webSocketAccountSubscriber.ts → webSocketAccountSubscriber.ts} +2 -2
- package/src/accounts/{driftClientAccount/webSocketDriftClientAccountSubscriber.ts → webSocketDriftClientAccountSubscriber.ts} +11 -15
- package/src/accounts/{highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.ts → webSocketHighLeverageModeConfigAccountSubscriber.ts} +3 -3
- package/src/accounts/{insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.ts → webSocketInsuranceFundStakeAccountSubscriber.ts} +3 -3
- package/src/accounts/{programAccount/webSocketProgramAccountSubscriber.ts → webSocketProgramAccountSubscriber.ts} +1 -1
- package/src/accounts/{userAccount/webSocketUserAccountSubscriber.ts → webSocketUserAccountSubscriber.ts} +3 -3
- package/src/accounts/{userStatsAccount/webSocketUserStatsAccountSubsriber.ts → webSocketUserStatsAccountSubsriber.ts} +3 -3
- package/src/adminClient.ts +29 -27
- package/src/auctionSubscriber/auctionSubscriber.ts +1 -1
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +2 -2
- package/src/{config/index.ts → config.ts} +7 -6
- package/src/constants/perpMarkets.ts +1 -1
- package/src/constants/spotMarkets.ts +1 -1
- package/src/dlob/DLOB.ts +31 -8
- package/src/dlob/DLOBNode.ts +22 -11
- package/src/dlob/DLOBSubscriber.ts +2 -1
- package/src/dlob/NodeList.ts +12 -3
- package/src/dlob/orderBookLevels.ts +8 -2
- package/src/driftClient.ts +22 -8
- package/src/driftClientConfig.ts +2 -2
- package/src/idl/drift.json +83 -12
- package/src/index.ts +14 -26
- package/src/math/amm.ts +49 -10
- package/src/math/margin.ts +1 -1
- package/src/math/market.ts +105 -0
- package/src/math/orders.ts +18 -0
- package/src/math/state.ts +7 -1
- package/src/openbook/openbookV2Subscriber.ts +1 -1
- package/src/oracles/types.ts +1 -0
- package/src/oracles/utils.ts +1 -3
- package/src/orderSubscriber/OrderSubscriber.ts +16 -2
- package/src/orderSubscriber/WebsocketSubscription.ts +1 -1
- package/src/orderSubscriber/grpcSubscription.ts +1 -1
- package/src/phoenix/phoenixSubscriber.ts +1 -1
- package/src/serum/serumSubscriber.ts +1 -1
- package/src/serum/types.ts +1 -1
- package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +1 -1
- package/src/swift/signedMsgUserAccountSubscriber.ts +1 -1
- package/src/swift/swiftOrderSubscriber.ts +1 -1
- package/src/testClient.ts +1 -1
- package/src/types.ts +9 -0
- package/src/user.ts +3 -3
- package/src/userConfig.ts +1 -1
- package/src/userMap/PollingSubscription.ts +3 -3
- package/src/userMap/WebsocketSubscription.ts +4 -4
- package/src/userMap/grpcSubscription.ts +5 -5
- package/src/userMap/userMap.ts +31 -4
- package/src/userMap/userStatsMap.ts +2 -2
- package/src/userStats.ts +3 -3
- package/src/userStatsConfig.ts +1 -1
- package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +1 -1
- package/lib/browser/config/types.d.ts +0 -1
- package/lib/browser/config/types.js +0 -2
- package/lib/browser/dlob/utils.d.ts +0 -1
- package/lib/browser/dlob/utils.js +0 -7
- package/lib/browser/userMap/events.d.ts +0 -6
- package/lib/browser/userMap/events.js +0 -2
- package/lib/browser/userMap/types.d.ts +0 -32
- package/lib/browser/userMap/types.js +0 -2
- package/lib/node/accounts/baseSubscribers/grpcAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/baseSubscribers/webSocketAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/bulkAccountLoader/bulkAccountLoader.d.ts.map +0 -1
- package/lib/node/accounts/bulkAccountLoader/customizedCadenceBulkAccountLoader.d.ts.map +0 -1
- package/lib/node/accounts/bulkAccountLoader/testBulkAccountLoader.d.ts.map +0 -1
- package/lib/node/accounts/driftClientAccount/grpcDriftClientAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/driftClientAccount/pollingDriftClientAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/driftClientAccount/webSocketDriftClientAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/highLeverageModeConfigAccount/pollingHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/highLeverageModeConfigAccount/webSocketHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/insuranceFundStakeAccount/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/insuranceFundStakeAccount/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/insuranceFundStakeAccount/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/oracleAccount/pollingOracleAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/programAccount/grpcProgramAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/programAccount/webSocketProgramAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/tokenAccount/pollingTokenAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userAccount/basicUserAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userAccount/grpcUserAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userAccount/oneShotUserAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userAccount/pollingUserAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userAccount/webSocketUserAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userStatsAccount/grpcUserStatsAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userStatsAccount/pollingUserStatsAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/userStatsAccount/webSocketUserStatsAccountSubsriber.d.ts.map +0 -1
- package/lib/node/config/index.d.ts.map +0 -1
- package/lib/node/config/types.d.ts +0 -2
- package/lib/node/config/types.d.ts.map +0 -1
- package/lib/node/config/types.js +0 -2
- package/lib/node/dlob/utils.d.ts +0 -2
- package/lib/node/dlob/utils.d.ts.map +0 -1
- package/lib/node/dlob/utils.js +0 -7
- package/lib/node/userMap/events.d.ts +0 -7
- package/lib/node/userMap/events.d.ts.map +0 -1
- package/lib/node/userMap/events.js +0 -2
- package/lib/node/userMap/types.d.ts +0 -33
- package/lib/node/userMap/types.d.ts.map +0 -1
- package/lib/node/userMap/types.js +0 -2
- package/src/config/types.ts +0 -1
- package/src/dlob/utils.ts +0 -6
- package/src/userMap/events.ts +0 -7
- package/src/userMap/types.ts +0 -47
- /package/lib/browser/accounts/{userAccount/basicUserAccountSubscriber.js → basicUserAccountSubscriber.js} +0 -0
- /package/lib/browser/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.d.ts → customizedCadenceBulkAccountLoader.d.ts} +0 -0
- /package/lib/browser/accounts/{userAccount/oneShotUserAccountSubscriber.js → oneShotUserAccountSubscriber.js} +0 -0
- /package/lib/browser/accounts/{bulkAccountLoader/testBulkAccountLoader.d.ts → testBulkAccountLoader.d.ts} +0 -0
- /package/lib/browser/accounts/{bulkAccountLoader/testBulkAccountLoader.js → testBulkAccountLoader.js} +0 -0
- /package/lib/browser/accounts/{programAccount/webSocketProgramAccountSubscriber.js → webSocketProgramAccountSubscriber.js} +0 -0
- /package/lib/node/accounts/{userAccount/basicUserAccountSubscriber.js → basicUserAccountSubscriber.js} +0 -0
- /package/lib/node/accounts/{bulkAccountLoader/customizedCadenceBulkAccountLoader.d.ts → customizedCadenceBulkAccountLoader.d.ts} +0 -0
- /package/lib/node/accounts/{userAccount/oneShotUserAccountSubscriber.js → oneShotUserAccountSubscriber.js} +0 -0
- /package/lib/node/accounts/{bulkAccountLoader/testBulkAccountLoader.d.ts → testBulkAccountLoader.d.ts} +0 -0
- /package/lib/node/accounts/{bulkAccountLoader/testBulkAccountLoader.js → testBulkAccountLoader.js} +0 -0
- /package/lib/node/accounts/{programAccount/webSocketProgramAccountSubscriber.js → webSocketProgramAccountSubscriber.js} +0 -0
- /package/src/accounts/{bulkAccountLoader/testBulkAccountLoader.ts → testBulkAccountLoader.ts} +0 -0
package/src/math/amm.ts
CHANGED
|
@@ -157,11 +157,6 @@ export function calculateUpdatedAMM(
|
|
|
157
157
|
amm: AMM,
|
|
158
158
|
oraclePriceData: OraclePriceData
|
|
159
159
|
): AMM {
|
|
160
|
-
if (!oraclePriceData?.fetchedWithMMOracle) {
|
|
161
|
-
console.log(
|
|
162
|
-
'Use driftClient method getMMOracleDataForPerpMarket for accurate MM pricing'
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
160
|
if (amm.curveUpdateIntensity == 0 || oraclePriceData === undefined) {
|
|
166
161
|
return amm;
|
|
167
162
|
}
|
|
@@ -204,9 +199,12 @@ export function calculateUpdatedAMMSpreadReserves(
|
|
|
204
199
|
oraclePriceData: OraclePriceData,
|
|
205
200
|
isPrediction = false
|
|
206
201
|
): { baseAssetReserve: BN; quoteAssetReserve: BN; sqrtK: BN; newPeg: BN } {
|
|
207
|
-
if (
|
|
202
|
+
if (
|
|
203
|
+
!oraclePriceData?.fetchedWithMMOracle &&
|
|
204
|
+
oraclePriceData?.isMMOracleActive
|
|
205
|
+
) {
|
|
208
206
|
console.log(
|
|
209
|
-
'Use driftClient method getMMOracleDataForPerpMarket for accurate
|
|
207
|
+
'Use driftClient method getMMOracleDataForPerpMarket for accurate updated AMM in calculateUpdatedAMMSpreadReserves'
|
|
210
208
|
);
|
|
211
209
|
}
|
|
212
210
|
const newAmm = calculateUpdatedAMM(amm, oraclePriceData);
|
|
@@ -231,15 +229,18 @@ export function calculateUpdatedAMMSpreadReserves(
|
|
|
231
229
|
return result;
|
|
232
230
|
}
|
|
233
231
|
|
|
234
|
-
export function
|
|
232
|
+
export function calculateAMMBidAskPrice(
|
|
235
233
|
amm: AMM,
|
|
236
234
|
oraclePriceData: OraclePriceData,
|
|
237
235
|
withUpdate = true,
|
|
238
236
|
isPrediction = false
|
|
239
237
|
): [BN, BN] {
|
|
240
|
-
if (
|
|
238
|
+
if (
|
|
239
|
+
!oraclePriceData?.fetchedWithMMOracle &&
|
|
240
|
+
oraclePriceData?.isMMOracleActive
|
|
241
|
+
) {
|
|
241
242
|
console.log(
|
|
242
|
-
'Use driftClient method getMMOracleDataForPerpMarket for accurate MM pricing'
|
|
243
|
+
'Use driftClient method getMMOracleDataForPerpMarket for accurate MM pricing in calculateAMMBidAskPrice'
|
|
243
244
|
);
|
|
244
245
|
}
|
|
245
246
|
let newAmm: AMM;
|
|
@@ -271,6 +272,44 @@ export function calculateBidAskPrice(
|
|
|
271
272
|
return [bidPrice, askPrice];
|
|
272
273
|
}
|
|
273
274
|
|
|
275
|
+
/**
|
|
276
|
+
* @deprecated Use calculateAMMBidAskPrice instead
|
|
277
|
+
*/
|
|
278
|
+
export function calculateBidAskPrice(
|
|
279
|
+
amm: AMM,
|
|
280
|
+
oraclePriceData: OraclePriceData,
|
|
281
|
+
withUpdate = true,
|
|
282
|
+
isPrediction = false
|
|
283
|
+
): [BN, BN] {
|
|
284
|
+
let newAmm: AMM;
|
|
285
|
+
if (withUpdate) {
|
|
286
|
+
newAmm = calculateUpdatedAMM(amm, oraclePriceData);
|
|
287
|
+
} else {
|
|
288
|
+
newAmm = amm;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
const [bidReserves, askReserves] = calculateSpreadReserves(
|
|
292
|
+
newAmm,
|
|
293
|
+
oraclePriceData,
|
|
294
|
+
undefined,
|
|
295
|
+
isPrediction
|
|
296
|
+
);
|
|
297
|
+
|
|
298
|
+
const askPrice = calculatePrice(
|
|
299
|
+
askReserves.baseAssetReserve,
|
|
300
|
+
askReserves.quoteAssetReserve,
|
|
301
|
+
newAmm.pegMultiplier
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
const bidPrice = calculatePrice(
|
|
305
|
+
bidReserves.baseAssetReserve,
|
|
306
|
+
bidReserves.quoteAssetReserve,
|
|
307
|
+
newAmm.pegMultiplier
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
return [bidPrice, askPrice];
|
|
311
|
+
}
|
|
312
|
+
|
|
274
313
|
/**
|
|
275
314
|
* Calculates a price given an arbitrary base and quote amount (they must have the same precision)
|
|
276
315
|
*
|
package/src/math/margin.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { OraclePriceData } from '../oracles/types';
|
|
|
16
16
|
import { calculateMarketMarginRatio } from './market';
|
|
17
17
|
import { calculateScaledInitialAssetWeight } from './spotBalance';
|
|
18
18
|
import { DriftClient } from '../driftClient';
|
|
19
|
-
import { OneShotUserAccountSubscriber } from '../accounts/
|
|
19
|
+
import { OneShotUserAccountSubscriber } from '../accounts/oneShotUserAccountSubscriber';
|
|
20
20
|
import {
|
|
21
21
|
PerpMarketAccount,
|
|
22
22
|
PerpPosition,
|
package/src/math/market.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
SpotMarketAccount,
|
|
7
7
|
SpotBalanceType,
|
|
8
8
|
MarketType,
|
|
9
|
+
isVariant,
|
|
9
10
|
} from '../types';
|
|
10
11
|
import {
|
|
11
12
|
calculateAmmReservesAfterSwap,
|
|
@@ -26,6 +27,9 @@ import {
|
|
|
26
27
|
PRICE_TO_QUOTE_PRECISION,
|
|
27
28
|
ZERO,
|
|
28
29
|
QUOTE_SPOT_MARKET_INDEX,
|
|
30
|
+
PRICE_PRECISION,
|
|
31
|
+
PERCENTAGE_PRECISION,
|
|
32
|
+
FUNDING_RATE_PRECISION,
|
|
29
33
|
} from '../constants/numericConstants';
|
|
30
34
|
import { getTokenAmount } from './spotBalance';
|
|
31
35
|
import { DLOB } from '../dlob/DLOB';
|
|
@@ -350,3 +354,104 @@ export function calculatePerpMarketBaseLiquidatorFee(
|
|
|
350
354
|
return market.liquidatorFee;
|
|
351
355
|
}
|
|
352
356
|
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Calculates trigger price for a perp market based on oracle price and current time
|
|
360
|
+
* Implements the same logic as the Rust get_trigger_price function
|
|
361
|
+
*
|
|
362
|
+
* @param market - The perp market account
|
|
363
|
+
* @param oraclePrice - Current oracle price (precision: PRICE_PRECISION)
|
|
364
|
+
* @param now - Current timestamp in seconds
|
|
365
|
+
* @returns trigger price (precision: PRICE_PRECISION)
|
|
366
|
+
*/
|
|
367
|
+
export function getTriggerPrice(
|
|
368
|
+
market: PerpMarketAccount,
|
|
369
|
+
oraclePrice: BN,
|
|
370
|
+
now: BN,
|
|
371
|
+
useMedianPrice: boolean
|
|
372
|
+
): BN {
|
|
373
|
+
if (!useMedianPrice) {
|
|
374
|
+
return oraclePrice.abs();
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
const lastFillPrice = market.lastFillPrice;
|
|
378
|
+
|
|
379
|
+
// Calculate 5-minute basis
|
|
380
|
+
const markPrice5minTwap = market.amm.lastMarkPriceTwap5Min;
|
|
381
|
+
const lastOraclePriceTwap5min =
|
|
382
|
+
market.amm.historicalOracleData.lastOraclePriceTwap5Min;
|
|
383
|
+
const basis5min = markPrice5minTwap.sub(lastOraclePriceTwap5min);
|
|
384
|
+
|
|
385
|
+
const oraclePlusBasis5min = oraclePrice.add(basis5min);
|
|
386
|
+
|
|
387
|
+
// Calculate funding basis
|
|
388
|
+
const lastFundingBasis = getLastFundingBasis(market, oraclePrice, now);
|
|
389
|
+
const oraclePlusFundingBasis = oraclePrice.add(lastFundingBasis);
|
|
390
|
+
|
|
391
|
+
const prices = [
|
|
392
|
+
lastFillPrice.gt(ZERO) ? lastFillPrice : oraclePrice,
|
|
393
|
+
oraclePlusFundingBasis,
|
|
394
|
+
oraclePlusBasis5min,
|
|
395
|
+
].sort((a, b) => a.cmp(b));
|
|
396
|
+
const medianPrice = prices[1];
|
|
397
|
+
|
|
398
|
+
return clampTriggerPrice(market, oraclePrice.abs(), medianPrice);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Calculates the last funding basis for trigger price calculation
|
|
403
|
+
* Implements the same logic as the Rust get_last_funding_basis function
|
|
404
|
+
*/
|
|
405
|
+
function getLastFundingBasis(
|
|
406
|
+
market: PerpMarketAccount,
|
|
407
|
+
oraclePrice: BN,
|
|
408
|
+
now: BN
|
|
409
|
+
): BN {
|
|
410
|
+
if (market.amm.lastFundingOracleTwap.gt(ZERO)) {
|
|
411
|
+
const lastFundingRate = market.amm.lastFundingRate
|
|
412
|
+
.mul(PRICE_PRECISION)
|
|
413
|
+
.div(market.amm.lastFundingOracleTwap)
|
|
414
|
+
.muln(24);
|
|
415
|
+
const lastFundingRatePreAdj = lastFundingRate.sub(
|
|
416
|
+
FUNDING_RATE_PRECISION.div(new BN(5000)) // FUNDING_RATE_OFFSET_PERCENTAGE
|
|
417
|
+
);
|
|
418
|
+
const timeLeftUntilFundingUpdate = BN.min(
|
|
419
|
+
BN.max(now.sub(market.amm.lastFundingRateTs), ZERO),
|
|
420
|
+
market.amm.fundingPeriod
|
|
421
|
+
);
|
|
422
|
+
const lastFundingBasis = oraclePrice
|
|
423
|
+
.mul(lastFundingRatePreAdj)
|
|
424
|
+
.div(PERCENTAGE_PRECISION)
|
|
425
|
+
.mul(market.amm.fundingPeriod.sub(timeLeftUntilFundingUpdate))
|
|
426
|
+
.div(market.amm.fundingPeriod)
|
|
427
|
+
.div(new BN(1000)); // FUNDING_RATE_BUFFER
|
|
428
|
+
return lastFundingBasis;
|
|
429
|
+
} else {
|
|
430
|
+
return ZERO;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Clamps trigger price based on contract tier
|
|
436
|
+
* Implements the same logic as the Rust clamp_trigger_price function
|
|
437
|
+
*/
|
|
438
|
+
function clampTriggerPrice(
|
|
439
|
+
market: PerpMarketAccount,
|
|
440
|
+
oraclePrice: BN,
|
|
441
|
+
medianPrice: BN
|
|
442
|
+
): BN {
|
|
443
|
+
let maxBpsDiff: BN;
|
|
444
|
+
const tier = market.contractTier;
|
|
445
|
+
if (isVariant(tier, 'a') || isVariant(tier, 'b')) {
|
|
446
|
+
maxBpsDiff = new BN(500); // 20 BPS
|
|
447
|
+
} else if (isVariant(tier, 'c')) {
|
|
448
|
+
maxBpsDiff = new BN(100); // 100 BPS
|
|
449
|
+
} else {
|
|
450
|
+
maxBpsDiff = new BN(40); // 250 BPS
|
|
451
|
+
}
|
|
452
|
+
const maxOracleDiff = oraclePrice.div(maxBpsDiff);
|
|
453
|
+
return BN.min(
|
|
454
|
+
BN.max(medianPrice, oraclePrice.sub(maxOracleDiff)),
|
|
455
|
+
oraclePrice.add(maxOracleDiff)
|
|
456
|
+
);
|
|
457
|
+
}
|
package/src/math/orders.ts
CHANGED
|
@@ -387,3 +387,21 @@ const FLAG_IS_SIGNED_MSG = 0x01;
|
|
|
387
387
|
export function isSignedMsgOrder(order: Order): boolean {
|
|
388
388
|
return (order.bitFlags & FLAG_IS_SIGNED_MSG) !== 0;
|
|
389
389
|
}
|
|
390
|
+
|
|
391
|
+
export function calculateOrderBaseAssetAmount(
|
|
392
|
+
order: Order,
|
|
393
|
+
existingBaseAssetAmount: BN
|
|
394
|
+
): BN {
|
|
395
|
+
if (!order.reduceOnly) {
|
|
396
|
+
return order.baseAssetAmount;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
if (isVariant(order.direction, 'long')) {
|
|
400
|
+
return BN.min(
|
|
401
|
+
BN.min(existingBaseAssetAmount, ZERO).abs(),
|
|
402
|
+
order.baseAssetAmount
|
|
403
|
+
);
|
|
404
|
+
} else {
|
|
405
|
+
return BN.min(BN.max(existingBaseAssetAmount, ZERO), order.baseAssetAmount);
|
|
406
|
+
}
|
|
407
|
+
}
|
package/src/math/state.ts
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
PERCENTAGE_PRECISION,
|
|
5
5
|
ZERO,
|
|
6
6
|
} from '../constants/numericConstants';
|
|
7
|
-
import { StateAccount } from '../types';
|
|
7
|
+
import { FeatureBitFlags, StateAccount } from '../types';
|
|
8
8
|
|
|
9
9
|
export function calculateInitUserFee(stateAccount: StateAccount): BN {
|
|
10
10
|
const maxInitFee = new BN(stateAccount.maxInitializeUserFee)
|
|
@@ -32,3 +32,9 @@ export function getMaxNumberOfSubAccounts(stateAccount: StateAccount): BN {
|
|
|
32
32
|
}
|
|
33
33
|
return new BN(stateAccount.maxNumberOfSubAccounts).muln(100);
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
export function useMedianTriggerPrice(stateAccount: StateAccount): boolean {
|
|
37
|
+
return (
|
|
38
|
+
(stateAccount.featureBitFlags & FeatureBitFlags.MEDIAN_TRIGGER_PRICE) > 0
|
|
39
|
+
);
|
|
40
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { BulkAccountLoader } from '../accounts/bulkAccountLoader
|
|
2
|
+
import { BulkAccountLoader } from '../accounts/bulkAccountLoader';
|
|
3
3
|
import { PRICE_PRECISION } from '../constants/numericConstants';
|
|
4
4
|
import { AnchorProvider, BN, Idl, Program, Wallet } from '@coral-xyz/anchor';
|
|
5
5
|
import { L2Level, L2OrderBookGenerator } from '../dlob/orderBookLevels';
|
package/src/oracles/types.ts
CHANGED
package/src/oracles/utils.ts
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { BN } from '@coral-xyz/anchor';
|
|
2
2
|
import { MMOraclePriceData } from './types';
|
|
3
|
-
import { FIVE } from '../constants/numericConstants';
|
|
4
3
|
|
|
5
4
|
export function getOracleConfidenceFromMMOracleData(
|
|
6
5
|
mmOracleData: MMOraclePriceData
|
|
7
6
|
): BN {
|
|
8
7
|
const mmOracleDiffPremium = mmOracleData.mmOraclePrice
|
|
9
8
|
.sub(mmOracleData.oraclePriceData.price)
|
|
10
|
-
.abs()
|
|
11
|
-
.div(FIVE);
|
|
9
|
+
.abs();
|
|
12
10
|
return mmOracleData.oraclePriceData.confidence.add(mmOracleDiffPremium);
|
|
13
11
|
}
|
|
@@ -13,7 +13,9 @@ import { PollingSubscription } from './PollingSubscription';
|
|
|
13
13
|
import { WebsocketSubscription } from './WebsocketSubscription';
|
|
14
14
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
15
15
|
import { EventEmitter } from 'events';
|
|
16
|
-
import {
|
|
16
|
+
import { calculateOrderBaseAssetAmount, ZERO } from '../index';
|
|
17
|
+
import { BN } from '@coral-xyz/anchor';
|
|
18
|
+
import { ProtectMakerParamsMap } from '../dlob/types';
|
|
17
19
|
import { decodeUser } from '../decode/user';
|
|
18
20
|
import { grpcSubscription } from './grpcSubscription';
|
|
19
21
|
import { isUserProtectedMaker } from '../math/userStatus';
|
|
@@ -246,7 +248,19 @@ export class OrderSubscriber {
|
|
|
246
248
|
for (const [key, { userAccount }] of this.usersAccounts.entries()) {
|
|
247
249
|
const protectedMaker = isUserProtectedMaker(userAccount);
|
|
248
250
|
for (const order of userAccount.orders) {
|
|
249
|
-
|
|
251
|
+
let baseAssetAmount = order.baseAssetAmount;
|
|
252
|
+
if (order.reduceOnly) {
|
|
253
|
+
const existingBaseAmount =
|
|
254
|
+
userAccount.perpPositions.find(
|
|
255
|
+
(pos) =>
|
|
256
|
+
pos.marketIndex === order.marketIndex && pos.openOrders > 0
|
|
257
|
+
)?.baseAssetAmount || ZERO;
|
|
258
|
+
baseAssetAmount = calculateOrderBaseAssetAmount(
|
|
259
|
+
order,
|
|
260
|
+
existingBaseAmount
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
dlob.insertOrder(order, key, slot, protectedMaker, baseAssetAmount);
|
|
250
264
|
}
|
|
251
265
|
}
|
|
252
266
|
return dlob;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OrderSubscriber } from './OrderSubscriber';
|
|
2
2
|
import { getNonIdleUserFilter, getUserFilter } from '../memcmp';
|
|
3
|
-
import { WebSocketProgramAccountSubscriber } from '../accounts/
|
|
3
|
+
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
|
|
4
4
|
import { UserAccount } from '../types';
|
|
5
5
|
import { Commitment, Context, PublicKey } from '@solana/web3.js';
|
|
6
6
|
import { ResubOpts } from '../accounts/types';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context, PublicKey } from '@solana/web3.js';
|
|
2
2
|
import { Buffer } from 'buffer';
|
|
3
|
-
import { grpcProgramAccountSubscriber } from '../accounts/
|
|
3
|
+
import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
|
|
4
4
|
import { OrderSubscriber } from './OrderSubscriber';
|
|
5
5
|
import { GrpcConfigs, ResubOpts } from '../accounts/types';
|
|
6
6
|
import { UserAccount } from '../types';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection, PublicKey, SYSVAR_CLOCK_PUBKEY } from '@solana/web3.js';
|
|
2
|
-
import { BulkAccountLoader } from '../accounts/bulkAccountLoader
|
|
2
|
+
import { BulkAccountLoader } from '../accounts/bulkAccountLoader';
|
|
3
3
|
import {
|
|
4
4
|
Client,
|
|
5
5
|
deserializeClockData,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { BulkAccountLoader } from '../accounts/bulkAccountLoader
|
|
2
|
+
import { BulkAccountLoader } from '../accounts/bulkAccountLoader';
|
|
3
3
|
import { Market, Orderbook } from '@project-serum/serum';
|
|
4
4
|
import { SerumMarketSubscriberConfig } from './types';
|
|
5
5
|
import { BN } from '@coral-xyz/anchor';
|
package/src/serum/types.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection, PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { BulkAccountLoader } from '../accounts/bulkAccountLoader
|
|
2
|
+
import { BulkAccountLoader } from '../accounts/bulkAccountLoader';
|
|
3
3
|
|
|
4
4
|
export type SerumMarketSubscriberConfig = {
|
|
5
5
|
connection: Connection;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Commitment, Context, PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { grpcProgramAccountSubscriber } from '../accounts/
|
|
2
|
+
import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
|
|
3
3
|
import { GrpcConfigs, ResubOpts } from '../accounts/types';
|
|
4
4
|
import { SignedMsgUserOrdersAccount } from '../types';
|
|
5
5
|
import { getSignedMsgUserOrdersFilter } from '../memcmp';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getSignedMsgUserOrdersFilter } from '../memcmp';
|
|
2
|
-
import { WebSocketProgramAccountSubscriber } from '../accounts/
|
|
2
|
+
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
|
|
3
3
|
import { SignedMsgOrderId, SignedMsgUserOrdersAccount } from '../types';
|
|
4
4
|
import { Commitment, Context, PublicKey } from '@solana/web3.js';
|
|
5
5
|
import { ResubOpts } from '../accounts/types';
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MainnetPerpMarkets,
|
|
4
4
|
} from '../constants/perpMarkets';
|
|
5
5
|
import { DriftClient } from '../driftClient';
|
|
6
|
-
import { DriftEnv } from '../config
|
|
6
|
+
import { DriftEnv } from '../config';
|
|
7
7
|
import {
|
|
8
8
|
getUserAccountPublicKey,
|
|
9
9
|
getUserStatsAccountPublicKey,
|
package/src/testClient.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AdminClient } from './adminClient';
|
|
2
2
|
import { ConfirmOptions, Signer, Transaction } from '@solana/web3.js';
|
|
3
3
|
import { TxSigAndSlot } from './tx/types';
|
|
4
|
-
import { PollingDriftClientAccountSubscriber } from './accounts/
|
|
4
|
+
import { PollingDriftClientAccountSubscriber } from './accounts/pollingDriftClientAccountSubscriber';
|
|
5
5
|
import { DriftClientConfig } from './driftClientConfig';
|
|
6
6
|
|
|
7
7
|
export class TestClient extends AdminClient {
|
package/src/types.ts
CHANGED
|
@@ -28,6 +28,11 @@ export enum ExchangeStatus {
|
|
|
28
28
|
PAUSED = 255,
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
export enum FeatureBitFlags {
|
|
32
|
+
MM_ORACLE_UPDATE = 1,
|
|
33
|
+
MEDIAN_TRIGGER_PRICE = 2,
|
|
34
|
+
}
|
|
35
|
+
|
|
31
36
|
export class MarketStatus {
|
|
32
37
|
static readonly INITIALIZED = { initialized: {} };
|
|
33
38
|
static readonly ACTIVE = { active: {} };
|
|
@@ -760,6 +765,7 @@ export type StateAccount = {
|
|
|
760
765
|
initialPctToLiquidate: number;
|
|
761
766
|
liquidationDuration: number;
|
|
762
767
|
maxInitializeUserFee: number;
|
|
768
|
+
featureBitFlags: number;
|
|
763
769
|
};
|
|
764
770
|
|
|
765
771
|
export type PerpMarketAccount = {
|
|
@@ -806,6 +812,7 @@ export type PerpMarketAccount = {
|
|
|
806
812
|
highLeverageMarginRatioMaintenance: number;
|
|
807
813
|
protectedMakerLimitPriceDivisor: number;
|
|
808
814
|
protectedMakerDynamicDivisor: number;
|
|
815
|
+
lastFillPrice: BN;
|
|
809
816
|
};
|
|
810
817
|
|
|
811
818
|
export type HistoricalOracleData = {
|
|
@@ -1017,6 +1024,8 @@ export type AMM = {
|
|
|
1017
1024
|
takerSpeedBumpOverride: number;
|
|
1018
1025
|
ammSpreadAdjustment: number;
|
|
1019
1026
|
ammInventorySpreadAdjustment: number;
|
|
1027
|
+
|
|
1028
|
+
lastFundingOracleTwap: BN;
|
|
1020
1029
|
};
|
|
1021
1030
|
|
|
1022
1031
|
// # User Account Types
|
package/src/user.ts
CHANGED
|
@@ -92,8 +92,8 @@ import {
|
|
|
92
92
|
} from './math/margin';
|
|
93
93
|
import { OraclePriceData } from './oracles/types';
|
|
94
94
|
import { UserConfig } from './userConfig';
|
|
95
|
-
import { PollingUserAccountSubscriber } from './accounts/
|
|
96
|
-
import { WebSocketUserAccountSubscriber } from './accounts/
|
|
95
|
+
import { PollingUserAccountSubscriber } from './accounts/pollingUserAccountSubscriber';
|
|
96
|
+
import { WebSocketUserAccountSubscriber } from './accounts/webSocketUserAccountSubscriber';
|
|
97
97
|
import {
|
|
98
98
|
calculateWeightedTokenValue,
|
|
99
99
|
getWorstCaseTokenAmounts,
|
|
@@ -107,7 +107,7 @@ import { getPerpMarketTierNumber, getSpotMarketTierNumber } from './math/tiers';
|
|
|
107
107
|
import { StrictOraclePrice } from './oracles/strictOraclePrice';
|
|
108
108
|
|
|
109
109
|
import { calculateSpotFuelBonus, calculatePerpFuelBonus } from './math/fuel';
|
|
110
|
-
import { grpcUserAccountSubscriber } from './accounts/
|
|
110
|
+
import { grpcUserAccountSubscriber } from './accounts/grpcUserAccountSubscriber';
|
|
111
111
|
|
|
112
112
|
export class User {
|
|
113
113
|
driftClient: DriftClient;
|
package/src/userConfig.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DriftClient } from './driftClient';
|
|
2
2
|
import { Commitment, PublicKey } from '@solana/web3.js';
|
|
3
|
-
import { BulkAccountLoader } from './accounts/bulkAccountLoader
|
|
3
|
+
import { BulkAccountLoader } from './accounts/bulkAccountLoader';
|
|
4
4
|
import { GrpcConfigs, UserAccountSubscriber } from './accounts/types';
|
|
5
5
|
|
|
6
6
|
export type UserConfig = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UserMap } from './userMap';
|
|
2
2
|
|
|
3
3
|
export class PollingSubscription {
|
|
4
|
-
private userMap:
|
|
4
|
+
private userMap: UserMap;
|
|
5
5
|
private frequency: number;
|
|
6
6
|
private skipInitialLoad: boolean;
|
|
7
7
|
|
|
@@ -12,7 +12,7 @@ export class PollingSubscription {
|
|
|
12
12
|
frequency,
|
|
13
13
|
skipInitialLoad = false,
|
|
14
14
|
}: {
|
|
15
|
-
userMap:
|
|
15
|
+
userMap: UserMap;
|
|
16
16
|
frequency: number;
|
|
17
17
|
skipInitialLoad?: boolean;
|
|
18
18
|
includeIdle?: boolean;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { UserMap } from './userMap';
|
|
1
2
|
import { getNonIdleUserFilter, getUserFilter } from '../memcmp';
|
|
2
|
-
import { WebSocketProgramAccountSubscriber } from '../accounts/
|
|
3
|
+
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
|
|
3
4
|
import { UserAccount } from '../types';
|
|
4
5
|
import { Commitment, Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
|
|
5
6
|
import { ResubOpts } from '../accounts/types';
|
|
6
|
-
import { UserMapInterface } from './types';
|
|
7
7
|
|
|
8
8
|
export class WebsocketSubscription {
|
|
9
|
-
private userMap:
|
|
9
|
+
private userMap: UserMap;
|
|
10
10
|
private commitment: Commitment;
|
|
11
11
|
private skipInitialLoad: boolean;
|
|
12
12
|
private resubOpts?: ResubOpts;
|
|
@@ -25,7 +25,7 @@ export class WebsocketSubscription {
|
|
|
25
25
|
decodeFn,
|
|
26
26
|
additionalFilters = undefined,
|
|
27
27
|
}: {
|
|
28
|
-
userMap:
|
|
28
|
+
userMap: UserMap;
|
|
29
29
|
commitment: Commitment;
|
|
30
30
|
skipInitialLoad?: boolean;
|
|
31
31
|
resubOpts?: ResubOpts;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
+
import { UserMap } from './userMap';
|
|
1
2
|
import { getNonIdleUserFilter, getUserFilter } from '../memcmp';
|
|
2
|
-
import { WebSocketProgramAccountSubscriber } from '../accounts/
|
|
3
|
+
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
|
|
3
4
|
import { UserAccount } from '../types';
|
|
4
5
|
import { Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
|
|
5
6
|
import { GrpcConfigs, ResubOpts } from '../accounts/types';
|
|
6
|
-
import { grpcProgramAccountSubscriber } from '../accounts/
|
|
7
|
-
import { UserMapInterface } from './types';
|
|
7
|
+
import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
|
|
8
8
|
|
|
9
9
|
export class grpcSubscription {
|
|
10
10
|
private grpcConfigs: GrpcConfigs;
|
|
11
|
-
private userMap:
|
|
11
|
+
private userMap: UserMap;
|
|
12
12
|
private skipInitialLoad: boolean;
|
|
13
13
|
private resubOpts?: ResubOpts;
|
|
14
14
|
private includeIdle?: boolean;
|
|
@@ -27,7 +27,7 @@ export class grpcSubscription {
|
|
|
27
27
|
additionalFilters = undefined,
|
|
28
28
|
}: {
|
|
29
29
|
grpcConfigs: GrpcConfigs;
|
|
30
|
-
userMap:
|
|
30
|
+
userMap: UserMap;
|
|
31
31
|
skipInitialLoad?: boolean;
|
|
32
32
|
resubOpts?: ResubOpts;
|
|
33
33
|
includeIdle?: boolean;
|
package/src/userMap/userMap.ts
CHANGED
|
@@ -16,8 +16,8 @@ import {
|
|
|
16
16
|
import { WrappedEvent } from '../events/types';
|
|
17
17
|
import { DLOB } from '../dlob/DLOB';
|
|
18
18
|
import { UserSubscriptionConfig } from '../userConfig';
|
|
19
|
-
import { DataAndSlot } from '../accounts/types';
|
|
20
|
-
import { OneShotUserAccountSubscriber } from '../accounts/
|
|
19
|
+
import { DataAndSlot, UserEvents } from '../accounts/types';
|
|
20
|
+
import { OneShotUserAccountSubscriber } from '../accounts/oneShotUserAccountSubscriber';
|
|
21
21
|
import { ProtectMakerParamsMap } from '../dlob/types';
|
|
22
22
|
|
|
23
23
|
import {
|
|
@@ -45,11 +45,38 @@ import { decodeUser } from '../decode/user';
|
|
|
45
45
|
import { grpcSubscription } from './grpcSubscription';
|
|
46
46
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
47
47
|
import { EventEmitter } from 'events';
|
|
48
|
-
import { UserEvents } from './events';
|
|
49
|
-
import { UserMapInterface } from './types';
|
|
50
48
|
|
|
51
49
|
const MAX_USER_ACCOUNT_SIZE_BYTES = 4376;
|
|
52
50
|
|
|
51
|
+
export interface UserMapInterface {
|
|
52
|
+
eventEmitter: StrictEventEmitter<EventEmitter, UserEvents>;
|
|
53
|
+
subscribe(): Promise<void>;
|
|
54
|
+
unsubscribe(): Promise<void>;
|
|
55
|
+
addPubkey(
|
|
56
|
+
userAccountPublicKey: PublicKey,
|
|
57
|
+
userAccount?: UserAccount,
|
|
58
|
+
slot?: number,
|
|
59
|
+
accountSubscription?: UserSubscriptionConfig
|
|
60
|
+
): Promise<void>;
|
|
61
|
+
has(key: string): boolean;
|
|
62
|
+
get(key: string): User | undefined;
|
|
63
|
+
getWithSlot(key: string): DataAndSlot<User> | undefined;
|
|
64
|
+
mustGet(
|
|
65
|
+
key: string,
|
|
66
|
+
accountSubscription?: UserSubscriptionConfig
|
|
67
|
+
): Promise<User>;
|
|
68
|
+
mustGetWithSlot(
|
|
69
|
+
key: string,
|
|
70
|
+
accountSubscription?: UserSubscriptionConfig
|
|
71
|
+
): Promise<DataAndSlot<User>>;
|
|
72
|
+
getUserAuthority(key: string): PublicKey | undefined;
|
|
73
|
+
updateWithOrderRecord(record: OrderRecord): Promise<void>;
|
|
74
|
+
values(): IterableIterator<User>;
|
|
75
|
+
valuesWithSlot(): IterableIterator<DataAndSlot<User>>;
|
|
76
|
+
entries(): IterableIterator<[string, User]>;
|
|
77
|
+
entriesWithSlot(): IterableIterator<[string, DataAndSlot<User>]>;
|
|
78
|
+
}
|
|
79
|
+
|
|
53
80
|
export class UserMap implements UserMapInterface {
|
|
54
81
|
private userMap = new Map<string, DataAndSlot<User>>();
|
|
55
82
|
driftClient: DriftClient;
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
} from '../types';
|
|
15
15
|
import { UserStats } from '../userStats';
|
|
16
16
|
import { WrappedEvent } from '../events/types';
|
|
17
|
-
import { BulkAccountLoader } from '../accounts/bulkAccountLoader
|
|
18
|
-
import { PollingUserStatsAccountSubscriber } from '../accounts/
|
|
17
|
+
import { BulkAccountLoader } from '../accounts/bulkAccountLoader';
|
|
18
|
+
import { PollingUserStatsAccountSubscriber } from '../accounts/pollingUserStatsAccountSubscriber';
|
|
19
19
|
import { SyncConfig } from './userMapConfig';
|
|
20
20
|
import { getUserStatsFilter } from '../memcmp';
|
|
21
21
|
import { PublicKey } from '@solana/web3.js';
|
package/src/userStats.ts
CHANGED
|
@@ -2,14 +2,14 @@ import { DriftClient } from './driftClient';
|
|
|
2
2
|
import { PublicKey } from '@solana/web3.js';
|
|
3
3
|
import { DataAndSlot, UserStatsAccountSubscriber } from './accounts/types';
|
|
4
4
|
import { UserStatsConfig } from './userStatsConfig';
|
|
5
|
-
import { PollingUserStatsAccountSubscriber } from './accounts/
|
|
6
|
-
import { WebSocketUserStatsAccountSubscriber } from './accounts/
|
|
5
|
+
import { PollingUserStatsAccountSubscriber } from './accounts/pollingUserStatsAccountSubscriber';
|
|
6
|
+
import { WebSocketUserStatsAccountSubscriber } from './accounts/webSocketUserStatsAccountSubsriber';
|
|
7
7
|
import { ReferrerInfo, SpotMarketAccount, UserStatsAccount } from './types';
|
|
8
8
|
import {
|
|
9
9
|
getUserAccountPublicKeySync,
|
|
10
10
|
getUserStatsAccountPublicKey,
|
|
11
11
|
} from './addresses/pda';
|
|
12
|
-
import { grpcUserStatsAccountSubscriber } from './accounts/
|
|
12
|
+
import { grpcUserStatsAccountSubscriber } from './accounts/grpcUserStatsAccountSubscriber';
|
|
13
13
|
import { FUEL_START_TS } from './constants/numericConstants';
|
|
14
14
|
import { ZERO } from './constants/numericConstants';
|
|
15
15
|
import {
|
package/src/userStatsConfig.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DriftClient } from './driftClient';
|
|
2
2
|
import { Commitment, PublicKey } from '@solana/web3.js';
|
|
3
|
-
import { BulkAccountLoader } from './accounts/bulkAccountLoader
|
|
3
|
+
import { BulkAccountLoader } from './accounts/bulkAccountLoader';
|
|
4
4
|
import { GrpcConfigs } from './accounts/types';
|
|
5
5
|
|
|
6
6
|
export type UserStatsConfig = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { CustomizedCadenceBulkAccountLoader } from '../../src/accounts/
|
|
2
|
+
import { CustomizedCadenceBulkAccountLoader } from '../../src/accounts/customizedCadenceBulkAccountLoader';
|
|
3
3
|
import { expect } from 'chai';
|
|
4
4
|
|
|
5
5
|
describe('CustomizedCadenceBulkAccountLoader', () => {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type DriftEnv = 'devnet' | 'mainnet-beta';
|