@velocity-exchange/sdk 0.2.5 → 0.4.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/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
package/lib/browser/user.d.ts
CHANGED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
* - Health factor and liquidation threshold checks.
|
|
10
10
|
* - Subscribes to and caches the latest `User` account state from chain.
|
|
11
11
|
*
|
|
12
|
-
* To send instructions (deposit, place order, etc.) use
|
|
13
|
-
* For referral/volume stats see
|
|
12
|
+
* To send instructions (deposit, place order, etc.) use `VelocityClient`.
|
|
13
|
+
* For referral/volume stats see `UserStats` (userStats.ts).
|
|
14
14
|
*/
|
|
15
15
|
import { PublicKey } from '@solana/web3.js';
|
|
16
16
|
import { EventEmitter } from 'events';
|
|
17
17
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
18
18
|
import { VelocityClient } from './velocityClient';
|
|
19
|
-
import { HealthComponent, HealthComponents, MarginCategory, Order, PerpMarketAccount, PerpPosition, SpotPosition, UserAccount, UserStatus, UserStatsAccount, AccountLiquidatableStatus } from './types';
|
|
19
|
+
import { HealthComponent, HealthComponents, MarginCategory, Order, OrderParams, PerpMarketAccount, PerpPosition, SpotPosition, UserAccount, UserStatus, UserStatsAccount, AccountLiquidatableStatus } from './types';
|
|
20
20
|
import { DataAndSlot, UserAccountEvents, UserAccountSubscriber } from './accounts/types';
|
|
21
21
|
import { BN } from './isomorphic/anchor';
|
|
22
22
|
import { MarketType, PositionDirection, SpotMarketAccount } from './types';
|
|
@@ -31,24 +31,29 @@ export declare class User {
|
|
|
31
31
|
accountSubscriber: UserAccountSubscriber;
|
|
32
32
|
_isSubscribed: boolean;
|
|
33
33
|
eventEmitter: StrictEventEmitter<EventEmitter, UserAccountEvents>;
|
|
34
|
+
/** True only when both `subscribe()` has completed and the underlying `accountSubscriber` itself reports subscribed. */
|
|
34
35
|
get isSubscribed(): boolean;
|
|
35
36
|
set isSubscribed(val: boolean);
|
|
37
|
+
/** Constructs a `User` for the account at `config.userAccountPublicKey`, wiring up the account subscriber selected by `config.accountSubscription` (`'websocket'`/`'polling'`/`'grpc'`/`'custom'`). Does not fetch or subscribe — call `subscribe()` next. */
|
|
36
38
|
constructor(config: UserConfig);
|
|
37
39
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
+
* Subscribes to this `User` account (websocket/polling/gRPC/custom per
|
|
41
|
+
* `UserConfig.accountSubscription`) and awaits the initial account fetch.
|
|
42
|
+
* Must resolve before any `get*`/margin/PnL accessor is called — those
|
|
43
|
+
* throw `NotSubscribedError` until this has completed.
|
|
44
|
+
* @param userAccount Optional pre-fetched account to seed the subscriber with, skipping the initial RPC fetch.
|
|
45
|
+
* @returns True once the underlying subscriber reports subscribed.
|
|
40
46
|
*/
|
|
41
47
|
subscribe(userAccount?: UserAccount): Promise<boolean>;
|
|
42
|
-
/**
|
|
43
|
-
* Forces the accountSubscriber to fetch account updates from rpc
|
|
44
|
-
*/
|
|
48
|
+
/** Forces the account subscriber to re-fetch the `User` account from RPC (bypassing any push/poll cadence). */
|
|
45
49
|
fetchAccounts(): Promise<void>;
|
|
50
|
+
/** Removes all event listeners and tears down the account subscription. */
|
|
46
51
|
unsubscribe(): Promise<void>;
|
|
47
52
|
/**
|
|
48
53
|
* Returns the cached user account.
|
|
49
54
|
*
|
|
50
55
|
* - **Throws** `NotSubscribedError` if the subscriber has not been subscribed
|
|
51
|
-
* yet — reading the account before
|
|
56
|
+
* yet — reading the account before `subscribe()` resolves is a
|
|
52
57
|
* programming error, not a missing-account condition.
|
|
53
58
|
* - Returns `undefined` when subscribed but no account was found on chain.
|
|
54
59
|
* Because `subscribe()` awaits the initial fetch, an `undefined` here means
|
|
@@ -57,24 +62,46 @@ export declare class User {
|
|
|
57
62
|
*/
|
|
58
63
|
getUserAccount(): UserAccount | undefined;
|
|
59
64
|
/**
|
|
60
|
-
* Like
|
|
65
|
+
* Like `getUserAccount` but throws instead of returning `undefined`
|
|
61
66
|
* when the account was not found. Use at call sites that structurally
|
|
62
67
|
* require the account to exist. (Still propagates `NotSubscribedError` when
|
|
63
68
|
* called before subscribing.)
|
|
64
69
|
*
|
|
65
|
-
* Delegates to
|
|
70
|
+
* Delegates to `getUserAccount` (rather than the subscriber directly)
|
|
66
71
|
* so callers that override `getUserAccount` see the override here too.
|
|
72
|
+
* @returns The current `UserAccount`.
|
|
67
73
|
*/
|
|
68
74
|
getUserAccountOrThrow(): UserAccount;
|
|
75
|
+
/**
|
|
76
|
+
* Bypasses the cached subscriber state and force-fetches the `User` account
|
|
77
|
+
* directly from the RPC (via `fetchAccounts`), then returns the freshly
|
|
78
|
+
* cached value. Useful right after sending a transaction, when the
|
|
79
|
+
* websocket/polling subscriber may not yet have observed the update.
|
|
80
|
+
* @returns The freshly fetched `UserAccount`, or `undefined` if the account does not exist on chain.
|
|
81
|
+
*/
|
|
69
82
|
forceGetUserAccount(): Promise<UserAccount | undefined>;
|
|
83
|
+
/**
|
|
84
|
+
* Returns the cached user account together with the slot at which it was
|
|
85
|
+
* last observed. Same `undefined`/`NotSubscribedError` contract as `getUserAccount`.
|
|
86
|
+
*/
|
|
70
87
|
getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined;
|
|
71
88
|
/**
|
|
72
|
-
* Like
|
|
89
|
+
* Like `getUserAccountAndSlot` but throws instead of returning
|
|
73
90
|
* `undefined` when the account was not found. Use at call sites that
|
|
74
91
|
* structurally require the account to exist. (Still propagates
|
|
75
92
|
* `NotSubscribedError` when called before subscribing.)
|
|
76
93
|
*/
|
|
77
94
|
getUserAccountAndSlotOrThrow(): DataAndSlot<UserAccount>;
|
|
95
|
+
/**
|
|
96
|
+
* Finds the perp position for `marketIndex` on an explicit `userAccount`
|
|
97
|
+
* snapshot rather than the cached account. Only matches "active" positions
|
|
98
|
+
* (see `getActivePerpPositionsForUserAccount`) — a market the user has never
|
|
99
|
+
* touched (or has fully closed and settled) returns `undefined` even though
|
|
100
|
+
* the on-chain array always has a fixed-size slot for every market.
|
|
101
|
+
* @param userAccount Account snapshot to search (does not have to be the subscribed account).
|
|
102
|
+
* @param marketIndex Perp market index to look up.
|
|
103
|
+
* @returns The matching `PerpPosition`, or `undefined` if the user has no active position in that market.
|
|
104
|
+
*/
|
|
78
105
|
getPerpPositionForUserAccount(userAccount: UserAccount, marketIndex: number): PerpPosition | undefined;
|
|
79
106
|
/**
|
|
80
107
|
* Gets the user's current position for a given perp market. If the user has no position returns undefined
|
|
@@ -82,9 +109,31 @@ export declare class User {
|
|
|
82
109
|
* @returns userPerpPosition
|
|
83
110
|
*/
|
|
84
111
|
getPerpPosition(marketIndex: number): PerpPosition | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Like `getPerpPosition`, but returns a zeroed-out placeholder position
|
|
114
|
+
* (see `getEmptyPosition`) instead of `undefined` when the user has no
|
|
115
|
+
* active position in `marketIndex`. Convenient for math helpers that need a
|
|
116
|
+
* `PerpPosition` shape unconditionally (e.g. buying-power/leverage calcs).
|
|
117
|
+
*/
|
|
85
118
|
getPerpPositionOrEmpty(marketIndex: number): PerpPosition;
|
|
119
|
+
/**
|
|
120
|
+
* Like `getPerpPosition`, but throws instead of returning `undefined` when
|
|
121
|
+
* the user has no active position in `marketIndex`.
|
|
122
|
+
*/
|
|
86
123
|
getPerpPositionOrThrow(marketIndex: number): PerpPosition;
|
|
124
|
+
/**
|
|
125
|
+
* Like `getPerpPosition`, but also returns the slot at which the underlying
|
|
126
|
+
* `UserAccount` was observed.
|
|
127
|
+
*/
|
|
87
128
|
getPerpPositionAndSlot(marketIndex: number): DataAndSlot<PerpPosition | undefined>;
|
|
129
|
+
/**
|
|
130
|
+
* Finds the spot position for `marketIndex` on an explicit `userAccount`
|
|
131
|
+
* snapshot. Unlike `getPerpPositionForUserAccount`, this does not filter to
|
|
132
|
+
* "active" positions first — it returns whatever fixed-size slot entry
|
|
133
|
+
* exists for that market index, even if the position is empty/available.
|
|
134
|
+
* @param userAccount Account snapshot to search (does not have to be the subscribed account).
|
|
135
|
+
* @param marketIndex Spot market index to look up.
|
|
136
|
+
*/
|
|
88
137
|
getSpotPositionForUserAccount(userAccount: UserAccount, marketIndex: number): SpotPosition | undefined;
|
|
89
138
|
/**
|
|
90
139
|
* Gets the user's current position for a given spot market. If the user has no position returns undefined
|
|
@@ -92,58 +141,125 @@ export declare class User {
|
|
|
92
141
|
* @returns userSpotPosition
|
|
93
142
|
*/
|
|
94
143
|
getSpotPosition(marketIndex: number): SpotPosition | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Like `getSpotPosition`, but also returns the slot at which the underlying
|
|
146
|
+
* `UserAccount` was observed.
|
|
147
|
+
*/
|
|
95
148
|
getSpotPositionAndSlot(marketIndex: number): DataAndSlot<SpotPosition | undefined>;
|
|
149
|
+
/** Returns a zeroed-out (no deposit/borrow) placeholder `SpotPosition` for `marketIndex`. */
|
|
96
150
|
getEmptySpotPosition(marketIndex: number): SpotPosition;
|
|
97
151
|
/**
|
|
98
152
|
* Returns the token amount for a given market. The spot market precision is based on the token mint decimals.
|
|
99
153
|
* Positive if it is a deposit, negative if it is a borrow.
|
|
100
154
|
*
|
|
101
155
|
* @param marketIndex
|
|
156
|
+
* @returns Signed token amount, in the spot market's own token decimals (not QUOTE_PRECISION). `ZERO` if the user has no position in the market.
|
|
102
157
|
*/
|
|
103
158
|
getTokenAmount(marketIndex: number): BN;
|
|
159
|
+
/** Returns a zeroed-out placeholder `PerpPosition` for `marketIndex` (no size, no orders, cross margin). */
|
|
104
160
|
getEmptyPosition(marketIndex: number): PerpPosition;
|
|
161
|
+
/** Returns true if `position` has no size and no open orders (a market slot that can be treated as unused). */
|
|
105
162
|
isPositionEmpty(position: PerpPosition): boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Returns the isolated-margin quote deposit backing a given perp position,
|
|
165
|
+
* i.e. `PerpPosition.isolatedPositionScaledBalance` converted to a token
|
|
166
|
+
* amount. This is the collateral segregated to that single isolated
|
|
167
|
+
* position, separate from the user's cross-margin free collateral.
|
|
168
|
+
* @param perpMarketIndex
|
|
169
|
+
* @returns Quote token amount (the quote spot market's own decimals). `ZERO` if the user has no position or no isolated deposit in the market.
|
|
170
|
+
*/
|
|
106
171
|
getIsolatePerpPositionTokenAmount(perpMarketIndex: number): BN;
|
|
107
172
|
/**
|
|
108
173
|
* Returns the total USD value of deposits across all isolated perp positions.
|
|
174
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
109
175
|
*/
|
|
110
176
|
getTotalIsolatedPositionDeposits(): BN;
|
|
177
|
+
/** Returns a shallow copy of `position`. Mutating the clone does not affect the cached account. */
|
|
111
178
|
getClonedPosition(position: PerpPosition): PerpPosition;
|
|
179
|
+
/** Finds an order by its program-assigned `orderId` on an explicit `userAccount` snapshot. */
|
|
112
180
|
getOrderForUserAccount(userAccount: UserAccount, orderId: number): Order | undefined;
|
|
113
181
|
/**
|
|
182
|
+
* Finds an order in the cached `UserAccount` by its program-assigned `orderId`.
|
|
114
183
|
* @param orderId
|
|
115
|
-
* @returns Order
|
|
184
|
+
* @returns The matching `Order`, or `undefined` if no order with that id exists.
|
|
116
185
|
*/
|
|
117
186
|
getOrder(orderId: number): Order | undefined;
|
|
187
|
+
/** Like `getOrder`, but also returns the slot at which the underlying `UserAccount` was observed. */
|
|
118
188
|
getOrderAndSlot(orderId: number): DataAndSlot<Order | undefined>;
|
|
189
|
+
/**
|
|
190
|
+
* Finds an order by its caller-assigned `userOrderId` (a client-chosen tag,
|
|
191
|
+
* distinct from the program-assigned `orderId`) on an explicit `userAccount`
|
|
192
|
+
* snapshot.
|
|
193
|
+
*/
|
|
119
194
|
getOrderByUserIdForUserAccount(userAccount: UserAccount, userOrderId: number): Order | undefined;
|
|
120
195
|
/**
|
|
196
|
+
* Finds an order in the cached `UserAccount` by its caller-assigned
|
|
197
|
+
* `userOrderId` (a client-chosen tag, distinct from the program-assigned `orderId`).
|
|
121
198
|
* @param userOrderId
|
|
122
|
-
* @returns Order
|
|
199
|
+
* @returns The matching `Order`, or `undefined` if no order with that tag exists.
|
|
123
200
|
*/
|
|
124
201
|
getOrderByUserOrderId(userOrderId: number): Order | undefined;
|
|
202
|
+
/** Like `getOrderByUserOrderId`, but also returns the slot at which the underlying `UserAccount` was observed. */
|
|
125
203
|
getOrderByUserOrderIdAndSlot(userOrderId: number): DataAndSlot<Order | undefined>;
|
|
204
|
+
/**
|
|
205
|
+
* Filters an explicit `userAccount` snapshot's orders down to those with
|
|
206
|
+
* `OrderStatus.Open`.
|
|
207
|
+
* @returns `undefined` if `userAccount` is `undefined` (i.e. no account loaded), otherwise the array of open orders (possibly empty).
|
|
208
|
+
*/
|
|
126
209
|
getOpenOrdersForUserAccount(userAccount?: UserAccount): Order[] | undefined;
|
|
210
|
+
/** Returns all of the user's orders with `OrderStatus.Open`. Empty array (not `undefined`) if there are none or no account is loaded. */
|
|
127
211
|
getOpenOrders(): Order[];
|
|
212
|
+
/** Like `getOpenOrders`, but also returns the slot at which the underlying `UserAccount` was observed. */
|
|
128
213
|
getOpenOrdersAndSlot(): DataAndSlot<Order[]>;
|
|
214
|
+
/** Returns this `User`'s account address (does not require the account to be subscribed or to exist on chain). */
|
|
129
215
|
getUserAccountPublicKey(): PublicKey;
|
|
216
|
+
/** Checks directly via RPC (bypassing the subscriber cache) whether the `User` account exists on chain. */
|
|
130
217
|
exists(): Promise<boolean>;
|
|
131
218
|
/**
|
|
132
|
-
*
|
|
133
|
-
* @
|
|
134
|
-
* @returns
|
|
219
|
+
* Returns the position's total resting open-order bid/ask size in a perp market.
|
|
220
|
+
* @param marketIndex
|
|
221
|
+
* @returns Tuple of `[openBids, openAsks]`, both `BASE_PRECISION` (1e9). Throws (via `getPerpPositionOrThrow`) if the user has no active position in `marketIndex`.
|
|
135
222
|
*/
|
|
136
223
|
getPerpBidAsks(marketIndex: number): [BN, BN];
|
|
137
224
|
/**
|
|
138
225
|
* calculates Buying Power = free collateral / initial margin ratio
|
|
139
|
-
*
|
|
226
|
+
*
|
|
227
|
+
* For `positionType: 'isolated'`, the buying power is capped by the
|
|
228
|
+
* lesser of (a) the user's cross free collateral and (b) the free quote
|
|
229
|
+
* asset value in the perp's quote spot market — mirroring that an isolated
|
|
230
|
+
* position can only draw down as much quote collateral as is actually
|
|
231
|
+
* available to isolate into it.
|
|
232
|
+
* @param marketIndex Perp market to size buying power for.
|
|
233
|
+
* @param collateralBuffer Amount (QUOTE_PRECISION) subtracted from free collateral before sizing, e.g. to reserve for fees. Defaults to zero.
|
|
234
|
+
* @param maxMarginRatio Optional override for the max margin ratio component (see `resolveMaxMarginRatio`); defaults to the position's/user's configured ratio.
|
|
235
|
+
* @param positionType Whether to size for a cross or isolated-margin position. Defaults to `'cross'`.
|
|
236
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
140
237
|
*/
|
|
141
238
|
getPerpBuyingPower(marketIndex: number, collateralBuffer?: BN, maxMarginRatio?: number | undefined, positionType?: 'isolated' | 'cross'): BN;
|
|
142
239
|
private resolveMaxMarginRatio;
|
|
240
|
+
/**
|
|
241
|
+
* Converts a free-collateral amount directly into buying power for a perp
|
|
242
|
+
* market, given the (hypothetical) resulting base position size — used
|
|
243
|
+
* internally so the margin ratio (which can vary with position size via the
|
|
244
|
+
* IMF factor) reflects the post-trade size rather than the current size.
|
|
245
|
+
* @param marketIndex
|
|
246
|
+
* @param freeCollateral QUOTE_PRECISION (1e6).
|
|
247
|
+
* @param baseAssetAmount Base size, BASE_PRECISION (1e9), used only to select the applicable margin ratio.
|
|
248
|
+
* @param perpMarketMaxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
|
|
249
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
250
|
+
*/
|
|
143
251
|
getPerpBuyingPowerFromFreeCollateralAndBaseAssetAmount(marketIndex: number, freeCollateral: BN, baseAssetAmount: BN, perpMarketMaxMarginRatio?: number | undefined): BN;
|
|
144
252
|
/**
|
|
145
253
|
* calculates Free Collateral = Total collateral - margin requirement
|
|
146
|
-
*
|
|
254
|
+
*
|
|
255
|
+
* When `perpMarketIndex` is provided, returns the free collateral scoped to
|
|
256
|
+
* that market's isolated margin bucket (the isolated quote deposit plus its
|
|
257
|
+
* unrealized PnL, minus its own margin requirement) rather than the user's
|
|
258
|
+
* cross-margin free collateral. If the user has no isolated position open in
|
|
259
|
+
* that market, returns `ZERO` rather than throwing.
|
|
260
|
+
* @param marginCategory `'Initial'` or `'Maintenance'`. Defaults to `'Initial'`; `'Initial'` also enables strict (TWAP-bounded) oracle pricing.
|
|
261
|
+
* @param perpMarketIndex Optional isolated perp market to scope the calculation to; omit for cross margin.
|
|
262
|
+
* @returns Precision QUOTE_PRECISION (1e6). Can be negative (deficit).
|
|
147
263
|
*/
|
|
148
264
|
getFreeCollateral(marginCategory?: MarginCategory, perpMarketIndex?: number): BN;
|
|
149
265
|
/**
|
|
@@ -153,134 +269,330 @@ export declare class User {
|
|
|
153
269
|
/**
|
|
154
270
|
* Calculates the margin requirement based on the specified parameters.
|
|
155
271
|
*
|
|
272
|
+
* When `perpMarketIndex` is passed, returns the isolated margin requirement
|
|
273
|
+
* for that market's isolated position only (`ZERO` if none exists) rather
|
|
274
|
+
* than the cross-margin requirement. `liquidationBuffer`, when non-zero,
|
|
275
|
+
* selects the buffered variant (`marginRequirementPlusBuffer` /
|
|
276
|
+
* `MarginContext.liquidation`), which pads the requirement to build in the
|
|
277
|
+
* state account's `liquidationMarginBufferRatio` — the same buffer keepers
|
|
278
|
+
* apply so a position doesn't get flagged for liquidation and immediately
|
|
279
|
+
* clear again.
|
|
280
|
+
*
|
|
156
281
|
* @param marginCategory - The category of margin to calculate ('Initial' or 'Maintenance').
|
|
157
|
-
* @param liquidationBuffer - Optional buffer amount to consider during liquidation scenarios.
|
|
158
|
-
* @param strict - Optional flag to enforce strict
|
|
159
|
-
* @param includeOpenOrders - Optional flag to include open orders
|
|
160
|
-
* @param perpMarketIndex - Optional index of the perpetual market.
|
|
282
|
+
* @param liquidationBuffer - Optional buffer amount (MARGIN_PRECISION, 1e4, added to the margin ratio) to consider during liquidation scenarios.
|
|
283
|
+
* @param strict - Optional flag to enforce strict (TWAP-bounded) oracle pricing.
|
|
284
|
+
* @param includeOpenOrders - Optional flag to include open orders' worst-case margin impact.
|
|
285
|
+
* @param perpMarketIndex - Optional index of the perpetual market. Scopes the result to that market's isolated position.
|
|
161
286
|
*
|
|
162
|
-
* @returns The calculated margin requirement
|
|
287
|
+
* @returns The calculated margin requirement, QUOTE_PRECISION (1e6).
|
|
163
288
|
*/
|
|
164
289
|
getMarginRequirement(marginCategory: MarginCategory, liquidationBuffer?: BN, strict?: boolean, includeOpenOrders?: boolean, perpMarketIndex?: number): BN;
|
|
165
290
|
/**
|
|
166
|
-
*
|
|
291
|
+
* Initial margin requirement — the collateral needed to open/maintain a
|
|
292
|
+
* position at initial (as opposed to maintenance) margin ratios, using
|
|
293
|
+
* strict (TWAP-bounded) oracle pricing. This is what gates new orders and
|
|
294
|
+
* increases in leverage.
|
|
295
|
+
* @param perpMarketIndex Optional isolated perp market to scope to; omit for the cross-margin requirement.
|
|
296
|
+
* @returns The initial margin requirement in USDC. : QUOTE_PRECISION (1e6)
|
|
167
297
|
*/
|
|
168
298
|
getInitialMarginRequirement(perpMarketIndex?: number): BN;
|
|
169
299
|
/**
|
|
170
|
-
*
|
|
300
|
+
* Maintenance margin requirement — the minimum collateral below which the
|
|
301
|
+
* position becomes eligible for liquidation. Uses non-strict oracle pricing
|
|
302
|
+
* and includes open orders' worst-case impact by default.
|
|
303
|
+
* @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the margin ratio, mirroring the state account's `liquidationMarginBufferRatio`.
|
|
304
|
+
* @param perpMarketIndex Optional isolated perp market to scope to; omit for the cross-margin requirement.
|
|
305
|
+
* @returns The maintenance margin requirement in USDC. : QUOTE_PRECISION (1e6)
|
|
171
306
|
*/
|
|
172
307
|
getMaintenanceMarginRequirement(liquidationBuffer?: BN, perpMarketIndex?: number): BN;
|
|
308
|
+
/**
|
|
309
|
+
* Filters an explicit `userAccount` snapshot's fixed-size perp position
|
|
310
|
+
* array down to slots that are actually "active": nonzero base or quote
|
|
311
|
+
* amount, an outstanding open order count, or a nonzero isolated-margin
|
|
312
|
+
* quote deposit (a position can be flat but still isolated-funded).
|
|
313
|
+
*/
|
|
173
314
|
getActivePerpPositionsForUserAccount(userAccount: UserAccount): PerpPosition[];
|
|
315
|
+
/** Returns the cached account's active perp positions. See `getActivePerpPositionsForUserAccount` for the activity criteria. */
|
|
174
316
|
getActivePerpPositions(): PerpPosition[];
|
|
317
|
+
/** Like `getActivePerpPositions`, but also returns the slot at which the underlying `UserAccount` was observed. */
|
|
175
318
|
getActivePerpPositionsAndSlot(): DataAndSlot<PerpPosition[]>;
|
|
319
|
+
/** Filters an explicit `userAccount` snapshot's spot positions to those that are not `isSpotPositionAvailable` (i.e. have a nonzero balance, orders, or cumulative deposits). */
|
|
176
320
|
getActiveSpotPositionsForUserAccount(userAccount: UserAccount): SpotPosition[];
|
|
321
|
+
/** Returns the cached account's active spot positions. See `getActiveSpotPositionsForUserAccount` for the activity criteria. */
|
|
177
322
|
getActiveSpotPositions(): SpotPosition[];
|
|
323
|
+
/** Like `getActiveSpotPositions`, but also returns the slot at which the underlying `UserAccount` was observed. */
|
|
178
324
|
getActiveSpotPositionsAndSlot(): DataAndSlot<SpotPosition[]>;
|
|
179
325
|
/**
|
|
180
|
-
*
|
|
181
|
-
*
|
|
326
|
+
* Calculates unrealized position price PnL, summed across all active perp
|
|
327
|
+
* positions (or a single one if `marketIndex` is given).
|
|
328
|
+
*
|
|
329
|
+
* When `withWeightMarginCategory` is supplied, the PnL is asset-weighted
|
|
330
|
+
* for margin purposes: profitable positions are scaled down by
|
|
331
|
+
* `calculateUnrealizedAssetWeight` (an unrealized gain is a less-trusted
|
|
332
|
+
* asset than settled collateral), and — for `'Initial'` margin specifically
|
|
333
|
+
* — the *per-position* weighted gain is additionally capped at
|
|
334
|
+
* `MAX_POSITIVE_UPNL_FOR_INITIAL_MARGIN` (**$100**, QUOTE_PRECISION), a
|
|
335
|
+
* safety guard against a single dangerously-configured or manipulated
|
|
336
|
+
* market inflating buying power. Losses are never capped, and a
|
|
337
|
+
* `liquidationBuffer` (if provided) further inflates negative PnL to
|
|
338
|
+
* mirror the on-chain liquidation-buffer treatment.
|
|
339
|
+
* @param withFunding If true, includes unsettled funding in each position's PnL.
|
|
340
|
+
* @param marketIndex Optional single perp market to scope to; omit to sum across all active positions.
|
|
341
|
+
* @param withWeightMarginCategory Optional `'Initial'` or `'Maintenance'` — applies the asset-weighting (and, for `'Initial'`, the $100-per-position cap) described above. Omit for raw, unweighted PnL.
|
|
342
|
+
* @param strict Use the worse of live oracle price vs 5-minute TWAP per position (gains use the lower price, losses use the higher price). Defaults to false.
|
|
343
|
+
* @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) that further penalizes negative PnL; only applied when `withWeightMarginCategory` is set.
|
|
344
|
+
* @returns : Precision QUOTE_PRECISION (1e6)
|
|
182
345
|
*/
|
|
183
346
|
getUnrealizedPNL(withFunding?: boolean, marketIndex?: number, withWeightMarginCategory?: MarginCategory, strict?: boolean, liquidationBuffer?: BN): BN;
|
|
184
347
|
/**
|
|
185
|
-
*
|
|
186
|
-
*
|
|
348
|
+
* Calculates unrealized funding payment PnL — the funding accrued since
|
|
349
|
+
* each position's `lastCumulativeFundingRate` was last settled, not yet
|
|
350
|
+
* reflected in `quoteAssetAmount`.
|
|
351
|
+
* @param marketIndex Optional single perp market to scope to; omit to sum across all positions.
|
|
352
|
+
* @returns : Precision QUOTE_PRECISION (1e6)
|
|
187
353
|
*/
|
|
188
354
|
getUnrealizedFundingPNL(marketIndex?: number): BN;
|
|
355
|
+
/**
|
|
356
|
+
* Computes the combined weighted asset value and weighted liability value
|
|
357
|
+
* across the user's spot positions (worst-case, including open-order
|
|
358
|
+
* exposure by default), plus the net quote balance. This is the core spot
|
|
359
|
+
* side of the margin system that `getTotalCollateral`/`getMarginRequirement`
|
|
360
|
+
* build on.
|
|
361
|
+
* @param marketIndex Optional single spot market to scope to; omit to sum across all spot markets.
|
|
362
|
+
* @param marginCategory `'Initial'` or `'Maintenance'` asset/liability weights; omit for unweighted (100%) values.
|
|
363
|
+
* @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the liability weight side.
|
|
364
|
+
* @param includeOpenOrders If false, ignores open bids/asks and only counts the current balance (faster, less conservative).
|
|
365
|
+
* @param strict Use the worse of live oracle price vs 5-minute TWAP. Defaults to false.
|
|
366
|
+
* @param now Unix timestamp (seconds) used for TWAP staleness when `strict` is set; defaults to current time.
|
|
367
|
+
* @returns `{ totalAssetValue, totalLiabilityValue }`, both QUOTE_PRECISION (1e6) and non-negative.
|
|
368
|
+
*/
|
|
189
369
|
getSpotMarketAssetAndLiabilityValue(marketIndex?: number, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, now?: BN): {
|
|
190
370
|
totalAssetValue: BN;
|
|
191
371
|
totalLiabilityValue: BN;
|
|
192
372
|
};
|
|
373
|
+
/** Convenience wrapper around `getSpotMarketAssetAndLiabilityValue` returning only `totalLiabilityValue`. See that method for parameter semantics. Returns QUOTE_PRECISION (1e6). */
|
|
193
374
|
getSpotMarketLiabilityValue(marketIndex?: number, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean, now?: BN): BN;
|
|
375
|
+
/** Thin wrapper around the `math/spotBalance` `getSpotLiabilityValue` helper that supplies the user's `maxMarginRatio`. Returns QUOTE_PRECISION (1e6), negative. */
|
|
194
376
|
getSpotLiabilityValue(tokenAmount: BN, strictOraclePrice: StrictOraclePrice, spotMarketAccount: SpotMarketAccount, marginCategory?: MarginCategory, liquidationBuffer?: BN): BN;
|
|
377
|
+
/** Convenience wrapper around `getSpotMarketAssetAndLiabilityValue` returning only `totalAssetValue`. See that method for parameter semantics. Returns QUOTE_PRECISION (1e6), non-negative. */
|
|
195
378
|
getSpotMarketAssetValue(marketIndex?: number, marginCategory?: MarginCategory, includeOpenOrders?: boolean, strict?: boolean, now?: BN): BN;
|
|
379
|
+
/** Thin wrapper around the `math/spotBalance` `getSpotAssetValue` helper that supplies the user's `maxMarginRatio`. Returns QUOTE_PRECISION (1e6), non-negative. */
|
|
196
380
|
getSpotAssetValue(tokenAmount: BN, strictOraclePrice: StrictOraclePrice, spotMarketAccount: SpotMarketAccount, marginCategory?: MarginCategory): BN;
|
|
381
|
+
/** Net spot value (`totalAssetValue - totalLiabilityValue`) for a single spot market. See `getSpotMarketAssetAndLiabilityValue` for parameter semantics. Returns QUOTE_PRECISION (1e6), can be negative. */
|
|
197
382
|
getSpotPositionValue(marketIndex: number, marginCategory?: MarginCategory, includeOpenOrders?: boolean, strict?: boolean, now?: BN): BN;
|
|
383
|
+
/**
|
|
384
|
+
* Net spot value (`totalAssetValue - totalLiabilityValue`) across all spot
|
|
385
|
+
* markets combined.
|
|
386
|
+
* @param withWeightMarginCategory Optional `'Initial'`/`'Maintenance'` weighting; omit for unweighted values.
|
|
387
|
+
* @returns Precision QUOTE_PRECISION (1e6), can be negative.
|
|
388
|
+
*/
|
|
198
389
|
getNetSpotMarketValue(withWeightMarginCategory?: MarginCategory): BN;
|
|
199
390
|
/**
|
|
200
391
|
* calculates TotalCollateral: collateral + unrealized pnl
|
|
201
392
|
* @returns : Precision QUOTE_PRECISION
|
|
202
393
|
*/
|
|
394
|
+
/**
|
|
395
|
+
* Calculates Total Collateral: net spot collateral value plus weighted
|
|
396
|
+
* unrealized perp PnL (see `getUnrealizedPNL`'s `$100`-per-position cap
|
|
397
|
+
* under `'Initial'` margin). This is the numerator side of the margin
|
|
398
|
+
* system; `getFreeCollateral`/`getMarginRequirement` are derived from it.
|
|
399
|
+
*
|
|
400
|
+
* When `perpMarketIndex` is provided, returns the isolated total collateral
|
|
401
|
+
* for that market's isolated position bucket instead of the cross-margin
|
|
402
|
+
* total — and **throws** if the user has no isolated margin calculation for
|
|
403
|
+
* that market (unlike `getFreeCollateral`, which swallows the same case and
|
|
404
|
+
* returns `ZERO`).
|
|
405
|
+
* @param marginCategory `'Initial'` or `'Maintenance'`. Defaults to `'Initial'`.
|
|
406
|
+
* @param strict Use TWAP-bounded oracle pricing. Defaults to false.
|
|
407
|
+
* @param includeOpenOrders Include open orders' worst-case impact. Defaults to true.
|
|
408
|
+
* @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4); selects the buffered collateral variant when non-zero.
|
|
409
|
+
* @param perpMarketIndex Optional isolated perp market to scope to.
|
|
410
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
411
|
+
*/
|
|
203
412
|
getTotalCollateral(marginCategory?: MarginCategory, strict?: boolean, includeOpenOrders?: boolean, liquidationBuffer?: BN, perpMarketIndex?: number): BN;
|
|
413
|
+
/**
|
|
414
|
+
* Builds the liquidation-buffer map to pass into margin calculations while
|
|
415
|
+
* a liquidation is in progress: `'cross'` is set to the state account's
|
|
416
|
+
* `liquidationMarginBufferRatio` if cross margin is being liquidated, and
|
|
417
|
+
* each isolated perp position currently flagged `BeingLiquidated` or
|
|
418
|
+
* `Bankruptcy` gets the same buffer under its market index. Positions not
|
|
419
|
+
* currently being liquidated are omitted (no buffer applied).
|
|
420
|
+
* @returns Map from `'cross'` or a perp market index to the buffer amount (MARGIN_PRECISION, 1e4).
|
|
421
|
+
*/
|
|
204
422
|
getLiquidationBuffer(): Map<number | 'cross', BN>;
|
|
205
423
|
/**
|
|
206
|
-
*
|
|
207
|
-
*
|
|
424
|
+
* Calculates a user's health score by comparing total collateral against
|
|
425
|
+
* the maintenance margin requirement: `100 * (1 - maintenanceMarginReq / totalCollateral)`,
|
|
426
|
+
* clamped to `[0, 100]` and rounded to the nearest integer. `100` means no
|
|
427
|
+
* maintenance requirement (or a requirement of zero with non-negative
|
|
428
|
+
* collateral); `0` means at or past the maintenance threshold (liquidatable)
|
|
429
|
+
* or that collateral is non-positive.
|
|
430
|
+
*
|
|
431
|
+
* Short-circuits to `0` if the relevant scope is already flagged as being
|
|
432
|
+
* liquidated: cross margin via `isCrossMarginBeingLiquidated` (when
|
|
433
|
+
* `perpMarketIndex` is omitted), or the specific isolated position via
|
|
434
|
+
* `isIsolatedPositionBeingLiquidated` (when `perpMarketIndex` is given).
|
|
435
|
+
* @param perpMarketIndex Optional isolated perp market to scope health to; omit for the cross-margin account's health.
|
|
436
|
+
* @returns Health, an integer in `[0, 100]`.
|
|
208
437
|
*/
|
|
209
438
|
getHealth(perpMarketIndex?: number): number;
|
|
439
|
+
/**
|
|
440
|
+
* Computes a single perp position's margin-weighted liability value: worst-case
|
|
441
|
+
* (or current, if `includeOpenOrders` is false) base amount, valued at the
|
|
442
|
+
* oracle price (or `expiryPrice` if the market is in settlement, which also
|
|
443
|
+
* zeroes the margin ratio), scaled by the applicable margin ratio for
|
|
444
|
+
* `marginCategory`. Underlies `getPerpMarketLiabilityValue`,
|
|
445
|
+
* `getTotalPerpPositionLiability`, and the leverage/liquidation-price math.
|
|
446
|
+
* @returns Precision QUOTE_PRECISION (1e6); unweighted (raw notional, no margin ratio applied) if `marginCategory` is omitted.
|
|
447
|
+
*/
|
|
210
448
|
calculateWeightedPerpPositionLiability(perpPosition: PerpPosition, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
|
|
211
449
|
/**
|
|
212
|
-
*
|
|
213
|
-
*
|
|
450
|
+
* Margin-weighted liability value of a single perp position. Thin wrapper
|
|
451
|
+
* around `calculateWeightedPerpPositionLiability` for the position in
|
|
452
|
+
* `marketIndex`; see that method for the worst-case/margin-ratio semantics.
|
|
453
|
+
* @param marketIndex
|
|
454
|
+
* @param marginCategory `'Initial'`/`'Maintenance'` margin ratio to apply; omit for the raw unweighted notional.
|
|
455
|
+
* @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the margin ratio.
|
|
456
|
+
* @param includeOpenOrders If true (recommended for margin checks), uses the worst-case base amount including open bids/asks.
|
|
457
|
+
* @param strict Use TWAP-bounded quote pricing. Defaults to false.
|
|
458
|
+
* @returns Precision QUOTE_PRECISION (1e6). Throws (via `getPerpPositionOrThrow`) if the user has no active position in `marketIndex`.
|
|
214
459
|
*/
|
|
215
460
|
getPerpMarketLiabilityValue(marketIndex: number, marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
|
|
216
461
|
/**
|
|
217
|
-
*
|
|
218
|
-
*
|
|
462
|
+
* Sums `calculateWeightedPerpPositionLiability` across every active perp
|
|
463
|
+
* position — the perp side of the margin requirement (see `getMarginRequirement`).
|
|
464
|
+
* @param marginCategory `'Initial'`/`'Maintenance'` margin ratio to apply; omit for the raw unweighted notional.
|
|
465
|
+
* @param liquidationBuffer Optional buffer (MARGIN_PRECISION, 1e4) added to the margin ratio.
|
|
466
|
+
* @param includeOpenOrders If true, uses each position's worst-case base amount including open bids/asks.
|
|
467
|
+
* @param strict Use TWAP-bounded quote pricing. Defaults to false.
|
|
468
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
219
469
|
*/
|
|
220
470
|
getTotalPerpPositionLiability(marginCategory?: MarginCategory, liquidationBuffer?: BN, includeOpenOrders?: boolean, strict?: boolean): BN;
|
|
221
471
|
/**
|
|
222
|
-
*
|
|
223
|
-
*
|
|
472
|
+
* Values a perp position's base-asset notional at a caller-supplied oracle
|
|
473
|
+
* price rather than looking one up internally — useful for pricing against
|
|
474
|
+
* a simulated/custom price. Returns `ZERO` (via `getPerpPositionOrEmpty`) if
|
|
475
|
+
* the user has no position in `marketIndex`.
|
|
476
|
+
* @param marketIndex
|
|
477
|
+
* @param oraclePriceData Price to value the position at, PRICE_PRECISION (1e6). Caller-supplied so callers can pass a custom/simulated price.
|
|
478
|
+
* @param includeOpenOrders If true, uses the worst-case base amount (including open bids/asks) instead of the current position size. Defaults to false.
|
|
479
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
224
480
|
*/
|
|
225
481
|
getPerpPositionValue(marketIndex: number, oraclePriceData: Pick<OraclePriceData, 'price'>, includeOpenOrders?: boolean): BN;
|
|
226
482
|
/**
|
|
227
|
-
*
|
|
228
|
-
*
|
|
483
|
+
* Unweighted (no margin ratio applied) perp liability notional at a
|
|
484
|
+
* caller-supplied oracle price. Returns `ZERO` (via `getPerpPositionOrEmpty`)
|
|
485
|
+
* if the user has no position in `marketIndex`.
|
|
486
|
+
* @param marketIndex
|
|
487
|
+
* @param oraclePriceData Price to value the position at, PRICE_PRECISION (1e6).
|
|
488
|
+
* @param includeOpenOrders If true, uses the worst-case (including open bids/asks) liability value; otherwise just the current position. Defaults to false.
|
|
489
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
229
490
|
*/
|
|
230
491
|
getPerpLiabilityValue(marketIndex: number, oraclePriceData: OraclePriceData, includeOpenOrders?: boolean): BN;
|
|
492
|
+
/** Returns `PositionDirection.LONG`/`SHORT` from the sign of `baseAssetAmount`, or `undefined` if the position is flat. */
|
|
231
493
|
getPositionSide(currentPosition: Pick<PerpPosition, 'baseAssetAmount'>): PositionDirection | undefined;
|
|
232
494
|
/**
|
|
233
495
|
* calculates average exit price (optionally for closing up to 100% of position)
|
|
234
|
-
* @
|
|
496
|
+
* @param position Position to estimate the close for.
|
|
497
|
+
* @param amountToClose Optional base amount (BASE_PRECISION, 1e9) to simulate closing; if omitted, closes the full position. Passing `ZERO` returns the current reserve price with zero PnL.
|
|
498
|
+
* @param useAMMClose If true, values the close against the AMM's own reserves (`calculateBaseAssetValue`) instead of the oracle-referenced value (`calculateBaseAssetValueWithOracle`). Defaults to false.
|
|
499
|
+
* @returns Tuple of `[exitPrice, pnl]` — exitPrice is PRICE_PRECISION (1e6), pnl is QUOTE_PRECISION (1e6).
|
|
235
500
|
*/
|
|
236
501
|
getPositionEstimatedExitPriceAndPnl(position: PerpPosition, amountToClose?: BN, useAMMClose?: boolean): [BN, BN];
|
|
237
502
|
/**
|
|
238
503
|
* calculates current user leverage which is (total liability size) / (net asset value)
|
|
239
|
-
* @
|
|
504
|
+
* @param includeOpenOrders If true, sizes the perp liability using worst-case open-order exposure. Defaults to true.
|
|
505
|
+
* @param perpMarketIndex Optional single isolated perp market to scope leverage to (uses that position's own isolated deposit + PnL as its asset value); omit for account-wide leverage.
|
|
506
|
+
* @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x leverage). `ZERO` if net asset value is zero.
|
|
240
507
|
*/
|
|
241
508
|
getLeverage(includeOpenOrders?: boolean, perpMarketIndex?: number): BN;
|
|
509
|
+
/** Combines the components from `getLeverageComponents` into a single leverage ratio: `(perpLiability + spotLiability) / (spotAsset + perpPnl - spotLiability)`. Returns TEN_THOUSAND (1e4) precision; `ZERO` if net asset value is zero. */
|
|
242
510
|
calculateLeverageFromComponents({ perpLiabilityValue, perpPnl, spotAssetValue, spotLiabilityValue, }: {
|
|
243
511
|
perpLiabilityValue: BN;
|
|
244
512
|
perpPnl: BN;
|
|
245
513
|
spotAssetValue: BN;
|
|
246
514
|
spotLiabilityValue: BN;
|
|
247
515
|
}): BN;
|
|
516
|
+
/**
|
|
517
|
+
* Gathers the four raw components (`perpLiabilityValue`, `perpPnl`,
|
|
518
|
+
* `spotAssetValue`, `spotLiabilityValue`, all QUOTE_PRECISION/1e6) that
|
|
519
|
+
* `calculateLeverageFromComponents` combines into a leverage ratio.
|
|
520
|
+
*
|
|
521
|
+
* When `perpMarketIndex` is given, scopes to a single isolated position:
|
|
522
|
+
* `spotAssetValue` becomes that position's isolated quote deposit and
|
|
523
|
+
* `spotLiabilityValue` is `ZERO` (isolated positions carry no spot
|
|
524
|
+
* liability of their own). Otherwise sums across the whole account, and
|
|
525
|
+
* folds in `getTotalIsolatedPositionDeposits` as additional spot asset
|
|
526
|
+
* value when `marginCategory` is unweighted.
|
|
527
|
+
*/
|
|
248
528
|
getLeverageComponents(includeOpenOrders?: boolean, marginCategory?: MarginCategory | undefined, perpMarketIndex?: number): {
|
|
249
529
|
perpLiabilityValue: BN;
|
|
250
530
|
perpPnl: BN;
|
|
251
531
|
spotAssetValue: BN;
|
|
252
532
|
spotLiabilityValue: BN;
|
|
253
533
|
};
|
|
534
|
+
/**
|
|
535
|
+
* Returns true if the user's deposit position in `spotMarketAccount` is
|
|
536
|
+
* non-empty but worth less than `DUST_POSITION_SIZE` (QUOTE_PRECISION) —
|
|
537
|
+
* i.e. too small to be economically worth withdrawing/settling. Only
|
|
538
|
+
* evaluates deposits (returns false for borrows or an empty position).
|
|
539
|
+
* @throws If the user has no spot position slot for the market (should not happen for a valid `SpotMarketAccount`).
|
|
540
|
+
*/
|
|
254
541
|
isDustDepositPosition(spotMarketAccount: SpotMarketAccount): boolean;
|
|
542
|
+
/** Returns every spot market where the user holds a dust-sized deposit; see `isDustDepositPosition`. */
|
|
255
543
|
getSpotMarketAccountsWithDustPosition(): SpotMarketAccount[];
|
|
544
|
+
/**
|
|
545
|
+
* Sum of the user's total perp position liability (worst-case, open orders
|
|
546
|
+
* included) and total spot liability value (worst-case, open orders included).
|
|
547
|
+
* @param marginCategory Optional `'Initial'`/`'Maintenance'` weighting; omit for unweighted values.
|
|
548
|
+
* @returns Precision QUOTE_PRECISION (1e6), non-negative.
|
|
549
|
+
*/
|
|
256
550
|
getTotalLiabilityValue(marginCategory?: MarginCategory): BN;
|
|
551
|
+
/**
|
|
552
|
+
* Sum of the user's total spot asset value and total unrealized perp PnL
|
|
553
|
+
* (with funding). When `marginCategory` is omitted (unweighted), also
|
|
554
|
+
* includes `getTotalIsolatedPositionDeposits`.
|
|
555
|
+
* @param marginCategory Optional `'Initial'`/`'Maintenance'` weighting; omit for unweighted values.
|
|
556
|
+
* @returns Precision QUOTE_PRECISION (1e6), non-negative.
|
|
557
|
+
*/
|
|
257
558
|
getTotalAssetValue(marginCategory?: MarginCategory): BN;
|
|
559
|
+
/**
|
|
560
|
+
* Unweighted net USD value of the account: net spot market value, plus
|
|
561
|
+
* unrealized (funding-inclusive) perp PnL, plus isolated position deposits.
|
|
562
|
+
* @returns Precision QUOTE_PRECISION (1e6), can be negative.
|
|
563
|
+
*/
|
|
258
564
|
getNetUsdValue(): BN;
|
|
259
565
|
/**
|
|
260
|
-
* Calculates the all
|
|
261
|
-
*
|
|
262
|
-
*
|
|
566
|
+
* Calculates the all-time P&L of the user: current net USD value
|
|
567
|
+
* (`getNetUsdValue`), plus lifetime total withdraws, minus lifetime total
|
|
568
|
+
* deposits. Equivalent to "everything the account is worth now, plus
|
|
569
|
+
* everything ever taken out, minus everything ever put in".
|
|
570
|
+
* @returns Precision QUOTE_PRECISION (1e6), can be negative.
|
|
263
571
|
*/
|
|
264
572
|
getTotalAllTimePnl(): BN;
|
|
265
573
|
/**
|
|
266
574
|
* calculates max allowable leverage exceeding hitting requirement category
|
|
267
575
|
* for large sizes where imf factor activates, result is a lower bound
|
|
268
|
-
* @param marginCategory {Initial, Maintenance}
|
|
269
|
-
* @returns : Precision TEN_THOUSAND
|
|
576
|
+
* @param marginCategory {Initial, Maintenance} — currently unused; the calculation always uses the max-tradeable-size ('Initial') buying power.
|
|
577
|
+
* @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x)
|
|
270
578
|
*/
|
|
271
579
|
getMaxLeverageForPerp(perpMarketIndex: number, _marginCategory?: MarginCategory): BN;
|
|
272
580
|
/**
|
|
273
581
|
* calculates max allowable leverage exceeding hitting requirement category
|
|
274
582
|
* @param spotMarketIndex
|
|
275
|
-
* @param direction
|
|
276
|
-
* @returns : Precision TEN_THOUSAND
|
|
583
|
+
* @param direction Whether to simulate a long (deposit-increasing) or short (borrow-increasing) trade.
|
|
584
|
+
* @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x)
|
|
277
585
|
*/
|
|
278
586
|
getMaxLeverageForSpot(spotMarketIndex: number, direction: PositionDirection): BN;
|
|
279
587
|
/**
|
|
280
588
|
* calculates margin ratio: 1 / leverage
|
|
281
|
-
* @returns : Precision TEN_THOUSAND
|
|
589
|
+
* @returns : Precision TEN_THOUSAND (1e4, i.e. `10000` = 100% margin ratio / 1x leverage). Returns `BN_MAX` if the account has no liabilities.
|
|
282
590
|
*/
|
|
283
591
|
getMarginRatio(): BN;
|
|
592
|
+
/**
|
|
593
|
+
* @deprecated Use `getLiquidationStatuses` for the full cross + per-isolated-market breakdown. This method returns only the cross-margin status (plus the same isolated map, for convenience) for backward compatibility.
|
|
594
|
+
* @returns The cross-margin `AccountLiquidatableStatus`, plus `isolatedPositions` mapping each isolated perp market index to its own status.
|
|
595
|
+
*/
|
|
284
596
|
canBeLiquidated(): AccountLiquidatableStatus & {
|
|
285
597
|
isolatedPositions: Map<number, AccountLiquidatableStatus>;
|
|
286
598
|
};
|
|
@@ -289,52 +601,125 @@ export declare class User {
|
|
|
289
601
|
* Map keys:
|
|
290
602
|
* - 'cross' for cross margin
|
|
291
603
|
* - marketIndex (number) for each isolated perp position
|
|
604
|
+
*
|
|
605
|
+
* Each `canBeLiquidated` compares maintenance total collateral against the
|
|
606
|
+
* maintenance margin requirement for that scope. If `marginCalc` is not
|
|
607
|
+
* supplied, one is computed under `'Maintenance'` with the account's
|
|
608
|
+
* current `getLiquidationBuffer()` applied — i.e. this defaults to the same
|
|
609
|
+
* buffered check the on-chain liquidation instructions use, not a bare
|
|
610
|
+
* maintenance-margin comparison.
|
|
611
|
+
* @param marginCalc Optional pre-computed `MarginCalculation` to reuse (avoids recomputing margin across repeated calls).
|
|
292
612
|
*/
|
|
293
613
|
getLiquidationStatuses(marginCalc?: MarginCalculation): Map<'cross' | number, AccountLiquidatableStatus>;
|
|
614
|
+
/** Returns true if cross margin or any isolated perp position is currently flagged as being liquidated or bankrupt. */
|
|
294
615
|
isBeingLiquidated(): boolean;
|
|
616
|
+
/** Returns true if the account-level `UserStatus` has `BEING_LIQUIDATED` or `BANKRUPT` set (cross margin, not per-isolated-position). */
|
|
295
617
|
isCrossMarginBeingLiquidated(): boolean;
|
|
296
618
|
/** Returns true if cross margin is currently below maintenance requirement (no buffer). */
|
|
297
619
|
canCrossMarginBeLiquidated(marginCalc?: MarginCalculation): boolean;
|
|
620
|
+
/** Returns true if any active perp position has `PositionFlag.BeingLiquidated` or `PositionFlag.Bankruptcy` set. */
|
|
298
621
|
hasIsolatedPositionBeingLiquidated(): boolean;
|
|
622
|
+
/** Returns true if the specific perp position in `perpMarketIndex` has `PositionFlag.BeingLiquidated` or `PositionFlag.Bankruptcy` set. False (not throw) if the user has no position there. */
|
|
299
623
|
isIsolatedPositionBeingLiquidated(perpMarketIndex: number): boolean;
|
|
300
624
|
/** Returns true if any isolated perp position is currently below its maintenance requirement (no buffer). */
|
|
301
625
|
getLiquidatableIsolatedPositions(marginCalc?: MarginCalculation): number[];
|
|
626
|
+
/** Returns true if `isolatedMarginCalculation`'s collateral is below its margin requirement (no buffer). */
|
|
302
627
|
canIsolatedPositionMarginBeLiquidated(isolatedMarginCalculation: IsolatedMarginCalculation): boolean;
|
|
628
|
+
/** Returns true if the account's `UserStatus` bitmask has `status` set. */
|
|
303
629
|
hasStatus(status: UserStatus): boolean;
|
|
630
|
+
/** Returns true if the account's `UserStatus` has `BANKRUPT` set (equity insufficient to cover liabilities; awaiting bankruptcy resolution). */
|
|
304
631
|
isBankrupt(): boolean;
|
|
305
632
|
/**
|
|
306
633
|
* Checks if any user position cumulative funding differs from respective market cumulative funding
|
|
307
|
-
* @returns
|
|
634
|
+
* @returns True if at least one non-flat perp position has stale `lastCumulativeFundingRate` relative to the market's current long/short cumulative funding rate.
|
|
308
635
|
*/
|
|
309
636
|
needsToSettleFundingPayment(): boolean;
|
|
310
637
|
/**
|
|
311
|
-
* Calculate the liquidation price of a spot position
|
|
312
|
-
*
|
|
313
|
-
*
|
|
638
|
+
* Calculate the liquidation price of a spot position — the oracle price at
|
|
639
|
+
* which maintenance free collateral would hit zero, extrapolating linearly
|
|
640
|
+
* from the current free collateral and the position's per-unit-price
|
|
641
|
+
* sensitivity (`calculateFreeCollateralDeltaForSpot`). If a perp market
|
|
642
|
+
* shares the same oracle as this spot market, that perp position's
|
|
643
|
+
* sensitivity is folded in too (scaled for any oracle-source unit
|
|
644
|
+
* difference), since a single price move affects both simultaneously.
|
|
645
|
+
* @param marketIndex Spot market to compute the liquidation price for.
|
|
646
|
+
* @param positionBaseSizeChange Optional simulated change to the position size, in the spot market's own token decimals. Defaults to no change.
|
|
647
|
+
* @returns Precision PRICE_PRECISION (1e6). Returns `new BN(-1)` as a sentinel when there is no position, the position (after `positionBaseSizeChange`) is flat, the price sensitivity is zero, or the computed liquidation price would be negative (position cannot be liquidated by a price move alone).
|
|
314
648
|
*/
|
|
315
649
|
spotLiquidationPrice(marketIndex: number, positionBaseSizeChange?: BN): BN;
|
|
316
650
|
/**
|
|
317
|
-
* Calculate the liquidation price of a perp position, with optional parameter to calculate the liquidation price after a trade
|
|
651
|
+
* Calculate the liquidation price of a perp position, with optional parameter to calculate the liquidation price after a trade.
|
|
652
|
+
*
|
|
653
|
+
* Like `spotLiquidationPrice`, this extrapolates linearly from current free
|
|
654
|
+
* collateral (`totalCollateral - marginRequirement`, plus `offsetCollateral`)
|
|
655
|
+
* and the position's price sensitivity; if a spot market shares the same
|
|
656
|
+
* oracle, its sensitivity is folded in too. When `marginType === 'Isolated'`,
|
|
657
|
+
* free collateral and the margin requirement are scoped to that market's
|
|
658
|
+
* isolated bucket instead of the cross-margin account (and the spot-oracle
|
|
659
|
+
* cross-contribution above is skipped).
|
|
318
660
|
* @param marketIndex
|
|
319
|
-
* @param positionBaseSizeChange
|
|
320
|
-
* @param estimatedEntryPrice
|
|
321
|
-
* @param marginCategory
|
|
322
|
-
* @param includeOpenOrders
|
|
323
|
-
* @param offsetCollateral
|
|
324
|
-
* @
|
|
661
|
+
* @param positionBaseSizeChange Change in position size to calculate the liquidation price for, standardized to the market's order step size. Precision BASE_PRECISION (1e9).
|
|
662
|
+
* @param estimatedEntryPrice Entry price for `positionBaseSizeChange`, PRICE_PRECISION (1e6); only affects the result under `marginCategory: 'Maintenance'` (it adjusts free collateral for the estimated realized PnL and taker fee of entering at this price rather than at the oracle price).
|
|
663
|
+
* @param marginCategory Allow `'Initial'` to be passed in if we are trying to calculate price for DLP de-risking. Defaults to `'Maintenance'` (the actual liquidation threshold).
|
|
664
|
+
* @param includeOpenOrders Include open orders' worst-case exposure when sizing the position. Defaults to false.
|
|
665
|
+
* @param offsetCollateral Allows calculating the liquidation price after this offset collateral (QUOTE_PRECISION, 1e6) is added to the user's account (e.g. : what will the liquidation price be for this position AFTER I deposit $x worth of collateral). Defaults to zero.
|
|
666
|
+
* @param marginType `'Isolated'` to scope the calculation to `marketIndex`'s isolated margin bucket; omit/`'Cross'` for the cross-margin account.
|
|
667
|
+
* @returns Precision : PRICE_PRECISION (1e6). Returns `new BN(-1)` as a sentinel when there is no isolated margin calculation for the market (isolated mode), the price sensitivity is zero, or the computed price would be negative (position cannot be liquidated by a price move alone).
|
|
325
668
|
*/
|
|
326
669
|
liquidationPrice(marketIndex: number, positionBaseSizeChange?: BN, estimatedEntryPrice?: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean, offsetCollateral?: BN, marginType?: MarginType): BN;
|
|
670
|
+
/**
|
|
671
|
+
* Helper for `liquidationPrice`: estimates the net change to free collateral
|
|
672
|
+
* from simultaneously (a) realizing PnL on `positionBaseSizeChange` entered
|
|
673
|
+
* at `estimatedEntryPrice` (assuming the worst/taker fee tier) versus the
|
|
674
|
+
* oracle price, and (b) the resulting change in margin requirement from the
|
|
675
|
+
* new position size. Only component (a) applies under `'Maintenance'`
|
|
676
|
+
* (matching `liquidationPrice`'s default); under other margin categories
|
|
677
|
+
* only the margin-requirement delta is applied.
|
|
678
|
+
* @returns Precision QUOTE_PRECISION (1e6); can be negative.
|
|
679
|
+
*/
|
|
327
680
|
calculateEntriesEffectOnFreeCollateral(market: PerpMarketAccount, oraclePrice: BN, perpPosition: PerpPosition, positionBaseSizeChange: BN, estimatedEntryPrice: BN, includeOpenOrders: boolean, marginCategory?: MarginCategory): BN;
|
|
681
|
+
/**
|
|
682
|
+
* Helper for `liquidationPrice`: the derivative of free collateral with
|
|
683
|
+
* respect to the perp market's oracle price, for the proposed post-trade
|
|
684
|
+
* position (`positionBaseSizeChange` applied to the current, or worst-case
|
|
685
|
+
* if `includeOpenOrders`, base amount). Used as the linear-extrapolation
|
|
686
|
+
* slope to solve for the price at which free collateral hits zero.
|
|
687
|
+
* @returns Precision QUOTE_PRECISION (1e6) per unit of PRICE_PRECISION move, or `undefined` if the proposed position is flat (no defined liquidation price).
|
|
688
|
+
*/
|
|
328
689
|
calculateFreeCollateralDeltaForPerp(market: PerpMarketAccount, perpPosition: PerpPosition, positionBaseSizeChange: BN, oraclePrice: BN, marginCategory?: MarginCategory, includeOpenOrders?: boolean): BN | undefined;
|
|
690
|
+
/**
|
|
691
|
+
* Helper for `spotLiquidationPrice`/`liquidationPrice`: the derivative of
|
|
692
|
+
* free collateral with respect to the spot market's oracle price, for a
|
|
693
|
+
* position of `signedTokenAmount` (positive = deposit, negative = borrow).
|
|
694
|
+
* @returns Precision QUOTE_PRECISION (1e6) per unit of PRICE_PRECISION move.
|
|
695
|
+
*/
|
|
329
696
|
calculateFreeCollateralDeltaForSpot(market: SpotMarketAccount, signedTokenAmount: BN, marginCategory?: MarginCategory): BN;
|
|
330
697
|
/**
|
|
331
698
|
* Calculates the estimated liquidation price for a position after closing a quote amount of the position.
|
|
332
699
|
* @param positionMarketIndex
|
|
333
|
-
* @param closeQuoteAmount
|
|
334
|
-
* @
|
|
700
|
+
* @param closeQuoteAmount Quote-denominated amount of the position to close, QUOTE_PRECISION (1e6). Converted proportionally to a base-size reduction via the position's current cost basis.
|
|
701
|
+
* @param estimatedEntryPrice Forwarded to `liquidationPrice` as the entry price for the (negative, i.e. closing) size change. PRICE_PRECISION (1e6). Defaults to zero.
|
|
702
|
+
* @returns : Precision PRICE_PRECISION (1e6). See `liquidationPrice` for the `-1` sentinel cases.
|
|
335
703
|
*/
|
|
336
704
|
liquidationPriceAfterClose(positionMarketIndex: number, closeQuoteAmount: BN, estimatedEntryPrice?: BN): BN;
|
|
705
|
+
/**
|
|
706
|
+
* Calculates the margin required to open a trade of `baseSize` in `targetMarketIndex`, scalar only — does not account for trade direction or existing positions/whether the trade is actually risk-increasing.
|
|
707
|
+
* @param baseSize BASE_PRECISION (1e9).
|
|
708
|
+
* @param estEntryPrice Optional entry price to value the trade at, PRICE_PRECISION (1e6); defaults to the oracle price.
|
|
709
|
+
* @param perpMarketMaxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
|
|
710
|
+
* @returns Precision QUOTE_PRECISION (1e6).
|
|
711
|
+
*/
|
|
337
712
|
getMarginUSDCRequiredForTrade(targetMarketIndex: number, baseSize: BN, estEntryPrice?: BN, perpMarketMaxMarginRatio?: number): BN;
|
|
713
|
+
/**
|
|
714
|
+
* Converts `getMarginUSDCRequiredForTrade`'s USDC margin requirement into
|
|
715
|
+
* how much of `collateralIndex`'s token a user would need to deposit to
|
|
716
|
+
* cover it, accounting for that collateral's scaled initial asset weight
|
|
717
|
+
* (a lower-weighted asset requires proportionally more deposited).
|
|
718
|
+
* @param baseSize BASE_PRECISION (1e9).
|
|
719
|
+
* @param collateralIndex Spot market to size the deposit in.
|
|
720
|
+
* @param perpMarketMaxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
|
|
721
|
+
* @returns Token amount in `collateralIndex`'s own decimals.
|
|
722
|
+
*/
|
|
338
723
|
getCollateralDepositRequiredForTrade(targetMarketIndex: number, baseSize: BN, collateralIndex: number, perpMarketMaxMarginRatio?: number): BN;
|
|
339
724
|
/**
|
|
340
725
|
* Separates the max trade size into two parts:
|
|
@@ -342,7 +727,9 @@ export declare class User {
|
|
|
342
727
|
* - oppositeSideTradeSize: the trade size for closing the opposite direction
|
|
343
728
|
* @param targetMarketIndex
|
|
344
729
|
* @param tradeSide
|
|
345
|
-
* @
|
|
730
|
+
* @param maxMarginRatio Optional max-margin-ratio override, see `resolveMaxMarginRatio`.
|
|
731
|
+
* @param positionType Whether to size for a cross or isolated-margin position (forwarded to `getPerpBuyingPower`). Defaults to `'cross'`.
|
|
732
|
+
* @returns { tradeSize: BN, oppositeSideTradeSize: BN} : Precision QUOTE_PRECISION (1e6)
|
|
346
733
|
*/
|
|
347
734
|
getMaxTradeSizeUSDCForPerp(targetMarketIndex: number, tradeSide: PositionDirection, maxMarginRatio?: number | undefined, positionType?: 'isolated' | 'cross'): {
|
|
348
735
|
tradeSize: BN;
|
|
@@ -352,10 +739,10 @@ export declare class User {
|
|
|
352
739
|
* Get the maximum trade size for a given market, taking into account the user's current leverage, positions, collateral, etc.
|
|
353
740
|
*
|
|
354
741
|
* @param targetMarketIndex
|
|
355
|
-
* @param direction
|
|
356
|
-
* @param currentQuoteAssetValue
|
|
357
|
-
* @param currentSpotMarketNetValue
|
|
358
|
-
* @returns tradeSizeAllowed : Precision QUOTE_PRECISION
|
|
742
|
+
* @param direction Long (increase deposit / reduce borrow) or short (increase borrow / reduce deposit).
|
|
743
|
+
* @param currentQuoteAssetValue Ignored — always recomputed internally from `getSpotMarketAssetValue(QUOTE_SPOT_MARKET_INDEX)`.
|
|
744
|
+
* @param currentSpotMarketNetValue Optional pre-computed net value for `targetMarketIndex` (QUOTE_PRECISION, 1e6); if omitted, computed via `getSpotPositionValue`.
|
|
745
|
+
* @returns tradeSizeAllowed : Precision QUOTE_PRECISION (1e6)
|
|
359
746
|
*/
|
|
360
747
|
getMaxTradeSizeUSDCForSpot(targetMarketIndex: number, direction: PositionDirection, currentQuoteAssetValue?: BN, currentSpotMarketNetValue?: BN): BN;
|
|
361
748
|
/**
|
|
@@ -364,8 +751,9 @@ export declare class User {
|
|
|
364
751
|
*
|
|
365
752
|
* @param inMarketIndex
|
|
366
753
|
* @param outMarketIndex
|
|
367
|
-
* @param calculateSwap function to
|
|
368
|
-
* @param iterationLimit
|
|
754
|
+
* @param calculateSwap Optional function to simulate the in-to-out conversion (e.g. to model swap fees/slippage); defaults to a 1:1 oracle-price conversion.
|
|
755
|
+
* @param iterationLimit How many binary-search iterations to run before erroring out. Defaults to 1000.
|
|
756
|
+
* @returns `inAmount`/`outAmount` in each market's own token decimals, and the resulting `leverage` (TEN_THOUSAND, 1e4 precision) after the swap.
|
|
369
757
|
*/
|
|
370
758
|
getMaxSwapAmount({ inMarketIndex, outMarketIndex, calculateSwap, iterationLimit, }: {
|
|
371
759
|
inMarketIndex: number;
|
|
@@ -377,18 +765,28 @@ export declare class User {
|
|
|
377
765
|
outAmount: BN;
|
|
378
766
|
leverage: BN;
|
|
379
767
|
};
|
|
768
|
+
/**
|
|
769
|
+
* Returns a cloned `SpotPosition` with `tokenAmount` (signed, positive =
|
|
770
|
+
* deposit / negative = borrow) applied on top of the existing balance —
|
|
771
|
+
* used to simulate the post-trade/post-swap position without mutating the
|
|
772
|
+
* cached account.
|
|
773
|
+
* @param tokenAmount Signed delta in `market`'s own token decimals.
|
|
774
|
+
*/
|
|
380
775
|
cloneAndUpdateSpotPosition(position: SpotPosition, tokenAmount: BN, market: SpotMarketAccount): SpotPosition;
|
|
776
|
+
/** Worst-case free-collateral contribution (under `'Initial'` margin) of a single spot position. Returns QUOTE_PRECISION (1e6). */
|
|
381
777
|
calculateSpotPositionFreeCollateralContribution(spotPosition: SpotPosition, strictOraclePrice: StrictOraclePrice): BN;
|
|
778
|
+
/** Worst-case (under `'Initial'` margin) asset/liability value split of a single spot position, for use in leverage calculations. Both fields QUOTE_PRECISION (1e6), non-negative. */
|
|
382
779
|
calculateSpotPositionLeverageContribution(spotPosition: SpotPosition, strictOraclePrice: StrictOraclePrice): {
|
|
383
780
|
totalAssetValue: BN;
|
|
384
781
|
totalLiabilityValue: BN;
|
|
385
782
|
};
|
|
386
783
|
/**
|
|
387
784
|
* Estimates what the user leverage will be after swap
|
|
388
|
-
* @param inMarketIndex
|
|
389
|
-
* @param outMarketIndex
|
|
390
|
-
* @param inAmount
|
|
391
|
-
* @param outAmount
|
|
785
|
+
* @param inMarketIndex Market being sold/paid from.
|
|
786
|
+
* @param outMarketIndex Market being bought/received.
|
|
787
|
+
* @param inAmount Amount removed from `inMarketIndex`, that market's own token decimals.
|
|
788
|
+
* @param outAmount Amount added to `outMarketIndex`, that market's own token decimals.
|
|
789
|
+
* @returns Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x).
|
|
392
790
|
*/
|
|
393
791
|
accountLeverageAfterSwap({ inMarketIndex, outMarketIndex, inAmount, outAmount, }: {
|
|
394
792
|
inMarketIndex: number;
|
|
@@ -399,42 +797,146 @@ export declare class User {
|
|
|
399
797
|
/**
|
|
400
798
|
* Returns the leverage ratio for the account after adding (or subtracting) the given quote size to the given position
|
|
401
799
|
* @param targetMarketIndex
|
|
402
|
-
* @param
|
|
403
|
-
* @param tradeQuoteAmount
|
|
404
|
-
* @param tradeSide
|
|
405
|
-
* @param includeOpenOrders
|
|
406
|
-
* @returns leverageRatio : Precision TEN_THOUSAND
|
|
800
|
+
* @param targetMarketType Whether the trade is on a perp or spot market — the two use different valuation paths.
|
|
801
|
+
* @param tradeQuoteAmount Quote size of the simulated trade, QUOTE_PRECISION (1e6).
|
|
802
|
+
* @param tradeSide Direction of the simulated trade.
|
|
803
|
+
* @param includeOpenOrders Include existing open orders' worst-case impact in both the before/after values. Defaults to true.
|
|
804
|
+
* @returns leverageRatio : Precision TEN_THOUSAND (1e4, i.e. `10000` = 1x)
|
|
407
805
|
*/
|
|
408
806
|
accountLeverageRatioAfterTrade(targetMarketIndex: number, targetMarketType: MarketType, tradeQuoteAmount: BN, tradeSide: PositionDirection, includeOpenOrders?: boolean): BN;
|
|
807
|
+
/**
|
|
808
|
+
* Looks up the user's fee tier from the state account's fee structure.
|
|
809
|
+
*
|
|
810
|
+
* For perp markets, the tier is selected by the user's rolling 30-day
|
|
811
|
+
* volume (`getUser30dRollingVolumeEstimate`, QUOTE_PRECISION) against fixed
|
|
812
|
+
* breakpoints — $2M, $10M, $20M, $80M, $200M — picking the lowest-index
|
|
813
|
+
* tier whose breakpoint the user's volume is still under (tier 5, the
|
|
814
|
+
* lowest fees, if volume meets or exceeds the top breakpoint). Spot markets
|
|
815
|
+
* always use tier 0 (no volume-based discount).
|
|
816
|
+
* @param marketType `MarketType.PERP` or `MarketType.SPOT`.
|
|
817
|
+
* @param now Optional unix timestamp (seconds) to evaluate the rolling volume window as of; defaults to current time.
|
|
818
|
+
* @returns The matching `FeeTier` (numerator/denominator fee fractions and referee-discount fractions).
|
|
819
|
+
*/
|
|
409
820
|
getUserFeeTier(marketType: MarketType, now?: BN): import("./types").FeeTier;
|
|
410
821
|
/**
|
|
411
|
-
* Calculates how much perp fee will be taken for a given sized trade
|
|
412
|
-
*
|
|
413
|
-
*
|
|
822
|
+
* Calculates how much perp fee will be taken for a given sized trade.
|
|
823
|
+
*
|
|
824
|
+
* When `marketIndex` is provided, delegates to `VelocityClient.getMarketFees`
|
|
825
|
+
* for that specific market's taker-fee multiplier (which itself applies the
|
|
826
|
+
* market's `feeAdjustment`, the referee discount, and — when `builderInfo` is
|
|
827
|
+
* passed — the builder fee). Otherwise uses the volume-based fee tier from
|
|
828
|
+
* `getUserFeeTier(MarketType.PERP)`; if the user is a referee (determined
|
|
829
|
+
* from `UserStats.referrerStatus`'s `IsReferred` flag unless `isReferee` is
|
|
830
|
+
* explicitly passed), the tier's `refereeFeeNumerator`/`refereeFeeDenominator`
|
|
831
|
+
* proportion is subtracted from the fee as a discount, and — when `builderInfo`
|
|
832
|
+
* carries a builder code — the builder fee (`quoteAmount * builderFeeTenthBps /
|
|
833
|
+
* 100_000`) is added on top, mirroring the program's `builder_fee` (`math/fees.rs`).
|
|
834
|
+
* @param quoteAmount Trade size, QUOTE_PRECISION (1e6).
|
|
835
|
+
* @param marketIndex Optional perp market to use `VelocityClient.getMarketFees` for instead of the volume-tier fee structure.
|
|
836
|
+
* @param isReferee Optional override for whether the referee discount applies; defaults to the user's actual `UserStats` referred status. Ignored on the `marketIndex` path (which reads referee status inside `getMarketFees`).
|
|
837
|
+
* @param builderInfo Optional builder code; when it carries `builderIdx` + `builderFeeTenthBps`, the builder fee is added on top of the tiered fee.
|
|
838
|
+
* @returns feeForQuote : Precision QUOTE_PRECISION (1e6)
|
|
414
839
|
*/
|
|
415
|
-
|
|
840
|
+
calculatePerpTakerFee(quoteAmount: BN, marketIndex?: number, isReferee?: boolean, builderInfo?: Pick<OrderParams, 'builderIdx' | 'builderFeeTenthBps'>): BN;
|
|
416
841
|
/**
|
|
417
842
|
* Calculates a user's max withdrawal amounts for a spot market. If reduceOnly is true,
|
|
418
|
-
* it will return the max withdrawal amount without opening a liability for the user
|
|
843
|
+
* it will return the max withdrawal amount without opening a liability for the user.
|
|
844
|
+
*
|
|
845
|
+
* Combines three caps: the market-wide withdraw/borrow guard
|
|
846
|
+
* (`calculateWithdrawLimit`, a rolling-window rate limit on the spot
|
|
847
|
+
* market), the user's own deposit balance, and how much their free
|
|
848
|
+
* collateral supports withdrawing/borrowing. If `canBypassWithdrawLimits`
|
|
849
|
+
* returns `canBypass: true` (see that method), the market-wide withdraw
|
|
850
|
+
* limit floor is raised to the user's full deposit amount — letting a
|
|
851
|
+
* small, healthy, always-net-positive depositor withdraw in full even if
|
|
852
|
+
* the market-wide guard would otherwise throttle them.
|
|
419
853
|
* @param marketIndex
|
|
854
|
+
* @param reduceOnly If true, caps the result so the withdrawal cannot open a borrow (never exceeds the user's current deposit). If false/omitted, may return an amount larger than the deposit, up to the user's max allowed new liability.
|
|
420
855
|
* @returns withdrawalLimit : Precision is the token precision for the chosen SpotMarket
|
|
421
856
|
*/
|
|
422
857
|
getWithdrawalLimit(marketIndex: number, reduceOnly?: boolean): BN;
|
|
858
|
+
/**
|
|
859
|
+
* Determines whether the user can bypass the spot market's rolling
|
|
860
|
+
* withdraw-guard limit for `marketIndex`. `canBypass` is true only when
|
|
861
|
+
* **all** of the following hold:
|
|
862
|
+
* - The user currently holds a deposit (not a borrow) in the market.
|
|
863
|
+
* - Their lifetime net deposits (`totalDeposits - totalWithdraws`) are
|
|
864
|
+
* non-negative — they have never net-withdrawn more than they net-deposited.
|
|
865
|
+
* - Their `cumulativeDeposits` for the position has never gone negative
|
|
866
|
+
* (no history of having borrowed and repaid in this market).
|
|
867
|
+
* - Their current deposit amount is below `maxDepositAmount`, i.e. 10% of
|
|
868
|
+
* the spot market's `withdrawGuardThreshold`.
|
|
869
|
+
*
|
|
870
|
+
* This lets a small, well-behaved depositor withdraw their own funds in
|
|
871
|
+
* full even while the market-wide withdraw guard is actively throttling
|
|
872
|
+
* larger movements. Used by `getWithdrawalLimit`.
|
|
873
|
+
* @param marketIndex
|
|
874
|
+
* @returns `canBypass`; `netDeposits` (lifetime `totalDeposits - totalWithdraws`, QUOTE_PRECISION, 1e6); `depositAmount` and `maxDepositAmount`, both in the spot market's own token decimals.
|
|
875
|
+
*/
|
|
423
876
|
canBypassWithdrawLimits(marketIndex: number): {
|
|
424
877
|
canBypass: boolean;
|
|
425
878
|
netDeposits: BN;
|
|
426
879
|
depositAmount: BN;
|
|
427
880
|
maxDepositAmount: BN;
|
|
428
881
|
};
|
|
882
|
+
/**
|
|
883
|
+
* Determines whether the user can be marked idle (excluded from userMap
|
|
884
|
+
* subscriptions by default, and skipped by most keeper crank passes) as of
|
|
885
|
+
* `slot`. Requires: not already idle; inactive for the required window
|
|
886
|
+
* since `lastActiveSlot` (1 hour / 9,000 slots if equity is under $1,000,
|
|
887
|
+
* otherwise 1 week / 1,512,000 slots); not currently being liquidated; and
|
|
888
|
+
* no open perp positions, borrows, spot open orders, or open orders of any kind.
|
|
889
|
+
* @param slot Current slot to evaluate inactivity against.
|
|
890
|
+
*/
|
|
429
891
|
canMakeIdle(slot: BN): boolean;
|
|
892
|
+
/**
|
|
893
|
+
* Determines whether this `User` (sub)account can be deleted (checked
|
|
894
|
+
* before sending a delete-user instruction, to give a friendlier error than
|
|
895
|
+
* an on-chain revert). Returns `canDelete: false` with a `reason` string if
|
|
896
|
+
* any of the following hold: it's a referrer's sub-account 0 (referrers
|
|
897
|
+
* cannot delete their primary account); the account is bankrupt or being
|
|
898
|
+
* liquidated; it has any non-empty perp/spot position or open order; or
|
|
899
|
+
* (when the state account charges an initialize-user fee) the account is a
|
|
900
|
+
* "fresh" account — younger than `ACCOUNT_AGE_DELETION_CUTOFF_SECONDS`,
|
|
901
|
+
* measured from its earliest recorded filler/maker/taker volume timestamp —
|
|
902
|
+
* that is not currently idle.
|
|
903
|
+
* @param userStatsAccount Optional pre-fetched `UserStatsAccount`; defaults to `VelocityClient.getUserStatsOrThrow().getAccount()`.
|
|
904
|
+
* @param now Optional unix timestamp (seconds) to evaluate account age against; defaults to current time.
|
|
905
|
+
*/
|
|
430
906
|
canBeDeleted(userStatsAccount?: UserStatsAccount, now?: BN): {
|
|
431
907
|
canDelete: boolean;
|
|
432
908
|
reason?: string;
|
|
433
909
|
};
|
|
910
|
+
/**
|
|
911
|
+
* Returns the numerically-lowest (i.e. safest) contract/asset tier across
|
|
912
|
+
* the user's active positions — perp tiers from active perp positions,
|
|
913
|
+
* spot tiers only from spot **borrows** (deposits are skipped, since asset
|
|
914
|
+
* tier only restricts borrowing exposure). Defaults to `4` (the
|
|
915
|
+
* second-riskiest tier index) when the user has no positions of that kind —
|
|
916
|
+
* this is a permissive default intended for callers doing tier-safety
|
|
917
|
+
* comparisons (see `perpTierIsAsSafeAs` in `math/tiers`), not a claim that
|
|
918
|
+
* "no position" is itself a risky tier.
|
|
919
|
+
* @returns Lower `perpTier`/`spotTier` numbers indicate a safer tier; see `math/tiers` (`getPerpMarketTierNumber`/`getSpotMarketTierNumber`) for the numbering.
|
|
920
|
+
*/
|
|
434
921
|
getSafestTiers(): {
|
|
435
922
|
perpTier: number;
|
|
436
923
|
spotTier: number;
|
|
437
924
|
};
|
|
925
|
+
/**
|
|
926
|
+
* Breaks down a single perp position's contribution to the margin system
|
|
927
|
+
* as a `HealthComponent`: worst-case base size, its unweighted liability
|
|
928
|
+
* value, the applicable margin ratio (`weight`), and the resulting
|
|
929
|
+
* weighted margin requirement (`weightedValue`, which includes the
|
|
930
|
+
* position's open-order margin add-on). Used to build up
|
|
931
|
+
* `getHealthComponents`' `perpPositions` array (e.g. for UI breakdowns of
|
|
932
|
+
* "what's consuming my margin").
|
|
933
|
+
* @param marginCategory `'Initial'` or `'Maintenance'`.
|
|
934
|
+
* @param perpPosition Position to evaluate.
|
|
935
|
+
* @param oraclePriceData Optional oracle price override for the perp market; defaults to the live oracle price.
|
|
936
|
+
* @param quoteOraclePriceData Optional oracle price override for the quote spot market; defaults to the live oracle price.
|
|
937
|
+
* @param includeOpenOrders Include worst-case open-order exposure. Defaults to true.
|
|
938
|
+
* @returns `size` is BASE_PRECISION (1e9); `value`/`weightedValue` are QUOTE_PRECISION (1e6); `weight` is MARGIN_PRECISION (1e4).
|
|
939
|
+
*/
|
|
438
940
|
getPerpPositionHealth({ marginCategory, perpPosition, oraclePriceData, quoteOraclePriceData, includeOpenOrders, }: {
|
|
439
941
|
marginCategory: MarginCategory;
|
|
440
942
|
perpPosition: PerpPosition;
|
|
@@ -442,6 +944,18 @@ export declare class User {
|
|
|
442
944
|
quoteOraclePriceData?: OraclePriceData;
|
|
443
945
|
includeOpenOrders?: boolean;
|
|
444
946
|
}): HealthComponent;
|
|
947
|
+
/**
|
|
948
|
+
* Builds a full breakdown of every component feeding into the user's
|
|
949
|
+
* margin calculation, for UI/diagnostic display: `deposits` and `borrows`
|
|
950
|
+
* (one `HealthComponent` per non-quote spot market with a nonzero
|
|
951
|
+
* worst-case position, plus a synthetic entry for the net quote balance),
|
|
952
|
+
* `perpPositions` (via `getPerpPositionHealth`, one per active perp
|
|
953
|
+
* position), and `perpPnl` (each position's weighted unrealized PnL — see
|
|
954
|
+
* `getUnrealizedPNL` for the `'Initial'`-margin $100 cap that also applies
|
|
955
|
+
* here).
|
|
956
|
+
* @param marginCategory `'Initial'` or `'Maintenance'` — determines which asset/liability weights are applied.
|
|
957
|
+
* @returns `HealthComponents` with `size`/`value`/`weightedValue` in each entry using the same precisions as `getPerpPositionHealth`.
|
|
958
|
+
*/
|
|
445
959
|
getHealthComponents({ marginCategory, }: {
|
|
446
960
|
marginCategory: MarginCategory;
|
|
447
961
|
}): HealthComponents;
|
|
@@ -456,6 +970,7 @@ export declare class User {
|
|
|
456
970
|
private getOracleDataForSpotMarket;
|
|
457
971
|
/**
|
|
458
972
|
* Get the active perp and spot positions of the user.
|
|
973
|
+
* @returns Market indices only (not full position objects); see `getActivePerpPositions`/`getActiveSpotPositions` for the "active" criteria.
|
|
459
974
|
*/
|
|
460
975
|
getActivePositions(): {
|
|
461
976
|
activePerpPositions: number[];
|
|
@@ -465,11 +980,57 @@ export declare class User {
|
|
|
465
980
|
* Compute the full margin calculation for the user's account.
|
|
466
981
|
* Prioritize using this function instead of calling getMarginRequirement or getTotalCollateral multiple times.
|
|
467
982
|
* Consumers can use this to avoid duplicating work across separate calls.
|
|
983
|
+
*
|
|
984
|
+
* Mirrors the on-chain margin accumulation in `math/margin.rs`, splitting
|
|
985
|
+
* contributions into cross-margin and per-market isolated buckets
|
|
986
|
+
* (`MarginCalculation.isolatedMarginCalculations`, keyed by perp market
|
|
987
|
+
* index — see `isPerpPositionIsolated`) and tracking whether the account
|
|
988
|
+
* holds any isolated-tier liability (`withPerpIsolatedLiability` /
|
|
989
|
+
* `withSpotIsolatedLiability`, consumed by
|
|
990
|
+
* `validateAnyIsolatedTierRequirements`). A perp position's isolated
|
|
991
|
+
* quote-deposit collateral only counts toward that position's own isolated
|
|
992
|
+
* bucket, never the cross-margin total.
|
|
993
|
+
*
|
|
994
|
+
* Also enforces pool-id consistency: every spot/perp position's market must
|
|
995
|
+
* match the user's `poolId`, **except** a pool-1 user is allowed to hold a
|
|
996
|
+
* quote-asset deposit (not borrow) even though the quote spot market itself
|
|
997
|
+
* belongs to pool 0 — throws `InvalidPoolId: ...` otherwise.
|
|
998
|
+
* @param marginCategory `'Initial'` or `'Maintenance'`. Defaults to `'Initial'`.
|
|
999
|
+
* @param opts.strict Apply TWAP-bounded (`StrictOraclePrice`) oracle pricing, mirroring the on-chain strict-price gating. Defaults to false.
|
|
1000
|
+
* @param opts.includeOpenOrders Include open orders' worst-case impact. Defaults to true.
|
|
1001
|
+
* @param opts.liquidationBufferMap Per-scope buffer (MARGIN_PRECISION, 1e4) to pad margin requirements with — `'cross'` for the cross-margin bucket, or a perp market index for that market's isolated bucket. See `getLiquidationBuffer`.
|
|
468
1002
|
*/
|
|
469
1003
|
getMarginCalculation(marginCategory?: MarginCategory, opts?: {
|
|
470
1004
|
strict?: boolean;
|
|
471
1005
|
includeOpenOrders?: boolean;
|
|
472
1006
|
liquidationBufferMap?: Map<number | 'cross', BN>;
|
|
473
1007
|
}): MarginCalculation;
|
|
1008
|
+
/**
|
|
1009
|
+
* Returns true if `perpPosition` was opened/is held under isolated margin
|
|
1010
|
+
* (`PositionFlag.IsolatedPosition` set) — segregated to its own margin
|
|
1011
|
+
* bucket (see `getMarginCalculation`) rather than sharing cross-margin
|
|
1012
|
+
* collateral with the rest of the account.
|
|
1013
|
+
*/
|
|
474
1014
|
isPerpPositionIsolated(perpPosition: PerpPosition): boolean;
|
|
1015
|
+
/**
|
|
1016
|
+
* Pre-flight check for `IsolatedAssetTierViolation`: mirrors
|
|
1017
|
+
* `validate_any_isolated_tier_requirements` in `math/margin.rs`. A user
|
|
1018
|
+
* holding an isolated-tier perp or spot liability may not simultaneously
|
|
1019
|
+
* carry other liabilities (besides a single usdc borrow, for a perp
|
|
1020
|
+
* isolated liability), unless they are reduce-only.
|
|
1021
|
+
*
|
|
1022
|
+
* Specifically, if `calculation.withPerpIsolatedLiability` is set (an
|
|
1023
|
+
* isolated-*contract-tier* perp liability exists) and the user is not
|
|
1024
|
+
* `UserStatus.REDUCE_ONLY`: more than one perp liability is invalid; margin
|
|
1025
|
+
* trading enabled is invalid; and any spot liability other than a single
|
|
1026
|
+
* USDC borrow is invalid. If `calculation.withSpotIsolatedLiability` is set
|
|
1027
|
+
* (an isolated-*asset-tier* spot liability exists) and not reduce-only: any
|
|
1028
|
+
* perp liability, or more than the one isolated-tier spot liability, is invalid.
|
|
1029
|
+
* @param calculation A `MarginCalculation` from `getMarginCalculation` (any margin category — only the isolated-liability flags and liability counts are read).
|
|
1030
|
+
* @returns `{ valid: true }` if the account satisfies isolated-tier requirements, else `{ valid: false, reason }` with a human-readable reason.
|
|
1031
|
+
*/
|
|
1032
|
+
validateAnyIsolatedTierRequirements(calculation: MarginCalculation): {
|
|
1033
|
+
valid: boolean;
|
|
1034
|
+
reason?: string;
|
|
1035
|
+
};
|
|
475
1036
|
}
|