@drift-labs/sdk 2.162.0-beta.2 → 2.163.0-beta.9
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 -0
- package/.yarn/install-state.gz +0 -0
- package/README.md +2 -2
- package/VERSION +1 -1
- package/bun.lock +47 -79
- package/lib/browser/accounts/fetch.d.ts +6 -6
- package/lib/browser/accounts/fetch.js +4 -4
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/grpcDriftClientAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/grpcDriftClientAccountSubscriberV2.d.ts +3 -3
- package/lib/browser/accounts/grpcDriftClientAccountSubscriberV2.js +2 -2
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/pollingDriftClientAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/pollingDriftClientAccountSubscriber.js +2 -2
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +2 -2
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +2 -2
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +1 -1
- package/lib/browser/accounts/testBulkAccountLoader.js +3 -5
- package/lib/browser/accounts/types.d.ts +11 -14
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/webSocketAccountSubscriber.js +1 -2
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +3 -3
- package/lib/browser/accounts/webSocketDriftClientAccountSubscriber.d.ts +5 -5
- package/lib/browser/accounts/webSocketDriftClientAccountSubscriber.js +2 -2
- package/lib/browser/accounts/webSocketDriftClientAccountSubscriberV2.d.ts +3 -3
- package/lib/browser/accounts/webSocketDriftClientAccountSubscriberV2.js +2 -2
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -3
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -3
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +3 -3
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +3 -3
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +2 -2
- package/lib/browser/addresses/pda.d.ts +6 -2
- package/lib/browser/addresses/pda.js +7 -12
- package/lib/browser/adminClient.d.ts +11 -9
- package/lib/browser/adminClient.js +30 -72
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +1 -1
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
- package/lib/browser/config.d.ts +7 -3
- package/lib/browser/config.js +9 -7
- package/lib/browser/constants/index.d.ts +5 -0
- package/lib/browser/constants/index.js +5 -0
- package/lib/browser/constants/numericConstants.d.ts +1 -1
- package/lib/browser/constants/numericConstants.js +3 -3
- package/lib/browser/constants/perpMarkets.js +3 -412
- package/lib/browser/constants/spotMarkets.js +7 -91
- package/lib/browser/constituentMap/constituentMap.js +2 -2
- package/lib/browser/constituentMap/pollingConstituentAccountSubscriber.d.ts +3 -3
- package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.d.ts +3 -3
- package/lib/browser/constituentMap/webSocketConstituentAccountSubscriber.js +1 -1
- package/lib/browser/decode/customCoder.d.ts +7 -9
- package/lib/browser/decode/customCoder.js +17 -28
- package/lib/browser/decode/user.js +7 -25
- package/lib/browser/dlob/DLOB.d.ts +12 -0
- package/lib/browser/dlob/DLOB.js +12 -0
- package/lib/browser/dlob/orderBookLevels.js +1 -1
- package/lib/browser/driftClient.d.ts +32 -59
- package/lib/browser/driftClient.js +85 -562
- package/lib/browser/driftClientConfig.d.ts +7 -0
- package/lib/browser/events/eventSubscriber.d.ts +8 -0
- package/lib/browser/events/eventSubscriber.js +5 -2
- package/lib/browser/events/parse.d.ts +1 -1
- package/lib/browser/factory/oracleClient.d.ts +2 -2
- package/lib/browser/factory/oracleClient.js +9 -21
- package/lib/browser/idl/drift.d.ts +25708 -0
- package/lib/browser/idl/drift.js +2 -0
- package/lib/browser/idl/drift.json +20850 -15287
- package/lib/browser/idl/pyth.d.ts +97 -0
- package/lib/browser/idl/pyth.js +2 -0
- package/lib/browser/idl/token_faucet.d.ts +197 -0
- package/lib/browser/idl/token_faucet.js +2 -0
- package/lib/browser/idl/token_faucet.json +148 -61
- package/lib/browser/index.d.ts +13 -6
- package/lib/browser/index.js +12 -5
- package/lib/browser/marinade/index.d.ts +1 -1
- package/lib/browser/marinade/index.js +2 -2
- package/lib/browser/math/amm.d.ts +4 -5
- package/lib/browser/math/amm.js +8 -35
- package/lib/browser/math/funding.js +6 -1
- package/lib/browser/math/margin.d.ts +3 -4
- package/lib/browser/math/margin.js +16 -47
- package/lib/browser/math/market.d.ts +2 -2
- package/lib/browser/math/market.js +10 -42
- package/lib/browser/math/oracles.js +14 -19
- package/lib/browser/math/position.js +1 -1
- package/lib/browser/math/trade.js +4 -4
- package/lib/browser/memcmp.js +8 -8
- package/lib/browser/openbook/openbookV2Subscriber.d.ts +1 -1
- package/lib/browser/openbook/openbookV2Subscriber.js +3 -3
- package/lib/browser/oracles/oracleClientCache.d.ts +2 -2
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +2 -2
- package/lib/browser/oracles/prelaunchOracleClient.js +1 -1
- package/lib/browser/oracles/pythLazerClient.js +3 -5
- package/lib/browser/oracles/types.d.ts +6 -0
- package/lib/browser/orderParams.d.ts +0 -1
- package/lib/browser/orderParams.js +1 -5
- package/lib/browser/orderSubscriber/OrderSubscriber.js +3 -4
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +1 -1
- package/lib/browser/orderSubscriber/grpcSubscription.js +2 -2
- package/lib/browser/orderSubscriber/index.d.ts +5 -0
- package/lib/browser/orderSubscriber/index.js +5 -0
- package/lib/browser/priorityFee/index.d.ts +5 -0
- package/lib/browser/priorityFee/index.js +5 -0
- package/lib/browser/pyth/index.d.ts +2 -2
- package/lib/browser/pyth/types.d.ts +1 -1
- package/lib/browser/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
- package/lib/browser/swift/index.d.ts +7 -0
- package/lib/browser/swift/index.js +7 -0
- package/lib/browser/swift/signedMsgUserAccountSubscriber.js +4 -3
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +4 -4
- package/lib/browser/tx/txHandler.d.ts +12 -0
- package/lib/browser/tx/txHandler.js +12 -0
- package/lib/browser/types.d.ts +19 -31
- package/lib/browser/types.js +6 -11
- package/lib/browser/user.d.ts +27 -18
- package/lib/browser/user.js +64 -100
- package/lib/browser/userMap/WebsocketSubscription.js +1 -1
- package/lib/browser/userMap/grpcSubscription.js +1 -1
- package/lib/browser/userMap/revenueShareEscrowMap.js +4 -4
- package/lib/browser/userMap/userMap.js +4 -5
- package/lib/browser/userMap/userStatsMap.js +2 -3
- package/lib/browser/userStats.d.ts +5 -0
- package/lib/node/accounts/fetch.d.ts +6 -6
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +4 -4
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcDriftClientAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcDriftClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcDriftClientAccountSubscriberV2.d.ts +3 -3
- package/lib/node/accounts/grpcDriftClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcDriftClientAccountSubscriberV2.js +2 -2
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingDriftClientAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/pollingDriftClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingDriftClientAccountSubscriber.js +2 -2
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +2 -2
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +1 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +3 -5
- package/lib/node/accounts/types.d.ts +11 -14
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +1 -2
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +3 -3
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketDriftClientAccountSubscriber.d.ts +5 -5
- package/lib/node/accounts/webSocketDriftClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketDriftClientAccountSubscriber.js +2 -2
- package/lib/node/accounts/webSocketDriftClientAccountSubscriberV2.d.ts +3 -3
- package/lib/node/accounts/webSocketDriftClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketDriftClientAccountSubscriberV2.js +2 -2
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +3 -3
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +3 -3
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +3 -3
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +3 -3
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +2 -2
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/addresses/pda.d.ts +6 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +7 -12
- package/lib/node/adminClient.d.ts +11 -9
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +30 -72
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +1 -1
- package/lib/node/config.d.ts +7 -3
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +9 -7
- package/lib/node/constants/index.d.ts +5 -0
- package/lib/node/constants/index.d.ts.map +1 -1
- package/lib/node/constants/index.js +5 -0
- package/lib/node/constants/numericConstants.d.ts +1 -1
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +3 -3
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +3 -412
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +7 -91
- package/lib/node/constituentMap/constituentMap.d.ts.map +1 -1
- package/lib/node/constituentMap/constituentMap.js +2 -2
- package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts +3 -3
- package/lib/node/constituentMap/pollingConstituentAccountSubscriber.d.ts.map +1 -1
- package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts +3 -3
- package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.d.ts.map +1 -1
- package/lib/node/constituentMap/webSocketConstituentAccountSubscriber.js +1 -1
- package/lib/node/decode/customCoder.d.ts +7 -9
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +17 -28
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +7 -25
- package/lib/node/dlob/DLOB.d.ts +12 -0
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +12 -0
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +1 -1
- package/lib/node/driftClient.d.ts +32 -59
- package/lib/node/driftClient.d.ts.map +1 -1
- package/lib/node/driftClient.js +85 -562
- package/lib/node/driftClientConfig.d.ts +7 -0
- package/lib/node/driftClientConfig.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.d.ts +8 -0
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +5 -2
- package/lib/node/events/parse.d.ts +1 -1
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/factory/oracleClient.d.ts +2 -2
- package/lib/node/factory/oracleClient.d.ts.map +1 -1
- package/lib/node/factory/oracleClient.js +9 -21
- package/lib/node/idl/drift.d.ts +25709 -0
- package/lib/node/idl/drift.d.ts.map +1 -0
- package/lib/node/idl/drift.js +2 -0
- package/lib/node/idl/drift.json +20850 -15287
- package/lib/node/idl/pyth.d.ts +98 -0
- package/lib/node/idl/pyth.d.ts.map +1 -0
- package/lib/node/idl/pyth.js +2 -0
- package/lib/node/idl/token_faucet.d.ts +198 -0
- package/lib/node/idl/token_faucet.d.ts.map +1 -0
- package/lib/node/idl/token_faucet.js +2 -0
- package/lib/node/idl/token_faucet.json +148 -61
- package/lib/node/index.d.ts +13 -6
- package/lib/node/index.d.ts.map +1 -1
- package/lib/node/index.js +12 -5
- package/lib/node/marinade/index.d.ts +1 -1
- package/lib/node/marinade/index.d.ts.map +1 -1
- package/lib/node/marinade/index.js +2 -2
- package/lib/node/math/amm.d.ts +4 -5
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +8 -35
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +6 -1
- package/lib/node/math/margin.d.ts +3 -4
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +16 -47
- package/lib/node/math/market.d.ts +2 -2
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +10 -42
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +14 -19
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +1 -1
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +4 -4
- package/lib/node/memcmp.js +8 -8
- package/lib/node/openbook/openbookV2Subscriber.d.ts +1 -1
- package/lib/node/openbook/openbookV2Subscriber.d.ts.map +1 -1
- package/lib/node/openbook/openbookV2Subscriber.js +3 -3
- package/lib/node/oracles/oracleClientCache.d.ts +2 -2
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.d.ts +2 -2
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +1 -1
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +3 -5
- package/lib/node/oracles/types.d.ts +6 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/orderParams.d.ts +0 -1
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +1 -5
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +3 -4
- package/lib/node/orderSubscriber/WebsocketSubscription.js +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +2 -2
- package/lib/node/orderSubscriber/index.d.ts +5 -0
- package/lib/node/orderSubscriber/index.d.ts.map +1 -1
- package/lib/node/orderSubscriber/index.js +5 -0
- package/lib/node/priorityFee/index.d.ts +5 -0
- package/lib/node/priorityFee/index.d.ts.map +1 -1
- package/lib/node/priorityFee/index.js +5 -0
- package/lib/node/pyth/index.d.ts +2 -2
- package/lib/node/pyth/index.d.ts.map +1 -1
- package/lib/node/pyth/types.d.ts +1 -1
- package/lib/node/pyth/types.d.ts.map +1 -1
- package/lib/node/swift/grpcSignedMsgUserAccountSubscriber.js +1 -1
- package/lib/node/swift/index.d.ts +7 -0
- package/lib/node/swift/index.d.ts.map +1 -1
- package/lib/node/swift/index.js +7 -0
- package/lib/node/swift/signedMsgUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/swift/signedMsgUserAccountSubscriber.js +4 -3
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +4 -4
- package/lib/node/tx/txHandler.d.ts +12 -0
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +12 -0
- package/lib/node/types.d.ts +19 -31
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +6 -11
- package/lib/node/user.d.ts +27 -18
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +64 -100
- package/lib/node/userMap/WebsocketSubscription.js +1 -1
- package/lib/node/userMap/grpcSubscription.js +1 -1
- 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.map +1 -1
- package/lib/node/userMap/userMap.js +4 -5
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +2 -3
- package/lib/node/userStats.d.ts +5 -0
- package/lib/node/userStats.d.ts.map +1 -1
- package/package.json +5 -7
- package/src/accounts/fetch.ts +18 -17
- package/src/accounts/grpcAccountSubscriber.ts +3 -3
- package/src/accounts/grpcDriftClientAccountSubscriber.ts +2 -3
- package/src/accounts/grpcDriftClientAccountSubscriberV2.ts +5 -6
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +2 -2
- package/src/accounts/grpcMultiAccountSubscriber.ts +4 -4
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +4 -4
- package/src/accounts/grpcProgramAccountSubscriber.ts +3 -3
- package/src/accounts/grpcUserAccountSubscriber.ts +2 -2
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +2 -2
- package/src/accounts/laserProgramAccountSubscriber.ts +3 -3
- package/src/accounts/oneShotUserAccountSubscriber.ts +6 -7
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +10 -9
- package/src/accounts/pollingDriftClientAccountSubscriber.ts +12 -11
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +11 -10
- package/src/accounts/pollingOracleAccountSubscriber.ts +2 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +2 -2
- package/src/accounts/pollingUserAccountSubscriber.ts +2 -2
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +14 -14
- package/src/accounts/testBulkAccountLoader.ts +3 -5
- package/src/accounts/types.ts +10 -25
- package/src/accounts/webSocketAccountSubscriber.ts +5 -5
- package/src/accounts/webSocketAccountSubscriberV2.ts +4 -3
- package/src/accounts/webSocketDriftClientAccountSubscriber.ts +9 -10
- package/src/accounts/webSocketDriftClientAccountSubscriberV2.ts +13 -10
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +3 -3
- package/src/accounts/webSocketProgramAccountSubscriber.ts +4 -3
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +4 -3
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +4 -3
- package/src/accounts/webSocketUserAccountSubscriber.ts +3 -3
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +3 -3
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +4 -4
- package/src/addresses/pda.ts +6 -22
- package/src/adminClient.ts +154 -239
- package/src/auctionSubscriber/auctionSubscriber.ts +5 -3
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +5 -3
- package/src/config.ts +24 -16
- package/src/constants/index.ts +5 -0
- package/src/constants/numericConstants.ts +2 -3
- package/src/constants/perpMarkets.ts +3 -445
- package/src/constants/spotMarkets.ts +7 -102
- package/src/constituentMap/constituentMap.ts +5 -6
- package/src/constituentMap/pollingConstituentAccountSubscriber.ts +3 -3
- package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +6 -6
- package/src/decode/customCoder.ts +26 -35
- package/src/decode/user.ts +7 -25
- package/src/dlob/DLOB.ts +12 -0
- package/src/dlob/orderBookLevels.ts +0 -1
- package/src/driftClient.ts +245 -1091
- package/src/driftClientConfig.ts +7 -0
- package/src/events/eventSubscriber.ts +14 -2
- package/src/events/parse.ts +2 -2
- package/src/factory/oracleClient.ts +17 -28
- package/src/idl/drift.json +20850 -15287
- package/src/idl/drift.ts +25708 -0
- package/src/idl/pyth.ts +97 -0
- package/src/idl/token_faucet.json +148 -61
- package/src/idl/token_faucet.ts +197 -0
- package/src/index.ts +13 -12
- package/src/margin/README.md +0 -1
- package/src/marinade/index.ts +2 -2
- package/src/math/amm.ts +2 -48
- package/src/math/funding.ts +8 -3
- package/src/math/margin.ts +12 -67
- package/src/math/market.ts +15 -69
- package/src/math/oracles.ts +14 -30
- package/src/math/position.ts +0 -1
- package/src/math/trade.ts +0 -4
- package/src/memcmp.ts +1 -1
- package/src/openbook/openbookV2Subscriber.ts +1 -1
- package/src/oracles/oracleClientCache.ts +2 -2
- package/src/oracles/prelaunchOracleClient.ts +9 -8
- package/src/oracles/pythLazerClient.ts +10 -12
- package/src/oracles/types.ts +6 -0
- package/src/orderParams.ts +0 -5
- package/src/orderSubscriber/OrderSubscriber.ts +7 -6
- package/src/orderSubscriber/WebsocketSubscription.ts +1 -1
- package/src/orderSubscriber/grpcSubscription.ts +2 -2
- package/src/orderSubscriber/index.ts +5 -0
- package/src/priorityFee/index.ts +5 -0
- package/src/pyth/index.ts +4 -4
- package/src/pyth/types.ts +1 -1
- package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +1 -1
- package/src/swift/index.ts +7 -0
- package/src/swift/signedMsgUserAccountSubscriber.ts +7 -4
- package/src/tokenFaucet.ts +8 -4
- package/src/tx/txHandler.ts +12 -0
- package/src/types.ts +16 -20
- package/src/user.ts +66 -144
- package/src/userMap/WebsocketSubscription.ts +1 -1
- package/src/userMap/grpcSubscription.ts +1 -1
- package/src/userMap/revenueShareEscrowMap.ts +24 -20
- package/src/userMap/userMap.ts +8 -7
- package/src/userMap/userStatsMap.ts +6 -5
- package/src/userStats.ts +5 -0
- package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +5 -4
- package/tests/amm/test.ts +45 -64
- package/tests/ci/verifyConstants.ts +23 -26
- package/tests/decode/test.ts +2 -4
- package/tests/dlob/helpers.ts +8 -15
- package/tests/user/helpers.ts +0 -2
- package/tests/user/marginCalculations.test.ts +2 -3
- package/tests/user/test.ts +18 -15
- package/lib/browser/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts +0 -29
- package/lib/browser/accounts/pollingHighLeverageModeConfigAccountSubscriber.js +0 -111
- package/lib/browser/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts +0 -23
- package/lib/browser/accounts/webSocketHighLeverageModeConfigAccountSubscriber.js +0 -69
- package/lib/browser/idl/pyth_solana_receiver.json +0 -628
- package/lib/browser/idl/switchboard.json +0 -8354
- package/lib/browser/idl/switchboard_on_demand_30.json +0 -5849
- package/lib/browser/oracles/pythPullClient.d.ts +0 -19
- package/lib/browser/oracles/pythPullClient.js +0 -65
- package/lib/browser/oracles/switchboardClient.d.ts +0 -12
- package/lib/browser/oracles/switchboardClient.js +0 -40
- package/lib/browser/oracles/switchboardOnDemandClient.d.ts +0 -12
- package/lib/browser/oracles/switchboardOnDemandClient.js +0 -33
- package/lib/browser/util/pythOracleUtils.d.ts +0 -2
- package/lib/browser/util/pythOracleUtils.js +0 -15
- package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts +0 -30
- package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/pollingHighLeverageModeConfigAccountSubscriber.js +0 -111
- package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts +0 -24
- package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.d.ts.map +0 -1
- package/lib/node/accounts/webSocketHighLeverageModeConfigAccountSubscriber.js +0 -69
- package/lib/node/idl/pyth_solana_receiver.json +0 -628
- package/lib/node/idl/switchboard.json +0 -8354
- package/lib/node/idl/switchboard_on_demand_30.json +0 -5849
- package/lib/node/oracles/pythPullClient.d.ts +0 -20
- package/lib/node/oracles/pythPullClient.d.ts.map +0 -1
- package/lib/node/oracles/pythPullClient.js +0 -65
- package/lib/node/oracles/switchboardClient.d.ts +0 -13
- package/lib/node/oracles/switchboardClient.d.ts.map +0 -1
- package/lib/node/oracles/switchboardClient.js +0 -40
- package/lib/node/oracles/switchboardOnDemandClient.d.ts +0 -13
- package/lib/node/oracles/switchboardOnDemandClient.d.ts.map +0 -1
- package/lib/node/oracles/switchboardOnDemandClient.js +0 -33
- package/lib/node/util/pythOracleUtils.d.ts +0 -3
- package/lib/node/util/pythOracleUtils.d.ts.map +0 -1
- package/lib/node/util/pythOracleUtils.js +0 -15
- package/src/accounts/pollingHighLeverageModeConfigAccountSubscriber.ts +0 -189
- package/src/accounts/webSocketHighLeverageModeConfigAccountSubscriber.ts +0 -131
- package/src/idl/switchboard.json +0 -8354
- package/src/idl/switchboard_on_demand_30.json +0 -5849
- package/src/oracles/pythPullClient.ts +0 -112
- package/src/oracles/switchboardClient.ts +0 -77
- package/src/oracles/switchboardOnDemandClient.ts +0 -64
- package/src/util/pythOracleUtils.ts +0 -11
package/lib/node/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAEvC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kDAAkD,CAAC;AACjE,cAAc,yDAAyD,CAAC;AACxE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/node/index.js
CHANGED
|
@@ -18,6 +18,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.pyth = exports.PublicKey = exports.BN = exports.PythLazerSubscriber = exports.CustomizedCadenceBulkAccountLoader = exports.WebSocketDriftClientAccountSubscriberV2 = exports.WebSocketProgramAccountsSubscriberV2 = exports.WebSocketProgramUserAccountSubscriber = exports.WebSocketProgramAccountSubscriber = exports.WebSocketAccountSubscriberV2 = void 0;
|
|
21
|
+
/**
|
|
22
|
+
* @module @drift-labs/sdk
|
|
23
|
+
* Main package barrel — re-exports all public SDK types, classes, and utilities.
|
|
24
|
+
*
|
|
25
|
+
* Primary entry points:
|
|
26
|
+
* {@link DriftClient} — trading and keeper instruction builders (driftClient.ts)
|
|
27
|
+
* {@link AdminClient} — governance/admin instruction builders (adminClient.ts)
|
|
28
|
+
* {@link User} — user account abstraction: margin queries, position accessors (user.ts)
|
|
29
|
+
* {@link DLOB} — decentralized limit order book (dlob/DLOB.ts)
|
|
30
|
+
*
|
|
31
|
+
* Key re-exported namespaces: types, addresses/pda, accounts (subscribers), math, events, oracles, constants.
|
|
32
|
+
*/
|
|
21
33
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
22
34
|
Object.defineProperty(exports, "BN", { enumerable: true, get: function () { return anchor_1.BN; } });
|
|
23
35
|
const web3_js_1 = require("@solana/web3.js");
|
|
@@ -32,7 +44,6 @@ __exportStar(require("./types"), exports);
|
|
|
32
44
|
__exportStar(require("./accounts/fetch"), exports);
|
|
33
45
|
__exportStar(require("./accounts/webSocketDriftClientAccountSubscriber"), exports);
|
|
34
46
|
__exportStar(require("./accounts/webSocketInsuranceFundStakeAccountSubscriber"), exports);
|
|
35
|
-
__exportStar(require("./accounts/webSocketHighLeverageModeConfigAccountSubscriber"), exports);
|
|
36
47
|
var webSocketAccountSubscriberV2_1 = require("./accounts/webSocketAccountSubscriberV2");
|
|
37
48
|
Object.defineProperty(exports, "WebSocketAccountSubscriberV2", { enumerable: true, get: function () { return webSocketAccountSubscriberV2_1.WebSocketAccountSubscriberV2; } });
|
|
38
49
|
var webSocketProgramAccountSubscriber_1 = require("./accounts/webSocketProgramAccountSubscriber");
|
|
@@ -54,7 +65,6 @@ __exportStar(require("./accounts/pollingTokenAccountSubscriber"), exports);
|
|
|
54
65
|
__exportStar(require("./accounts/pollingUserAccountSubscriber"), exports);
|
|
55
66
|
__exportStar(require("./accounts/pollingUserStatsAccountSubscriber"), exports);
|
|
56
67
|
__exportStar(require("./accounts/pollingInsuranceFundStakeAccountSubscriber"), exports);
|
|
57
|
-
__exportStar(require("./accounts/pollingHighLeverageModeConfigAccountSubscriber"), exports);
|
|
58
68
|
__exportStar(require("./accounts/basicUserAccountSubscriber"), exports);
|
|
59
69
|
__exportStar(require("./accounts/oneShotUserAccountSubscriber"), exports);
|
|
60
70
|
__exportStar(require("./accounts/oneShotUserStatsAccountSubscriber"), exports);
|
|
@@ -123,9 +133,7 @@ __exportStar(require("./phoenix/phoenixFulfillmentConfigMap"), exports);
|
|
|
123
133
|
__exportStar(require("./openbook/openbookV2Subscriber"), exports);
|
|
124
134
|
__exportStar(require("./openbook/openbookV2FulfillmentConfigMap"), exports);
|
|
125
135
|
__exportStar(require("./oracles/pythClient"), exports);
|
|
126
|
-
__exportStar(require("./oracles/pythPullClient"), exports);
|
|
127
136
|
__exportStar(require("./oracles/pythLazerClient"), exports);
|
|
128
|
-
__exportStar(require("./oracles/switchboardOnDemandClient"), exports);
|
|
129
137
|
__exportStar(require("./oracles/oracleId"), exports);
|
|
130
138
|
__exportStar(require("./oracles/utils"), exports);
|
|
131
139
|
__exportStar(require("./swift/swiftOrderSubscriber"), exports);
|
|
@@ -143,7 +151,6 @@ __exportStar(require("./util/computeUnits"), exports);
|
|
|
143
151
|
__exportStar(require("./util/digest"), exports);
|
|
144
152
|
__exportStar(require("./util/tps"), exports);
|
|
145
153
|
__exportStar(require("./util/promiseTimeout"), exports);
|
|
146
|
-
__exportStar(require("./util/pythOracleUtils"), exports);
|
|
147
154
|
__exportStar(require("./math/spotBalance"), exports);
|
|
148
155
|
__exportStar(require("./driftClientConfig"), exports);
|
|
149
156
|
__exportStar(require("./dlob/DLOB"), exports);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="bn.js" />
|
|
2
|
-
import { AnchorProvider, BN, Program } from '@coral-xyz/anchor';
|
|
2
|
+
import { AnchorProvider, BN, Program } from '@coral-xyz/anchor-29';
|
|
3
3
|
import { MarinadeFinance } from './types';
|
|
4
4
|
import { PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
5
5
|
export declare function getMarinadeFinanceProgram(provider: AnchorProvider): Program<MarinadeFinance>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/marinade/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/marinade/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAO,MAAM,SAAS,CAAC;AAC/C,OAAO,EACN,SAAS,EAET,sBAAsB,EACtB,MAAM,iBAAiB,CAAC;AAOzB,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,cAAc,GACtB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,wBAAgB,oBAAoB,CAAC,EACpC,OAAO,EACP,MAAM,EACN,WAAW,EACX,YAAY,GACZ,EAAE;IACF,MAAM,EAAE,EAAE,CAAC;IACX,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,EAAE,SAAS,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAClC,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAyBlC;AAED,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAKjB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getMarinadeMSolPrice = exports.getMarinadeDepositIx = exports.getMarinadeFinanceProgram = void 0;
|
|
4
|
-
const
|
|
4
|
+
const anchor_29_1 = require("@coral-xyz/anchor-29");
|
|
5
5
|
const types_1 = require("./types");
|
|
6
6
|
const web3_js_1 = require("@solana/web3.js");
|
|
7
7
|
const spl_token_1 = require("@solana/spl-token");
|
|
8
8
|
const marinadeFinanceProgramId = new web3_js_1.PublicKey('MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD');
|
|
9
9
|
function getMarinadeFinanceProgram(provider) {
|
|
10
|
-
return new
|
|
10
|
+
return new anchor_29_1.Program(types_1.IDL, marinadeFinanceProgramId, provider);
|
|
11
11
|
}
|
|
12
12
|
exports.getMarinadeFinanceProgram = getMarinadeFinanceProgram;
|
|
13
13
|
function getMarinadeDepositIx({ program, amount, mSOLAccount, transferFrom, }) {
|
package/lib/node/math/amm.d.ts
CHANGED
|
@@ -6,13 +6,13 @@ export declare function calculatePegFromTargetPrice(targetPrice: BN, baseAssetRe
|
|
|
6
6
|
export declare function calculateOptimalPegAndBudget(amm: AMM, mmOraclePriceData: MMOraclePriceData): [BN, BN, BN, boolean];
|
|
7
7
|
export declare function calculateNewAmm(amm: AMM, mmOraclePriceData: MMOraclePriceData): [BN, BN, BN, BN];
|
|
8
8
|
export declare function calculateUpdatedAMM(amm: AMM, mmOraclePriceData: MMOraclePriceData): AMM;
|
|
9
|
-
export declare function calculateUpdatedAMMSpreadReserves(amm: AMM, direction: PositionDirection, mmOraclePriceData: MMOraclePriceData,
|
|
9
|
+
export declare function calculateUpdatedAMMSpreadReserves(amm: AMM, direction: PositionDirection, mmOraclePriceData: MMOraclePriceData, latestSlot?: BN): {
|
|
10
10
|
baseAssetReserve: BN;
|
|
11
11
|
quoteAssetReserve: BN;
|
|
12
12
|
sqrtK: BN;
|
|
13
13
|
newPeg: BN;
|
|
14
14
|
};
|
|
15
|
-
export declare function calculateBidAskPrice(amm: AMM, mmOraclePriceData: MMOraclePriceData, withUpdate?: boolean,
|
|
15
|
+
export declare function calculateBidAskPrice(amm: AMM, mmOraclePriceData: MMOraclePriceData, withUpdate?: boolean, latestSlot?: BN): [BN, BN];
|
|
16
16
|
/**
|
|
17
17
|
* Calculates a price given an arbitrary base and quote amount (they must have the same precision)
|
|
18
18
|
*
|
|
@@ -65,8 +65,7 @@ export declare function calculateSpreadBN(baseSpread: number, lastOracleReserveP
|
|
|
65
65
|
shortSpread: number;
|
|
66
66
|
};
|
|
67
67
|
export declare function calculateSpread(amm: AMM, oraclePriceData: OraclePriceData, now?: BN, reservePrice?: BN): [number, number];
|
|
68
|
-
export declare function
|
|
69
|
-
export declare function calculateSpreadReserves(amm: AMM, mmOraclePriceData: MMOraclePriceData, now?: BN, isPrediction?: boolean, latestSlot?: BN): {
|
|
68
|
+
export declare function calculateSpreadReserves(amm: AMM, mmOraclePriceData: MMOraclePriceData, now?: BN, latestSlot?: BN): {
|
|
70
69
|
baseAssetReserve: any;
|
|
71
70
|
quoteAssetReserve: any;
|
|
72
71
|
}[];
|
|
@@ -94,7 +93,7 @@ export declare function getSwapDirection(inputAssetType: AssetType, positionDire
|
|
|
94
93
|
* @returns cost : Precision PRICE_PRECISION
|
|
95
94
|
*/
|
|
96
95
|
export declare function calculateTerminalPrice(market: PerpMarketAccount): BN;
|
|
97
|
-
export declare function calculateMaxBaseAssetAmountToTrade(amm: AMM, limit_price: BN, direction: PositionDirection, mmOraclePriceData?: MMOraclePriceData, now?: BN
|
|
96
|
+
export declare function calculateMaxBaseAssetAmountToTrade(amm: AMM, limit_price: BN, direction: PositionDirection, mmOraclePriceData?: MMOraclePriceData, now?: BN): [BN, PositionDirection];
|
|
98
97
|
export declare function calculateQuoteAssetAmountSwapped(quoteAssetReserves: BN, pegMultiplier: BN, swapDirection: SwapDirection): BN;
|
|
99
98
|
export declare function calculateMaxBaseAssetAmountFillable(amm: AMM, orderDirection: PositionDirection): BN;
|
|
100
99
|
//# sourceMappingURL=amm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amm.d.ts","sourceRoot":"","sources":["../../../src/math/amm.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAiBvC,OAAO,EACN,GAAG,EACH,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EAEjB,MAAM,UAAU,CAAC;AAKlB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAStE,wBAAgB,2BAA2B,CAC1C,WAAW,EAAE,EAAE,EACf,gBAAgB,EAAE,EAAE,EACpB,iBAAiB,EAAE,EAAE,GACnB,EAAE,CASJ;AAED,wBAAgB,4BAA4B,CAC3C,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,iBAAiB,GAClC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAwDvB;AAED,wBAAgB,eAAe,CAC9B,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,iBAAiB,GAClC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAqClB;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,iBAAiB,GAClC,GAAG,CAmCL;AAED,wBAAgB,iCAAiC,CAChD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,iBAAiB,EAC5B,iBAAiB,EAAE,iBAAiB,EACpC,
|
|
1
|
+
{"version":3,"file":"amm.d.ts","sourceRoot":"","sources":["../../../src/math/amm.ts"],"names":[],"mappings":"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"}
|
package/lib/node/math/amm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.calculateMaxBaseAssetAmountFillable = exports.calculateQuoteAssetAmountSwapped = exports.calculateMaxBaseAssetAmountToTrade = exports.calculateTerminalPrice = exports.getSwapDirection = exports.calculateSwapOutput = exports.calculateSpreadReserves = exports.
|
|
3
|
+
exports.calculateMaxBaseAssetAmountFillable = exports.calculateQuoteAssetAmountSwapped = exports.calculateMaxBaseAssetAmountToTrade = exports.calculateTerminalPrice = exports.getSwapDirection = exports.calculateSwapOutput = exports.calculateSpreadReserves = exports.calculateSpread = exports.calculateSpreadBN = exports.calculateVolSpreadBN = exports.calculateMaxSpread = exports.calculateEffectiveLeverage = exports.calculateReferencePriceOffset = exports.calculateInventoryScale = exports.calculateInventoryLiquidityRatioForReferencePriceOffset = exports.calculateInventoryLiquidityRatio = exports.calculateMarketOpenBidAsk = exports.calculateAmmReservesAfterSwap = exports.calculatePrice = exports.calculateBidAskPrice = exports.calculateUpdatedAMMSpreadReserves = exports.calculateUpdatedAMM = exports.calculateNewAmm = exports.calculateOptimalPegAndBudget = exports.calculatePegFromTargetPrice = void 0;
|
|
4
4
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
5
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
6
6
|
const types_1 = require("../types");
|
|
@@ -104,9 +104,9 @@ function calculateUpdatedAMM(amm, mmOraclePriceData) {
|
|
|
104
104
|
return newAmm;
|
|
105
105
|
}
|
|
106
106
|
exports.calculateUpdatedAMM = calculateUpdatedAMM;
|
|
107
|
-
function calculateUpdatedAMMSpreadReserves(amm, direction, mmOraclePriceData,
|
|
107
|
+
function calculateUpdatedAMMSpreadReserves(amm, direction, mmOraclePriceData, latestSlot) {
|
|
108
108
|
const newAmm = calculateUpdatedAMM(amm, mmOraclePriceData);
|
|
109
|
-
const [shortReserves, longReserves] = calculateSpreadReserves(newAmm, mmOraclePriceData, undefined,
|
|
109
|
+
const [shortReserves, longReserves] = calculateSpreadReserves(newAmm, mmOraclePriceData, undefined, latestSlot);
|
|
110
110
|
const dirReserves = (0, types_1.isVariant)(direction, 'long')
|
|
111
111
|
? longReserves
|
|
112
112
|
: shortReserves;
|
|
@@ -119,7 +119,7 @@ function calculateUpdatedAMMSpreadReserves(amm, direction, mmOraclePriceData, is
|
|
|
119
119
|
return result;
|
|
120
120
|
}
|
|
121
121
|
exports.calculateUpdatedAMMSpreadReserves = calculateUpdatedAMMSpreadReserves;
|
|
122
|
-
function calculateBidAskPrice(amm, mmOraclePriceData, withUpdate = true,
|
|
122
|
+
function calculateBidAskPrice(amm, mmOraclePriceData, withUpdate = true, latestSlot) {
|
|
123
123
|
let newAmm;
|
|
124
124
|
if (withUpdate) {
|
|
125
125
|
newAmm = calculateUpdatedAMM(amm, mmOraclePriceData);
|
|
@@ -127,7 +127,7 @@ function calculateBidAskPrice(amm, mmOraclePriceData, withUpdate = true, isPredi
|
|
|
127
127
|
else {
|
|
128
128
|
newAmm = amm;
|
|
129
129
|
}
|
|
130
|
-
const [bidReserves, askReserves] = calculateSpreadReserves(newAmm, mmOraclePriceData, undefined,
|
|
130
|
+
const [bidReserves, askReserves] = calculateSpreadReserves(newAmm, mmOraclePriceData, undefined, latestSlot);
|
|
131
131
|
const askPrice = calculatePrice(askReserves.baseAssetReserve, askReserves.quoteAssetReserve, newAmm.pegMultiplier);
|
|
132
132
|
const bidPrice = calculatePrice(bidReserves.baseAssetReserve, bidReserves.quoteAssetReserve, newAmm.pegMultiplier);
|
|
133
133
|
return [bidPrice, askPrice];
|
|
@@ -475,30 +475,7 @@ function calculateSpread(amm, oraclePriceData, now, reservePrice) {
|
|
|
475
475
|
return [longSpread, shortSpread];
|
|
476
476
|
}
|
|
477
477
|
exports.calculateSpread = calculateSpread;
|
|
478
|
-
function
|
|
479
|
-
let quoteAssetReserveLowerBound = numericConstants_1.ZERO;
|
|
480
|
-
const pegSqrt = (0, utils_1.squareRootBN)(amm.pegMultiplier.mul(numericConstants_1.PEG_PRECISION).addn(1)).addn(1);
|
|
481
|
-
let quoteAssetReserveUpperBound = amm.sqrtK
|
|
482
|
-
.mul(pegSqrt)
|
|
483
|
-
.div(amm.pegMultiplier);
|
|
484
|
-
if (direction === types_1.PositionDirection.LONG) {
|
|
485
|
-
quoteAssetReserveLowerBound = amm.sqrtK
|
|
486
|
-
.muln(22361)
|
|
487
|
-
.mul(pegSqrt)
|
|
488
|
-
.divn(100000)
|
|
489
|
-
.div(amm.pegMultiplier);
|
|
490
|
-
}
|
|
491
|
-
else {
|
|
492
|
-
quoteAssetReserveUpperBound = amm.sqrtK
|
|
493
|
-
.muln(97467)
|
|
494
|
-
.mul(pegSqrt)
|
|
495
|
-
.divn(100000)
|
|
496
|
-
.div(amm.pegMultiplier);
|
|
497
|
-
}
|
|
498
|
-
return [quoteAssetReserveLowerBound, quoteAssetReserveUpperBound];
|
|
499
|
-
}
|
|
500
|
-
exports.getQuoteAssetReservePredictionMarketBounds = getQuoteAssetReservePredictionMarketBounds;
|
|
501
|
-
function calculateSpreadReserves(amm, mmOraclePriceData, now, isPrediction = false, latestSlot) {
|
|
478
|
+
function calculateSpreadReserves(amm, mmOraclePriceData, now, latestSlot) {
|
|
502
479
|
function calculateSpreadReserve(spread, direction, amm) {
|
|
503
480
|
if (spread === 0) {
|
|
504
481
|
return {
|
|
@@ -519,10 +496,6 @@ function calculateSpreadReserves(amm, mmOraclePriceData, now, isPrediction = fal
|
|
|
519
496
|
else {
|
|
520
497
|
quoteAssetReserve = amm.quoteAssetReserve.sub(quoteAssetReserveDelta.abs());
|
|
521
498
|
}
|
|
522
|
-
if (isPrediction) {
|
|
523
|
-
const [qarLower, qarUpper] = getQuoteAssetReservePredictionMarketBounds(amm, direction);
|
|
524
|
-
quoteAssetReserve = (0, utils_1.clampBN)(quoteAssetReserve, qarLower, qarUpper);
|
|
525
|
-
}
|
|
526
499
|
const baseAssetReserve = amm.sqrtK.mul(amm.sqrtK).div(quoteAssetReserve);
|
|
527
500
|
return {
|
|
528
501
|
baseAssetReserve,
|
|
@@ -641,7 +614,7 @@ function calculateTerminalPrice(market) {
|
|
|
641
614
|
return terminalPrice;
|
|
642
615
|
}
|
|
643
616
|
exports.calculateTerminalPrice = calculateTerminalPrice;
|
|
644
|
-
function calculateMaxBaseAssetAmountToTrade(amm, limit_price, direction, mmOraclePriceData, now
|
|
617
|
+
function calculateMaxBaseAssetAmountToTrade(amm, limit_price, direction, mmOraclePriceData, now) {
|
|
645
618
|
const invariant = amm.sqrtK.mul(amm.sqrtK);
|
|
646
619
|
const newBaseAssetReserveSquared = invariant
|
|
647
620
|
.mul(numericConstants_1.PRICE_PRECISION)
|
|
@@ -649,7 +622,7 @@ function calculateMaxBaseAssetAmountToTrade(amm, limit_price, direction, mmOracl
|
|
|
649
622
|
.div(limit_price)
|
|
650
623
|
.div(numericConstants_1.PEG_PRECISION);
|
|
651
624
|
const newBaseAssetReserve = (0, utils_1.squareRootBN)(newBaseAssetReserveSquared);
|
|
652
|
-
const [shortSpreadReserves, longSpreadReserves] = calculateSpreadReserves(amm, mmOraclePriceData, now
|
|
625
|
+
const [shortSpreadReserves, longSpreadReserves] = calculateSpreadReserves(amm, mmOraclePriceData, now);
|
|
653
626
|
const baseAssetReserveBefore = (0, types_1.isVariant)(direction, 'long')
|
|
654
627
|
? longSpreadReserves.baseAssetReserve
|
|
655
628
|
: shortSpreadReserves.baseAssetReserve;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"funding.d.ts","sourceRoot":"","sources":["../../../src/math/funding.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"funding.d.ts","sourceRoot":"","sources":["../../../src/math/funding.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAWvC,OAAO,EAAE,iBAAiB,EAAa,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAwGtE;;;;;;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,CA4HtB;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,CAkBV;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,CAqBlB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,EAAE,CAWlE"}
|
package/lib/node/math/funding.js
CHANGED
|
@@ -75,7 +75,12 @@ function calculateAllEstimatedFundingRate(market, mmOraclePriceData, oraclePrice
|
|
|
75
75
|
// console.log('shrink orac:', liveOracleTwap.toString(), '->', oracleTwap.toString());
|
|
76
76
|
// }
|
|
77
77
|
const twapSpread = markTwap.sub(oracleTwap);
|
|
78
|
-
const
|
|
78
|
+
const offset = oracleTwap.abs().div(numericConstants_1.FUNDING_RATE_OFFSET_DENOMINATOR);
|
|
79
|
+
const twapSpreadWithOffset = twapSpread
|
|
80
|
+
.abs()
|
|
81
|
+
.lte(oracleTwap.abs().div(numericConstants_1.FUNDING_RATE_CLAMP_DENOMINATOR))
|
|
82
|
+
? offset
|
|
83
|
+
: twapSpread.add(offset);
|
|
79
84
|
const maxSpread = getMaxPriceDivergenceForFundingRate(market, oracleTwap);
|
|
80
85
|
const clampedSpreadWithOffset = (0, utils_1.clampBN)(twapSpreadWithOffset, maxSpread.mul(new anchor_1.BN(-1)), maxSpread);
|
|
81
86
|
const twapSpreadPct = clampedSpreadWithOffset
|
|
@@ -23,25 +23,24 @@ export declare function calculateWorstCasePerpLiabilityValue(perpPosition: PerpP
|
|
|
23
23
|
worstCaseBaseAssetAmount: BN;
|
|
24
24
|
worstCaseLiabilityValue: BN;
|
|
25
25
|
};
|
|
26
|
-
export declare function calculatePerpLiabilityValue(baseAssetAmount: BN, price: BN
|
|
26
|
+
export declare function calculatePerpLiabilityValue(baseAssetAmount: BN, price: BN): BN;
|
|
27
27
|
/**
|
|
28
28
|
* Calculates the margin required to open a trade, in quote amount. Only accounts for the trade size as a scalar value, does not account for the trade direction or current open positions and whether the trade would _actually_ be risk-increasing and use any extra collateral.
|
|
29
29
|
* @param targetMarketIndex
|
|
30
30
|
* @param baseSize
|
|
31
31
|
* @returns
|
|
32
32
|
*/
|
|
33
|
-
export declare function calculateMarginUSDCRequiredForTrade(driftClient: DriftClient, targetMarketIndex: number, baseSize: BN, userMaxMarginRatio?: number,
|
|
33
|
+
export declare function calculateMarginUSDCRequiredForTrade(driftClient: DriftClient, targetMarketIndex: number, baseSize: BN, userMaxMarginRatio?: number, entryPrice?: BN): BN;
|
|
34
34
|
/**
|
|
35
35
|
* 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
36
|
*
|
|
37
37
|
* Returns collateral required in the precision of the target collateral market.
|
|
38
38
|
*/
|
|
39
|
-
export declare function calculateCollateralDepositRequiredForTrade(driftClient: DriftClient, targetMarketIndex: number, baseSize: BN, collateralIndex: number, userMaxMarginRatio?: number,
|
|
39
|
+
export declare function calculateCollateralDepositRequiredForTrade(driftClient: DriftClient, targetMarketIndex: number, baseSize: BN, collateralIndex: number, userMaxMarginRatio?: number, estEntryPrice?: BN): BN;
|
|
40
40
|
export declare function calculateCollateralValueOfDeposit(driftClient: DriftClient, collateralIndex: number, baseSize: BN): BN;
|
|
41
41
|
export declare function calculateLiquidationPrice(freeCollateral: BN, freeCollateralDelta: BN, oraclePrice: BN): BN;
|
|
42
42
|
export declare function calculateUserMaxPerpOrderSize(driftClient: DriftClient, userAccountKey: PublicKey, userAccount: UserAccount, targetMarketIndex: number, tradeSide: PositionDirection): {
|
|
43
43
|
tradeSize: BN;
|
|
44
44
|
oppositeSideTradeSize: BN;
|
|
45
45
|
};
|
|
46
|
-
export declare function calcHighLeverageModeInitialMarginRatioFromSize(preSizeAdjMarginRatio: BN, sizeAdjMarginRatio: BN, defaultMarginRatio: BN): BN;
|
|
47
46
|
//# 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":";AAiBA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EACN,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C,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,wBAAgB,iCAAiC,CAChD,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,GAC9B,EAAE,CAoBJ;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,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,kBAAkB,CAAC,EAAE,MAAM,EAC3B,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAqBJ;AAED;;;;GAIG;AACH,wBAAgB,0CAA0C,CACzD,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,EAAE,EACZ,eAAe,EAAE,MAAM,EACvB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,aAAa,CAAC,EAAE,EAAE,GAChB,EAAE,CA+BJ;AAED,wBAAgB,iCAAiC,CAChD,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,EAAE,GACV,EAAE,CAuBJ;AAED,wBAAgB,yBAAyB,CACxC,cAAc,EAAE,EAAE,EAClB,mBAAmB,EAAE,EAAE,EACvB,WAAW,EAAE,EAAE,GACb,EAAE,CAYJ;AAED,wBAAgB,6BAA6B,CAC5C,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,SAAS,EACzB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,iBAAiB,GAC1B;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,qBAAqB,EAAE,EAAE,CAAA;CAAE,CAmB9C"}
|
package/lib/node/math/margin.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.calculateUserMaxPerpOrderSize = exports.calculateLiquidationPrice = exports.calculateCollateralValueOfDeposit = exports.calculateCollateralDepositRequiredForTrade = exports.calculateMarginUSDCRequiredForTrade = exports.calculatePerpLiabilityValue = exports.calculateWorstCasePerpLiabilityValue = exports.calculateWorstCaseBaseAssetAmount = exports.calculateBaseAssetValueWithOracle = exports.calculateOraclePriceForPerpMargin = exports.calculateSizeDiscountAssetWeight = exports.calculateSizePremiumLiabilityWeight = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Margin calculation helpers — TypeScript mirror of `programs/drift/src/math/margin.rs`.
|
|
6
|
+
* Computes initial/maintenance margin requirements, free collateral, and account health.
|
|
7
|
+
* Used by {@link User} for leverage queries and by keeper bots for liquidation eligibility checks.
|
|
8
|
+
*/
|
|
4
9
|
const utils_1 = require("./utils");
|
|
5
10
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
6
11
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
@@ -90,18 +95,17 @@ function calculateWorstCaseBaseAssetAmount(perpPosition, perpMarket, oraclePrice
|
|
|
90
95
|
}
|
|
91
96
|
exports.calculateWorstCaseBaseAssetAmount = calculateWorstCaseBaseAssetAmount;
|
|
92
97
|
function calculateWorstCasePerpLiabilityValue(perpPosition, perpMarket, oraclePrice, includeOpenOrders = true) {
|
|
93
|
-
const isPredictionMarket = (0, types_1.isVariant)(perpMarket.contractType, 'prediction');
|
|
94
98
|
// return early if no open orders required
|
|
95
99
|
if (!includeOpenOrders) {
|
|
96
100
|
return {
|
|
97
101
|
worstCaseBaseAssetAmount: perpPosition.baseAssetAmount,
|
|
98
|
-
worstCaseLiabilityValue: calculatePerpLiabilityValue(perpPosition.baseAssetAmount, oraclePrice
|
|
102
|
+
worstCaseLiabilityValue: calculatePerpLiabilityValue(perpPosition.baseAssetAmount, oraclePrice),
|
|
99
103
|
};
|
|
100
104
|
}
|
|
101
105
|
const allBids = perpPosition.baseAssetAmount.add(perpPosition.openBids);
|
|
102
106
|
const allAsks = perpPosition.baseAssetAmount.add(perpPosition.openAsks);
|
|
103
|
-
const allBidsLiabilityValue = calculatePerpLiabilityValue(allBids, oraclePrice
|
|
104
|
-
const allAsksLiabilityValue = calculatePerpLiabilityValue(allAsks, oraclePrice
|
|
107
|
+
const allBidsLiabilityValue = calculatePerpLiabilityValue(allBids, oraclePrice);
|
|
108
|
+
const allAsksLiabilityValue = calculatePerpLiabilityValue(allAsks, oraclePrice);
|
|
105
109
|
if (allAsksLiabilityValue.gte(allBidsLiabilityValue)) {
|
|
106
110
|
return {
|
|
107
111
|
worstCaseBaseAssetAmount: allAsks,
|
|
@@ -116,21 +120,8 @@ function calculateWorstCasePerpLiabilityValue(perpPosition, perpMarket, oraclePr
|
|
|
116
120
|
}
|
|
117
121
|
}
|
|
118
122
|
exports.calculateWorstCasePerpLiabilityValue = calculateWorstCasePerpLiabilityValue;
|
|
119
|
-
function calculatePerpLiabilityValue(baseAssetAmount, price
|
|
120
|
-
|
|
121
|
-
if (baseAssetAmount.gt(numericConstants_1.ZERO)) {
|
|
122
|
-
return baseAssetAmount.mul(price).div(numericConstants_1.BASE_PRECISION);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
return baseAssetAmount
|
|
126
|
-
.abs()
|
|
127
|
-
.mul(numericConstants_1.MAX_PREDICTION_PRICE.sub(price))
|
|
128
|
-
.div(numericConstants_1.BASE_PRECISION);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
return baseAssetAmount.abs().mul(price).div(numericConstants_1.BASE_PRECISION);
|
|
133
|
-
}
|
|
123
|
+
function calculatePerpLiabilityValue(baseAssetAmount, price) {
|
|
124
|
+
return baseAssetAmount.abs().mul(price).div(numericConstants_1.BASE_PRECISION);
|
|
134
125
|
}
|
|
135
126
|
exports.calculatePerpLiabilityValue = calculatePerpLiabilityValue;
|
|
136
127
|
/**
|
|
@@ -139,11 +130,11 @@ exports.calculatePerpLiabilityValue = calculatePerpLiabilityValue;
|
|
|
139
130
|
* @param baseSize
|
|
140
131
|
* @returns
|
|
141
132
|
*/
|
|
142
|
-
function calculateMarginUSDCRequiredForTrade(driftClient, targetMarketIndex, baseSize, userMaxMarginRatio,
|
|
133
|
+
function calculateMarginUSDCRequiredForTrade(driftClient, targetMarketIndex, baseSize, userMaxMarginRatio, entryPrice) {
|
|
143
134
|
const targetMarket = driftClient.getPerpMarketAccount(targetMarketIndex);
|
|
144
135
|
const price = entryPrice !== null && entryPrice !== void 0 ? entryPrice : driftClient.getOracleDataForPerpMarket(targetMarket.marketIndex).price;
|
|
145
|
-
const perpLiabilityValue = calculatePerpLiabilityValue(baseSize, price
|
|
146
|
-
const marginRequired = new anchor_1.BN((0, market_1.calculateMarketMarginRatio)(targetMarket, baseSize.abs(), 'Initial', userMaxMarginRatio
|
|
136
|
+
const perpLiabilityValue = calculatePerpLiabilityValue(baseSize, price);
|
|
137
|
+
const marginRequired = new anchor_1.BN((0, market_1.calculateMarketMarginRatio)(targetMarket, baseSize.abs(), 'Initial', userMaxMarginRatio))
|
|
147
138
|
.mul(perpLiabilityValue)
|
|
148
139
|
.div(numericConstants_1.MARGIN_PRECISION);
|
|
149
140
|
return marginRequired;
|
|
@@ -154,8 +145,8 @@ exports.calculateMarginUSDCRequiredForTrade = calculateMarginUSDCRequiredForTrad
|
|
|
154
145
|
*
|
|
155
146
|
* Returns collateral required in the precision of the target collateral market.
|
|
156
147
|
*/
|
|
157
|
-
function calculateCollateralDepositRequiredForTrade(driftClient, targetMarketIndex, baseSize, collateralIndex, userMaxMarginRatio,
|
|
158
|
-
const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(driftClient, targetMarketIndex, baseSize, userMaxMarginRatio,
|
|
148
|
+
function calculateCollateralDepositRequiredForTrade(driftClient, targetMarketIndex, baseSize, collateralIndex, userMaxMarginRatio, estEntryPrice) {
|
|
149
|
+
const marginRequiredUsdc = calculateMarginUSDCRequiredForTrade(driftClient, targetMarketIndex, baseSize, userMaxMarginRatio, estEntryPrice);
|
|
159
150
|
const collateralMarket = driftClient.getSpotMarketAccount(collateralIndex);
|
|
160
151
|
const collateralOracleData = driftClient.getOracleDataForSpotMarket(collateralIndex);
|
|
161
152
|
const scaledAssetWeight = (0, spotBalance_1.calculateScaledInitialAssetWeight)(collateralMarket, collateralOracleData.price);
|
|
@@ -212,25 +203,3 @@ function calculateUserMaxPerpOrderSize(driftClient, userAccountKey, userAccount,
|
|
|
212
203
|
return user.getMaxTradeSizeUSDCForPerp(targetMarketIndex, tradeSide);
|
|
213
204
|
}
|
|
214
205
|
exports.calculateUserMaxPerpOrderSize = calculateUserMaxPerpOrderSize;
|
|
215
|
-
function calcHighLeverageModeInitialMarginRatioFromSize(preSizeAdjMarginRatio, sizeAdjMarginRatio, defaultMarginRatio) {
|
|
216
|
-
let result;
|
|
217
|
-
if (sizeAdjMarginRatio.lt(preSizeAdjMarginRatio)) {
|
|
218
|
-
const sizePctDiscountFactor = numericConstants_1.PERCENTAGE_PRECISION.sub(preSizeAdjMarginRatio
|
|
219
|
-
.sub(sizeAdjMarginRatio)
|
|
220
|
-
.mul(numericConstants_1.PERCENTAGE_PRECISION)
|
|
221
|
-
.div(preSizeAdjMarginRatio.div(new anchor_1.BN(5))));
|
|
222
|
-
const hlmMarginDelta = anchor_1.BN.max(preSizeAdjMarginRatio.sub(defaultMarginRatio), new anchor_1.BN(1));
|
|
223
|
-
const hlmMarginDeltaProportion = hlmMarginDelta
|
|
224
|
-
.mul(sizePctDiscountFactor)
|
|
225
|
-
.div(numericConstants_1.PERCENTAGE_PRECISION);
|
|
226
|
-
result = hlmMarginDeltaProportion.add(defaultMarginRatio);
|
|
227
|
-
}
|
|
228
|
-
else if (sizeAdjMarginRatio.eq(preSizeAdjMarginRatio)) {
|
|
229
|
-
result = defaultMarginRatio;
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
result = sizeAdjMarginRatio;
|
|
233
|
-
}
|
|
234
|
-
return result;
|
|
235
|
-
}
|
|
236
|
-
exports.calcHighLeverageModeInitialMarginRatioFromSize = calcHighLeverageModeInitialMarginRatioFromSize;
|
|
@@ -27,7 +27,7 @@ export declare function calculateAskPrice(market: PerpMarketAccount, mmOraclePri
|
|
|
27
27
|
export declare function calculateNewMarketAfterTrade(baseAssetAmount: BN, direction: PositionDirection, market: PerpMarketAccount): PerpMarketAccount;
|
|
28
28
|
export declare function calculateOracleReserveSpread(market: PerpMarketAccount, mmOraclePriceData: MMOraclePriceData): BN;
|
|
29
29
|
export declare function calculateOracleSpread(price: BN, oraclePriceData: OraclePriceData): BN;
|
|
30
|
-
export declare function calculateMarketMarginRatio(market: PerpMarketAccount, size: BN, marginCategory: MarginCategory, customMarginRatio?: number
|
|
30
|
+
export declare function calculateMarketMarginRatio(market: PerpMarketAccount, size: BN, marginCategory: MarginCategory, customMarginRatio?: number): number;
|
|
31
31
|
export declare function calculateUnrealizedAssetWeight(market: PerpMarketAccount, quoteSpotMarket: SpotMarketAccount, unrealizedPnl: BN, marginCategory: MarginCategory, oraclePriceData: Pick<OraclePriceData, 'price'>): BN;
|
|
32
32
|
export declare function calculateMarketAvailablePNL(perpMarket: PerpMarketAccount, spotMarket: SpotMarketAccount): BN;
|
|
33
33
|
export declare function calculateMarketMaxAvailableInsurance(perpMarket: PerpMarketAccount, spotMarket: SpotMarketAccount): BN;
|
|
@@ -37,7 +37,7 @@ export declare function calculateAvailablePerpLiquidity(market: PerpMarketAccoun
|
|
|
37
37
|
bids: BN;
|
|
38
38
|
asks: BN;
|
|
39
39
|
};
|
|
40
|
-
export declare function calculatePerpMarketBaseLiquidatorFee(market: PerpMarketAccount
|
|
40
|
+
export declare function calculatePerpMarketBaseLiquidatorFee(market: PerpMarketAccount): number;
|
|
41
41
|
/**
|
|
42
42
|
* Calculates trigger price for a perp market based on oracle price and current time
|
|
43
43
|
* 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,mBAAmB,CAAC;AACvC,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EAIjB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/math/market.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EAIjB,MAAM,UAAU,CAAC;AAalB,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAYtE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,GAClC,EAAE,CAOJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAUJ;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,CAAC,EAAE,EAAE,GACb,EAAE,CAUJ;AAED,wBAAgB,4BAA4B,CAC3C,eAAe,EAAE,EAAE,EACnB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,iBAAiB,GACvB,iBAAiB,CAgBnB;AAED,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,GAClC,EAAE,CAGJ;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,CAcJ;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,wBAAgB,+BAA+B,CAC9C,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,GACV;IAAE,IAAI,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,EAAE,CAAA;CAAE,CAoCxB;AAED,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,iBAAiB,GACvB,MAAM,CAER;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
|
@@ -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,
|
|
29
|
+
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, types_1.PositionDirection.SHORT, mmOraclePriceData, latestSlot);
|
|
30
30
|
return (0, amm_1.calculatePrice)(baseAssetReserve, quoteAssetReserve, newPeg);
|
|
31
31
|
}
|
|
32
32
|
exports.calculateBidPrice = calculateBidPrice;
|
|
@@ -37,7 +37,7 @@ 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,
|
|
40
|
+
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, types_1.PositionDirection.LONG, mmOraclePriceData, latestSlot);
|
|
41
41
|
return (0, amm_1.calculatePrice)(baseAssetReserve, quoteAssetReserve, newPeg);
|
|
42
42
|
}
|
|
43
43
|
exports.calculateAskPrice = calculateAskPrice;
|
|
@@ -60,48 +60,23 @@ function calculateOracleSpread(price, oraclePriceData) {
|
|
|
60
60
|
return price.sub(oraclePriceData.price);
|
|
61
61
|
}
|
|
62
62
|
exports.calculateOracleSpread = calculateOracleSpread;
|
|
63
|
-
function calculateMarketMarginRatio(market, size, marginCategory, customMarginRatio = 0
|
|
63
|
+
function calculateMarketMarginRatio(market, size, marginCategory, customMarginRatio = 0) {
|
|
64
64
|
if (market.status === 'Settlement')
|
|
65
65
|
return 0;
|
|
66
|
-
const isHighLeverageUser = userHighLeverageMode &&
|
|
67
|
-
market.highLeverageMarginRatioInitial > 0 &&
|
|
68
|
-
market.highLeverageMarginRatioMaintenance > 0;
|
|
69
|
-
const marginRatioInitial = isHighLeverageUser
|
|
70
|
-
? market.highLeverageMarginRatioInitial
|
|
71
|
-
: market.marginRatioInitial;
|
|
72
|
-
const marginRatioMaintenance = isHighLeverageUser
|
|
73
|
-
? market.highLeverageMarginRatioMaintenance
|
|
74
|
-
: market.marginRatioMaintenance;
|
|
75
66
|
let defaultMarginRatio;
|
|
76
67
|
switch (marginCategory) {
|
|
77
68
|
case 'Initial':
|
|
78
|
-
defaultMarginRatio = marginRatioInitial;
|
|
69
|
+
defaultMarginRatio = market.marginRatioInitial;
|
|
79
70
|
break;
|
|
80
71
|
case 'Maintenance':
|
|
81
|
-
defaultMarginRatio = marginRatioMaintenance;
|
|
72
|
+
defaultMarginRatio = market.marginRatioMaintenance;
|
|
82
73
|
break;
|
|
83
74
|
default:
|
|
84
75
|
throw new Error('Invalid margin category');
|
|
85
76
|
}
|
|
86
77
|
let marginRatio;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
let preSizeAdjMarginRatio;
|
|
90
|
-
switch (marginCategory) {
|
|
91
|
-
case 'Initial':
|
|
92
|
-
preSizeAdjMarginRatio = market.marginRatioInitial;
|
|
93
|
-
break;
|
|
94
|
-
default:
|
|
95
|
-
preSizeAdjMarginRatio = marginRatioMaintenance;
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
const sizeAdjMarginRatio = (0, margin_1.calculateSizePremiumLiabilityWeight)(size, new anchor_1.BN(market.imfFactor), new anchor_1.BN(preSizeAdjMarginRatio), numericConstants_1.MARGIN_PRECISION, false).toNumber();
|
|
99
|
-
marginRatio = (0, margin_1.calcHighLeverageModeInitialMarginRatioFromSize)(new anchor_1.BN(preSizeAdjMarginRatio), new anchor_1.BN(sizeAdjMarginRatio), new anchor_1.BN(defaultMarginRatio)).toNumber();
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
const sizeAdjMarginRatio = (0, margin_1.calculateSizePremiumLiabilityWeight)(size, new anchor_1.BN(market.imfFactor), new anchor_1.BN(defaultMarginRatio), numericConstants_1.MARGIN_PRECISION, true).toNumber();
|
|
103
|
-
marginRatio = Math.max(defaultMarginRatio, sizeAdjMarginRatio);
|
|
104
|
-
}
|
|
78
|
+
const sizeAdjMarginRatio = (0, margin_1.calculateSizePremiumLiabilityWeight)(size, new anchor_1.BN(market.imfFactor), new anchor_1.BN(defaultMarginRatio), numericConstants_1.MARGIN_PRECISION, true).toNumber();
|
|
79
|
+
marginRatio = Math.max(defaultMarginRatio, sizeAdjMarginRatio);
|
|
105
80
|
if (marginCategory === 'Initial') {
|
|
106
81
|
marginRatio = Math.max(marginRatio, customMarginRatio);
|
|
107
82
|
}
|
|
@@ -181,15 +156,8 @@ function calculateAvailablePerpLiquidity(market, mmOraclePriceData, dlob, slot)
|
|
|
181
156
|
};
|
|
182
157
|
}
|
|
183
158
|
exports.calculateAvailablePerpLiquidity = calculateAvailablePerpLiquidity;
|
|
184
|
-
function calculatePerpMarketBaseLiquidatorFee(market
|
|
185
|
-
|
|
186
|
-
const marginRatio = market.highLeverageMarginRatioMaintenance * 100;
|
|
187
|
-
// min(liquidator_fee, .8 * high_leverage_margin_ratio_maintenance)
|
|
188
|
-
return Math.min(market.liquidatorFee, marginRatio - Math.floor(marginRatio / 5));
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
return market.liquidatorFee;
|
|
192
|
-
}
|
|
159
|
+
function calculatePerpMarketBaseLiquidatorFee(market) {
|
|
160
|
+
return market.liquidatorFee;
|
|
193
161
|
}
|
|
194
162
|
exports.calculatePerpMarketBaseLiquidatorFee = calculatePerpMarketBaseLiquidatorFee;
|
|
195
163
|
/**
|
|
@@ -233,7 +201,7 @@ function getLastFundingBasis(market, oraclePrice, now) {
|
|
|
233
201
|
.mul(numericConstants_1.PRICE_PRECISION)
|
|
234
202
|
.div(market.amm.lastFundingOracleTwap)
|
|
235
203
|
.muln(24);
|
|
236
|
-
const lastFundingRatePreAdj = lastFundingRate.sub(numericConstants_1.FUNDING_RATE_PRECISION.div(new anchor_1.BN(
|
|
204
|
+
const lastFundingRatePreAdj = lastFundingRate.sub(numericConstants_1.FUNDING_RATE_PRECISION.div(new anchor_1.BN(3333)) // FUNDING_RATE_OFFSET_PERCENTAGE
|
|
237
205
|
);
|
|
238
206
|
const timeLeftUntilFundingUpdate = anchor_1.BN.min(anchor_1.BN.max(now.sub(market.amm.lastFundingRateTs), numericConstants_1.ZERO), market.amm.fundingPeriod);
|
|
239
207
|
const lastFundingBasis = oraclePrice
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracles.d.ts","sourceRoot":"","sources":["../../../src/math/oracles.ts"],"names":[],"mappings":";;;AAAA,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,iBAAiB,EAGjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWnD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,CAUV;AAED,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,iBAAiB,GACvB,EAAE,CAcJ;AAED,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,EAAE,EACR,qBAAqB,KAAO,GAC1B,cAAc,
|
|
1
|
+
{"version":3,"file":"oracles.d.ts","sourceRoot":"","sources":["../../../src/math/oracles.ts"],"names":[],"mappings":";;;AAAA,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,iBAAiB,EAGjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWnD,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEvC,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,CAUV;AAED,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,iBAAiB,GACvB,EAAE,CAcJ;AAED,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,EAAE,EACR,qBAAqB,KAAO,GAC1B,cAAc,CAwEhB;AAED,wBAAgB,aAAa,CAC5B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM,GACV,OAAO,CAmCT;AAED,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,GAChC,OAAO,CAWT;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,oBAAoB,EACpC,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,EACP,MAAM,EAAE,EAAE,GACR,EAAE,CA6BJ;AAED,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,GACL,EAAE,CA+BJ;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,EAAE,EAChB,GAAG,EAAE,EAAE,GACL,EAAE,CAwBJ;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,MAAM,CAe5D;AAED,wBAAgB,+BAA+B,CAC9C,iBAAiB,EAAE,YAAY,EAC/B,kBAAkB,EAAE,YAAY,GAC9B;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,WAAW,EAAE,EAAE,CAAA;CAAE,CA+CpC"}
|