@velocity-exchange/sdk 0.3.0 → 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 +51 -0
- 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 +2136 -4
- package/lib/browser/adminClient.js +2150 -4
- 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 +4 -4
- package/lib/browser/idl/velocity.json +4 -4
- 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 +91 -0
- package/lib/browser/math/exchangeStatus.js +106 -3
- 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 -10
- package/lib/browser/math/orders.js +130 -19
- 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 +31 -0
- 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 +103 -2
- 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 +56 -0
- 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/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 +781 -13
- package/lib/browser/types.js +126 -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 +3322 -215
- package/lib/browser/velocityClient.js +3412 -245
- 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 +2136 -4
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2150 -4
- 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 +4 -4
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +4 -4
- 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 +91 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +106 -3
- 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 -10
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +130 -19
- 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 +31 -0
- 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 +103 -2
- 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 +56 -0
- 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/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 +781 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +126 -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 +3322 -215
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3412 -245
- 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 +2156 -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 +4 -4
- package/src/idl/velocity.ts +4 -4
- 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 +117 -2
- 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 +141 -19
- 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 +31 -0
- 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 +104 -2
- 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 +56 -0
- 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/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 +777 -24
- 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 +3439 -249
- 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/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
|
@@ -2,40 +2,160 @@ import { BN } from '../isomorphic/anchor';
|
|
|
2
2
|
import { PerpMarketAccount, MarginCategory, SpotMarketAccount } from '../types';
|
|
3
3
|
import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
|
|
4
4
|
/**
|
|
5
|
-
* Calculates market mark price
|
|
5
|
+
* Calculates the perp market's current mark (mid) price from its raw (non-spread) AMM reserves,
|
|
6
|
+
* after first repegging the AMM to the oracle price (`calculateUpdatedAMM`) if `mmOraclePriceData`
|
|
7
|
+
* is provided.
|
|
6
8
|
*
|
|
7
|
-
* @param market
|
|
8
|
-
* @
|
|
9
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
10
|
+
* @param {MMOraclePriceData} [mmOraclePriceData] - Current MM oracle price data; omit to price the
|
|
11
|
+
* AMM's stored reserves as-is without repegging
|
|
12
|
+
* @return {BN} The mark price, PRICE_PRECISION (1e6)
|
|
9
13
|
*/
|
|
10
14
|
export declare function calculateReservePrice(market: PerpMarketAccount, mmOraclePriceData?: MMOraclePriceData): BN;
|
|
11
15
|
/**
|
|
12
|
-
* Calculates market bid price
|
|
16
|
+
* Calculates the perp market's current bid price — the price a taker sells into — by repegging
|
|
17
|
+
* the AMM to the oracle price and pricing the short-side spread reserves.
|
|
13
18
|
*
|
|
14
|
-
* @param market
|
|
15
|
-
* @
|
|
19
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
20
|
+
* @param {MMOraclePriceData} [mmOraclePriceData] - Current MM oracle price data, used both to
|
|
21
|
+
* repeg the AMM and to compute the spread reserves
|
|
22
|
+
* @param {BN} [latestSlot] - Current slot, used for reference-price-offset smoothing in the
|
|
23
|
+
* spread calculation
|
|
24
|
+
* @return {BN} The bid price, PRICE_PRECISION (1e6)
|
|
16
25
|
*/
|
|
17
26
|
export declare function calculateBidPrice(market: PerpMarketAccount, mmOraclePriceData?: MMOraclePriceData, latestSlot?: BN): BN;
|
|
18
27
|
/**
|
|
19
|
-
* Calculates market ask price
|
|
28
|
+
* Calculates the perp market's current ask price — the price a taker buys at — by repegging
|
|
29
|
+
* the AMM to the oracle price and pricing the long-side spread reserves.
|
|
20
30
|
*
|
|
21
|
-
* @param market
|
|
22
|
-
* @
|
|
31
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
32
|
+
* @param {MMOraclePriceData} [mmOraclePriceData] - Current MM oracle price data, used both to
|
|
33
|
+
* repeg the AMM and to compute the spread reserves
|
|
34
|
+
* @param {BN} [latestSlot] - Current slot, used for reference-price-offset smoothing in the
|
|
35
|
+
* spread calculation
|
|
36
|
+
* @return {BN} The ask price, PRICE_PRECISION (1e6)
|
|
23
37
|
*/
|
|
24
38
|
export declare function calculateAskPrice(market: PerpMarketAccount, mmOraclePriceData?: MMOraclePriceData, latestSlot?: BN): BN;
|
|
39
|
+
/**
|
|
40
|
+
* Calculates the signed spread between a price and the oracle price.
|
|
41
|
+
*
|
|
42
|
+
* @param {BN} price - A price, PRICE_PRECISION (1e6)
|
|
43
|
+
* @param {OraclePriceData} oraclePriceData - Oracle price data, PRICE_PRECISION (1e6)
|
|
44
|
+
* @return {BN} `price - oraclePriceData.price`, PRICE_PRECISION (1e6)
|
|
45
|
+
*/
|
|
25
46
|
export declare function calculateOracleSpread(price: BN, oraclePriceData: OraclePriceData): BN;
|
|
47
|
+
/**
|
|
48
|
+
* Calculates the effective margin ratio for a perp position of a given size, applying the
|
|
49
|
+
* IMF size premium on top of the market's base initial/maintenance ratio. Returns 0 for markets
|
|
50
|
+
* in `'Settlement'` status (no margin is required once a market is settling out).
|
|
51
|
+
*
|
|
52
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
53
|
+
* @param {BN} size - The position's base asset amount (`abs()` semantics expected), BASE_PRECISION (1e9)
|
|
54
|
+
* @param {MarginCategory} marginCategory - `'Initial'`, `'Maintenance'`, or `'Fill'`; throws for any other value.
|
|
55
|
+
* `'Fill'` uses `(marginRatioInitial + marginRatioMaintenance) / 2` (integer division), mirroring
|
|
56
|
+
* `PerpMarket::get_margin_ratio`.
|
|
57
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `MARGIN_PRECISION` (1e4)
|
|
58
|
+
* units; only applied for `'Initial'`, where the looser (higher) of the computed ratio and
|
|
59
|
+
* this value is used
|
|
60
|
+
* @return {number} The margin ratio, scaled by `MARGIN_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
61
|
+
*/
|
|
26
62
|
export declare function calculateMarketMarginRatio(market: PerpMarketAccount, size: BN, marginCategory: MarginCategory, customMarginRatio?: number): number;
|
|
63
|
+
/**
|
|
64
|
+
* Calculates the asset weight applied to a perp position's unrealized (positive) PnL when it
|
|
65
|
+
* counts toward collateral, mirroring `PerpMarket::get_unrealized_asset_weight`'s
|
|
66
|
+
* `Initial`/`Maintenance` branches. Only call this for a positive `unrealizedPnl` — the on-chain
|
|
67
|
+
* equivalent always weights a negative unrealized PnL at `SPOT_MARKET_WEIGHT_PRECISION` (100%,
|
|
68
|
+
* i.e. it's not discounted since it's a liability, not an asset).
|
|
69
|
+
*
|
|
70
|
+
* `'Initial'` weighting applies two independent discounts: (1) if `calculateNetUserPnlImbalance`
|
|
71
|
+
* (net user PnL less the pnl pool and a fifth of the fee pool) exceeds `unrealizedPnlMaxImbalance`,
|
|
72
|
+
* the base weight is first scaled down by `unrealizedPnlMaxImbalance / netUnsettledPnl`; (2) the
|
|
73
|
+
* IMF size-discount (`calculateSizeDiscountAssetWeight`) is then applied to the position's own
|
|
74
|
+
* `unrealizedPnl` size. Two notes for exact parity with the on-chain `get_unrealized_asset_weight`:
|
|
75
|
+
* (a) the Rust gate compares the *raw* `calculate_net_user_pnl` (no pool subtraction) against
|
|
76
|
+
* `unrealized_pnl_max_imbalance`, whereas step (1) here nets out the pnl/fee pool first — a
|
|
77
|
+
* looser (more forgiving) trigger condition; (b) the Rust size-discount rescales `unrealized_pnl`
|
|
78
|
+
* by `AMM_TO_QUOTE_PRECISION_RATIO` (1e3) before step (2), whereas this passes `unrealizedPnl`
|
|
79
|
+
* (QUOTE_PRECISION, 1e6) directly — `calculateSizeDiscountAssetWeight`'s `size` parameter is
|
|
80
|
+
* otherwise documented as `AMM_RESERVE_PRECISION` (1e9) elsewhere in the SDK.
|
|
81
|
+
*
|
|
82
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
83
|
+
* @param {SpotMarketAccount} quoteSpotMarket - The market's quote spot market account
|
|
84
|
+
* @param {BN} unrealizedPnl - The position's unrealized PnL, expected positive, QUOTE_PRECISION (1e6)
|
|
85
|
+
* @param {MarginCategory} marginCategory - `'Initial'`, `'Maintenance'`, or `'Fill'` (Fill is weighted identically to Initial)
|
|
86
|
+
* @param {Pick<OraclePriceData, 'price'>} oraclePriceData - Oracle price, PRICE_PRECISION (1e6),
|
|
87
|
+
* used only for the imbalance check's `calculateNetUserPnlImbalance` call
|
|
88
|
+
* @return {BN} The asset weight, scaled by `SPOT_MARKET_WEIGHT_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
89
|
+
*/
|
|
27
90
|
export declare function calculateUnrealizedAssetWeight(market: PerpMarketAccount, quoteSpotMarket: SpotMarketAccount, unrealizedPnl: BN, marginCategory: MarginCategory, oraclePriceData: Pick<OraclePriceData, 'price'>): BN;
|
|
91
|
+
/**
|
|
92
|
+
* Calculates the perp market's pnl pool balance — the quote tokens on hand to pay out settled
|
|
93
|
+
* user profits before insurance fund draws are needed.
|
|
94
|
+
*
|
|
95
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
96
|
+
* @param {SpotMarketAccount} spotMarket - The market's quote spot market account
|
|
97
|
+
* @return {BN} The pnl pool token amount, scaled by `spotMarket.decimals` (quote decimals)
|
|
98
|
+
*/
|
|
28
99
|
export declare function calculateMarketAvailablePNL(perpMarket: PerpMarketAccount, spotMarket: SpotMarketAccount): BN;
|
|
100
|
+
/**
|
|
101
|
+
* Calculates the maximum insurance the market could still draw to cover a PnL deficit: the
|
|
102
|
+
* remaining `quoteMaxInsurance` allocation not yet claimed, plus the AMM's own fee pool (which is
|
|
103
|
+
* drawn down before external insurance). `spotMarket` must be the quote spot market — asserts
|
|
104
|
+
* otherwise.
|
|
105
|
+
*
|
|
106
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
107
|
+
* @param {SpotMarketAccount} spotMarket - The quote spot market account (must have
|
|
108
|
+
* `marketIndex === QUOTE_SPOT_MARKET_INDEX`)
|
|
109
|
+
* @return {BN} `quoteMaxInsurance - quoteSettledInsurance + ammFeePoolTokenAmount`, scaled by
|
|
110
|
+
* quote decimals
|
|
111
|
+
*/
|
|
29
112
|
export declare function calculateMarketMaxAvailableInsurance(perpMarket: PerpMarketAccount, spotMarket: SpotMarketAccount): BN;
|
|
113
|
+
/**
|
|
114
|
+
* Calculates the net unrealized + unsettled PnL owed to all users of a perp market at a given
|
|
115
|
+
* oracle price, mirroring `calculate_net_user_pnl`: the AMM's net counterparty position valued
|
|
116
|
+
* at `oraclePriceData.price`, plus the market's cost basis (`quoteAssetAmount +
|
|
117
|
+
* netUnsettledFundingPnl`). This is the quantity the pnl pool + insurance fund must be able to
|
|
118
|
+
* cover across all users.
|
|
119
|
+
*
|
|
120
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
121
|
+
* @param {Pick<OraclePriceData, 'price'>} oraclePriceData - Oracle price, PRICE_PRECISION (1e6)
|
|
122
|
+
* (callers typically pass the live price or a TWAP depending on the check being performed)
|
|
123
|
+
* @return {BN} Net user PnL, QUOTE_PRECISION (1e6); positive means users are net owed
|
|
124
|
+
*/
|
|
30
125
|
export declare function calculateNetUserPnl(perpMarket: PerpMarketAccount, oraclePriceData: Pick<OraclePriceData, 'price'>): BN;
|
|
126
|
+
/**
|
|
127
|
+
* Calculates how far `calculateNetUserPnl` exceeds the funds already on hand to pay it out (the
|
|
128
|
+
* pnl pool, plus by default a 20% slice of the AMM fee pool as a conservative haircut on funds
|
|
129
|
+
* not yet swept into the pnl pool). A positive result means the market is short of pnl-pool
|
|
130
|
+
* funds by that amount; a negative result means the pnl pool has surplus.
|
|
131
|
+
*
|
|
132
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
133
|
+
* @param {SpotMarketAccount} spotMarket - The market's quote spot market account
|
|
134
|
+
* @param {Pick<OraclePriceData, 'price'>} oraclePriceData - Oracle price, PRICE_PRECISION (1e6),
|
|
135
|
+
* passed through to `calculateNetUserPnl`
|
|
136
|
+
* @param {boolean} [applyFeePoolDiscount] - When true (default), only 1/5 of the AMM fee pool
|
|
137
|
+
* counts toward available funds; when false, the full fee pool counts
|
|
138
|
+
* @return {BN} `netUserPnl - (pnlPool + feePoolContribution)`, QUOTE_PRECISION (1e6)
|
|
139
|
+
*/
|
|
31
140
|
export declare function calculateNetUserPnlImbalance(perpMarket: PerpMarketAccount, spotMarket: SpotMarketAccount, oraclePriceData: Pick<OraclePriceData, 'price'>, applyFeePoolDiscount?: boolean): BN;
|
|
32
141
|
/**
|
|
33
|
-
* Calculates
|
|
34
|
-
*
|
|
142
|
+
* Calculates the price used to evaluate trigger (stop/take-profit) orders for a perp market,
|
|
143
|
+
* mirroring the Rust `get_trigger_price`. When `useMedianPrice` is true, the trigger price is the
|
|
144
|
+
* median of three candidates — the last fill price (or oracle price if there's been no fill), the
|
|
145
|
+
* oracle price adjusted by the implied funding basis, and the oracle price adjusted by the 5min
|
|
146
|
+
* mark/oracle TWAP basis — then clamped to within a contract-tier-dependent band around the raw
|
|
147
|
+
* oracle price (tier A/B: 20bps, tier C: 100bps, others: 250bps) via `clampTriggerPrice`. This
|
|
148
|
+
* resists a single manipulated print (last fill or a momentary oracle/mark divergence) from
|
|
149
|
+
* triggering orders it shouldn't. When `useMedianPrice` is false, the raw oracle price is used
|
|
150
|
+
* directly with no smoothing.
|
|
35
151
|
*
|
|
36
|
-
* @param market - The perp market account
|
|
37
|
-
* @param oraclePrice - Current oracle price (
|
|
38
|
-
*
|
|
39
|
-
* @
|
|
152
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
153
|
+
* @param {BN} oraclePrice - Current oracle price, PRICE_PRECISION (1e6); its absolute value is
|
|
154
|
+
* used throughout
|
|
155
|
+
* @param {BN} now - Current unix timestamp, seconds; used to prorate the implied funding basis
|
|
156
|
+
* over the time remaining until the next funding update
|
|
157
|
+
* @param {boolean} useMedianPrice - Whether to apply the median-of-three + clamp smoothing, or
|
|
158
|
+
* use the raw oracle price directly
|
|
159
|
+
* @returns {BN} The trigger price, PRICE_PRECISION (1e6)
|
|
40
160
|
*/
|
|
41
161
|
export declare function getTriggerPrice(market: PerpMarketAccount, oraclePrice: BN, now: BN, useMedianPrice: boolean): BN;
|
|
@@ -9,10 +9,14 @@ const numericConstants_1 = require("../constants/numericConstants");
|
|
|
9
9
|
const spotBalance_1 = require("./spotBalance");
|
|
10
10
|
const assert_1 = require("../assert/assert");
|
|
11
11
|
/**
|
|
12
|
-
* Calculates market mark price
|
|
12
|
+
* Calculates the perp market's current mark (mid) price from its raw (non-spread) AMM reserves,
|
|
13
|
+
* after first repegging the AMM to the oracle price (`calculateUpdatedAMM`) if `mmOraclePriceData`
|
|
14
|
+
* is provided.
|
|
13
15
|
*
|
|
14
|
-
* @param market
|
|
15
|
-
* @
|
|
16
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
17
|
+
* @param {MMOraclePriceData} [mmOraclePriceData] - Current MM oracle price data; omit to price the
|
|
18
|
+
* AMM's stored reserves as-is without repegging
|
|
19
|
+
* @return {BN} The mark price, PRICE_PRECISION (1e6)
|
|
16
20
|
*/
|
|
17
21
|
function calculateReservePrice(market, mmOraclePriceData) {
|
|
18
22
|
const newAmm = (0, amm_1.calculateUpdatedAMM)(market.amm, mmOraclePriceData);
|
|
@@ -20,10 +24,15 @@ function calculateReservePrice(market, mmOraclePriceData) {
|
|
|
20
24
|
}
|
|
21
25
|
exports.calculateReservePrice = calculateReservePrice;
|
|
22
26
|
/**
|
|
23
|
-
* Calculates market bid price
|
|
27
|
+
* Calculates the perp market's current bid price — the price a taker sells into — by repegging
|
|
28
|
+
* the AMM to the oracle price and pricing the short-side spread reserves.
|
|
24
29
|
*
|
|
25
|
-
* @param market
|
|
26
|
-
* @
|
|
30
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
31
|
+
* @param {MMOraclePriceData} [mmOraclePriceData] - Current MM oracle price data, used both to
|
|
32
|
+
* repeg the AMM and to compute the spread reserves
|
|
33
|
+
* @param {BN} [latestSlot] - Current slot, used for reference-price-offset smoothing in the
|
|
34
|
+
* spread calculation
|
|
35
|
+
* @return {BN} The bid price, PRICE_PRECISION (1e6)
|
|
27
36
|
*/
|
|
28
37
|
function calculateBidPrice(market, mmOraclePriceData, latestSlot) {
|
|
29
38
|
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, market.marketStats, types_1.PositionDirection.SHORT, mmOraclePriceData, latestSlot);
|
|
@@ -31,20 +40,47 @@ function calculateBidPrice(market, mmOraclePriceData, latestSlot) {
|
|
|
31
40
|
}
|
|
32
41
|
exports.calculateBidPrice = calculateBidPrice;
|
|
33
42
|
/**
|
|
34
|
-
* Calculates market ask price
|
|
43
|
+
* Calculates the perp market's current ask price — the price a taker buys at — by repegging
|
|
44
|
+
* the AMM to the oracle price and pricing the long-side spread reserves.
|
|
35
45
|
*
|
|
36
|
-
* @param market
|
|
37
|
-
* @
|
|
46
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
47
|
+
* @param {MMOraclePriceData} [mmOraclePriceData] - Current MM oracle price data, used both to
|
|
48
|
+
* repeg the AMM and to compute the spread reserves
|
|
49
|
+
* @param {BN} [latestSlot] - Current slot, used for reference-price-offset smoothing in the
|
|
50
|
+
* spread calculation
|
|
51
|
+
* @return {BN} The ask price, PRICE_PRECISION (1e6)
|
|
38
52
|
*/
|
|
39
53
|
function calculateAskPrice(market, mmOraclePriceData, latestSlot) {
|
|
40
54
|
const { baseAssetReserve, quoteAssetReserve, newPeg } = (0, amm_1.calculateUpdatedAMMSpreadReserves)(market.amm, market.marketStats, types_1.PositionDirection.LONG, mmOraclePriceData, latestSlot);
|
|
41
55
|
return (0, amm_1.calculatePrice)(baseAssetReserve, quoteAssetReserve, newPeg);
|
|
42
56
|
}
|
|
43
57
|
exports.calculateAskPrice = calculateAskPrice;
|
|
58
|
+
/**
|
|
59
|
+
* Calculates the signed spread between a price and the oracle price.
|
|
60
|
+
*
|
|
61
|
+
* @param {BN} price - A price, PRICE_PRECISION (1e6)
|
|
62
|
+
* @param {OraclePriceData} oraclePriceData - Oracle price data, PRICE_PRECISION (1e6)
|
|
63
|
+
* @return {BN} `price - oraclePriceData.price`, PRICE_PRECISION (1e6)
|
|
64
|
+
*/
|
|
44
65
|
function calculateOracleSpread(price, oraclePriceData) {
|
|
45
66
|
return price.sub(oraclePriceData.price);
|
|
46
67
|
}
|
|
47
68
|
exports.calculateOracleSpread = calculateOracleSpread;
|
|
69
|
+
/**
|
|
70
|
+
* Calculates the effective margin ratio for a perp position of a given size, applying the
|
|
71
|
+
* IMF size premium on top of the market's base initial/maintenance ratio. Returns 0 for markets
|
|
72
|
+
* in `'Settlement'` status (no margin is required once a market is settling out).
|
|
73
|
+
*
|
|
74
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
75
|
+
* @param {BN} size - The position's base asset amount (`abs()` semantics expected), BASE_PRECISION (1e9)
|
|
76
|
+
* @param {MarginCategory} marginCategory - `'Initial'`, `'Maintenance'`, or `'Fill'`; throws for any other value.
|
|
77
|
+
* `'Fill'` uses `(marginRatioInitial + marginRatioMaintenance) / 2` (integer division), mirroring
|
|
78
|
+
* `PerpMarket::get_margin_ratio`.
|
|
79
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `MARGIN_PRECISION` (1e4)
|
|
80
|
+
* units; only applied for `'Initial'`, where the looser (higher) of the computed ratio and
|
|
81
|
+
* this value is used
|
|
82
|
+
* @return {number} The margin ratio, scaled by `MARGIN_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
83
|
+
*/
|
|
48
84
|
function calculateMarketMarginRatio(market, size, marginCategory, customMarginRatio = 0) {
|
|
49
85
|
if (market.status === 'Settlement')
|
|
50
86
|
return 0;
|
|
@@ -53,6 +89,10 @@ function calculateMarketMarginRatio(market, size, marginCategory, customMarginRa
|
|
|
53
89
|
case 'Initial':
|
|
54
90
|
defaultMarginRatio = market.marginRatioInitial;
|
|
55
91
|
break;
|
|
92
|
+
case 'Fill':
|
|
93
|
+
// mirrors PerpMarket::get_margin_ratio's Fill branch: integer-divided average
|
|
94
|
+
defaultMarginRatio = Math.floor((market.marginRatioInitial + market.marginRatioMaintenance) / 2);
|
|
95
|
+
break;
|
|
56
96
|
case 'Maintenance':
|
|
57
97
|
defaultMarginRatio = market.marginRatioMaintenance;
|
|
58
98
|
break;
|
|
@@ -68,10 +108,40 @@ function calculateMarketMarginRatio(market, size, marginCategory, customMarginRa
|
|
|
68
108
|
return marginRatio;
|
|
69
109
|
}
|
|
70
110
|
exports.calculateMarketMarginRatio = calculateMarketMarginRatio;
|
|
111
|
+
/**
|
|
112
|
+
* Calculates the asset weight applied to a perp position's unrealized (positive) PnL when it
|
|
113
|
+
* counts toward collateral, mirroring `PerpMarket::get_unrealized_asset_weight`'s
|
|
114
|
+
* `Initial`/`Maintenance` branches. Only call this for a positive `unrealizedPnl` — the on-chain
|
|
115
|
+
* equivalent always weights a negative unrealized PnL at `SPOT_MARKET_WEIGHT_PRECISION` (100%,
|
|
116
|
+
* i.e. it's not discounted since it's a liability, not an asset).
|
|
117
|
+
*
|
|
118
|
+
* `'Initial'` weighting applies two independent discounts: (1) if `calculateNetUserPnlImbalance`
|
|
119
|
+
* (net user PnL less the pnl pool and a fifth of the fee pool) exceeds `unrealizedPnlMaxImbalance`,
|
|
120
|
+
* the base weight is first scaled down by `unrealizedPnlMaxImbalance / netUnsettledPnl`; (2) the
|
|
121
|
+
* IMF size-discount (`calculateSizeDiscountAssetWeight`) is then applied to the position's own
|
|
122
|
+
* `unrealizedPnl` size. Two notes for exact parity with the on-chain `get_unrealized_asset_weight`:
|
|
123
|
+
* (a) the Rust gate compares the *raw* `calculate_net_user_pnl` (no pool subtraction) against
|
|
124
|
+
* `unrealized_pnl_max_imbalance`, whereas step (1) here nets out the pnl/fee pool first — a
|
|
125
|
+
* looser (more forgiving) trigger condition; (b) the Rust size-discount rescales `unrealized_pnl`
|
|
126
|
+
* by `AMM_TO_QUOTE_PRECISION_RATIO` (1e3) before step (2), whereas this passes `unrealizedPnl`
|
|
127
|
+
* (QUOTE_PRECISION, 1e6) directly — `calculateSizeDiscountAssetWeight`'s `size` parameter is
|
|
128
|
+
* otherwise documented as `AMM_RESERVE_PRECISION` (1e9) elsewhere in the SDK.
|
|
129
|
+
*
|
|
130
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
131
|
+
* @param {SpotMarketAccount} quoteSpotMarket - The market's quote spot market account
|
|
132
|
+
* @param {BN} unrealizedPnl - The position's unrealized PnL, expected positive, QUOTE_PRECISION (1e6)
|
|
133
|
+
* @param {MarginCategory} marginCategory - `'Initial'`, `'Maintenance'`, or `'Fill'` (Fill is weighted identically to Initial)
|
|
134
|
+
* @param {Pick<OraclePriceData, 'price'>} oraclePriceData - Oracle price, PRICE_PRECISION (1e6),
|
|
135
|
+
* used only for the imbalance check's `calculateNetUserPnlImbalance` call
|
|
136
|
+
* @return {BN} The asset weight, scaled by `SPOT_MARKET_WEIGHT_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
137
|
+
*/
|
|
71
138
|
function calculateUnrealizedAssetWeight(market, quoteSpotMarket, unrealizedPnl, marginCategory, oraclePriceData) {
|
|
72
139
|
let assetWeight;
|
|
73
140
|
switch (marginCategory) {
|
|
141
|
+
// mirrors get_unrealized_asset_weight: Fill is treated like Initial (same base
|
|
142
|
+
// weight, same imbalance + size-discount adjustments).
|
|
74
143
|
case 'Initial':
|
|
144
|
+
case 'Fill':
|
|
75
145
|
assetWeight = new anchor_1.BN(market.unrealizedPnlInitialAssetWeight);
|
|
76
146
|
if (market.unrealizedPnlMaxImbalance.gt(numericConstants_1.ZERO)) {
|
|
77
147
|
const netUnsettledPnl = calculateNetUserPnlImbalance(market, quoteSpotMarket, oraclePriceData);
|
|
@@ -86,14 +156,36 @@ function calculateUnrealizedAssetWeight(market, quoteSpotMarket, unrealizedPnl,
|
|
|
86
156
|
case 'Maintenance':
|
|
87
157
|
assetWeight = new anchor_1.BN(market.unrealizedPnlMaintenanceAssetWeight);
|
|
88
158
|
break;
|
|
159
|
+
default:
|
|
160
|
+
throw new Error('Invalid margin category');
|
|
89
161
|
}
|
|
90
162
|
return assetWeight;
|
|
91
163
|
}
|
|
92
164
|
exports.calculateUnrealizedAssetWeight = calculateUnrealizedAssetWeight;
|
|
165
|
+
/**
|
|
166
|
+
* Calculates the perp market's pnl pool balance — the quote tokens on hand to pay out settled
|
|
167
|
+
* user profits before insurance fund draws are needed.
|
|
168
|
+
*
|
|
169
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
170
|
+
* @param {SpotMarketAccount} spotMarket - The market's quote spot market account
|
|
171
|
+
* @return {BN} The pnl pool token amount, scaled by `spotMarket.decimals` (quote decimals)
|
|
172
|
+
*/
|
|
93
173
|
function calculateMarketAvailablePNL(perpMarket, spotMarket) {
|
|
94
174
|
return (0, spotBalance_1.getTokenAmount)(perpMarket.pnlPool.scaledBalance, spotMarket, types_1.SpotBalanceType.DEPOSIT);
|
|
95
175
|
}
|
|
96
176
|
exports.calculateMarketAvailablePNL = calculateMarketAvailablePNL;
|
|
177
|
+
/**
|
|
178
|
+
* Calculates the maximum insurance the market could still draw to cover a PnL deficit: the
|
|
179
|
+
* remaining `quoteMaxInsurance` allocation not yet claimed, plus the AMM's own fee pool (which is
|
|
180
|
+
* drawn down before external insurance). `spotMarket` must be the quote spot market — asserts
|
|
181
|
+
* otherwise.
|
|
182
|
+
*
|
|
183
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
184
|
+
* @param {SpotMarketAccount} spotMarket - The quote spot market account (must have
|
|
185
|
+
* `marketIndex === QUOTE_SPOT_MARKET_INDEX`)
|
|
186
|
+
* @return {BN} `quoteMaxInsurance - quoteSettledInsurance + ammFeePoolTokenAmount`, scaled by
|
|
187
|
+
* quote decimals
|
|
188
|
+
*/
|
|
97
189
|
function calculateMarketMaxAvailableInsurance(perpMarket, spotMarket) {
|
|
98
190
|
(0, assert_1.assert)(spotMarket.marketIndex == numericConstants_1.QUOTE_SPOT_MARKET_INDEX);
|
|
99
191
|
// todo: insuranceFundAllocation technically not guaranteed to be in Insurance Fund
|
|
@@ -102,6 +194,18 @@ function calculateMarketMaxAvailableInsurance(perpMarket, spotMarket) {
|
|
|
102
194
|
return insuranceFundAllocation.add(ammFeePool);
|
|
103
195
|
}
|
|
104
196
|
exports.calculateMarketMaxAvailableInsurance = calculateMarketMaxAvailableInsurance;
|
|
197
|
+
/**
|
|
198
|
+
* Calculates the net unrealized + unsettled PnL owed to all users of a perp market at a given
|
|
199
|
+
* oracle price, mirroring `calculate_net_user_pnl`: the AMM's net counterparty position valued
|
|
200
|
+
* at `oraclePriceData.price`, plus the market's cost basis (`quoteAssetAmount +
|
|
201
|
+
* netUnsettledFundingPnl`). This is the quantity the pnl pool + insurance fund must be able to
|
|
202
|
+
* cover across all users.
|
|
203
|
+
*
|
|
204
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
205
|
+
* @param {Pick<OraclePriceData, 'price'>} oraclePriceData - Oracle price, PRICE_PRECISION (1e6)
|
|
206
|
+
* (callers typically pass the live price or a TWAP depending on the check being performed)
|
|
207
|
+
* @return {BN} Net user PnL, QUOTE_PRECISION (1e6); positive means users are net owed
|
|
208
|
+
*/
|
|
105
209
|
function calculateNetUserPnl(perpMarket, oraclePriceData) {
|
|
106
210
|
const netUserPositionValue = perpMarket.amm.baseAssetAmountWithAmm
|
|
107
211
|
.mul(oraclePriceData.price)
|
|
@@ -112,6 +216,20 @@ function calculateNetUserPnl(perpMarket, oraclePriceData) {
|
|
|
112
216
|
return netUserPnl;
|
|
113
217
|
}
|
|
114
218
|
exports.calculateNetUserPnl = calculateNetUserPnl;
|
|
219
|
+
/**
|
|
220
|
+
* Calculates how far `calculateNetUserPnl` exceeds the funds already on hand to pay it out (the
|
|
221
|
+
* pnl pool, plus by default a 20% slice of the AMM fee pool as a conservative haircut on funds
|
|
222
|
+
* not yet swept into the pnl pool). A positive result means the market is short of pnl-pool
|
|
223
|
+
* funds by that amount; a negative result means the pnl pool has surplus.
|
|
224
|
+
*
|
|
225
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
226
|
+
* @param {SpotMarketAccount} spotMarket - The market's quote spot market account
|
|
227
|
+
* @param {Pick<OraclePriceData, 'price'>} oraclePriceData - Oracle price, PRICE_PRECISION (1e6),
|
|
228
|
+
* passed through to `calculateNetUserPnl`
|
|
229
|
+
* @param {boolean} [applyFeePoolDiscount] - When true (default), only 1/5 of the AMM fee pool
|
|
230
|
+
* counts toward available funds; when false, the full fee pool counts
|
|
231
|
+
* @return {BN} `netUserPnl - (pnlPool + feePoolContribution)`, QUOTE_PRECISION (1e6)
|
|
232
|
+
*/
|
|
115
233
|
function calculateNetUserPnlImbalance(perpMarket, spotMarket, oraclePriceData, applyFeePoolDiscount = true) {
|
|
116
234
|
const netUserPnl = calculateNetUserPnl(perpMarket, oraclePriceData);
|
|
117
235
|
const pnlPool = (0, spotBalance_1.getTokenAmount)(perpMarket.pnlPool.scaledBalance, spotMarket, types_1.SpotBalanceType.DEPOSIT);
|
|
@@ -124,13 +242,24 @@ function calculateNetUserPnlImbalance(perpMarket, spotMarket, oraclePriceData, a
|
|
|
124
242
|
}
|
|
125
243
|
exports.calculateNetUserPnlImbalance = calculateNetUserPnlImbalance;
|
|
126
244
|
/**
|
|
127
|
-
* Calculates
|
|
128
|
-
*
|
|
245
|
+
* Calculates the price used to evaluate trigger (stop/take-profit) orders for a perp market,
|
|
246
|
+
* mirroring the Rust `get_trigger_price`. When `useMedianPrice` is true, the trigger price is the
|
|
247
|
+
* median of three candidates — the last fill price (or oracle price if there's been no fill), the
|
|
248
|
+
* oracle price adjusted by the implied funding basis, and the oracle price adjusted by the 5min
|
|
249
|
+
* mark/oracle TWAP basis — then clamped to within a contract-tier-dependent band around the raw
|
|
250
|
+
* oracle price (tier A/B: 20bps, tier C: 100bps, others: 250bps) via `clampTriggerPrice`. This
|
|
251
|
+
* resists a single manipulated print (last fill or a momentary oracle/mark divergence) from
|
|
252
|
+
* triggering orders it shouldn't. When `useMedianPrice` is false, the raw oracle price is used
|
|
253
|
+
* directly with no smoothing.
|
|
129
254
|
*
|
|
130
|
-
* @param market - The perp market account
|
|
131
|
-
* @param oraclePrice - Current oracle price (
|
|
132
|
-
*
|
|
133
|
-
* @
|
|
255
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
256
|
+
* @param {BN} oraclePrice - Current oracle price, PRICE_PRECISION (1e6); its absolute value is
|
|
257
|
+
* used throughout
|
|
258
|
+
* @param {BN} now - Current unix timestamp, seconds; used to prorate the implied funding basis
|
|
259
|
+
* over the time remaining until the next funding update
|
|
260
|
+
* @param {boolean} useMedianPrice - Whether to apply the median-of-three + clamp smoothing, or
|
|
261
|
+
* use the raw oracle price directly
|
|
262
|
+
* @returns {BN} The trigger price, PRICE_PRECISION (1e6)
|
|
134
263
|
*/
|
|
135
264
|
function getTriggerPrice(market, oraclePrice, now, useMedianPrice) {
|
|
136
265
|
if (!useMedianPrice) {
|
|
@@ -164,8 +293,7 @@ function getLastFundingBasis(market, oraclePrice, now) {
|
|
|
164
293
|
.mul(numericConstants_1.PRICE_PRECISION)
|
|
165
294
|
.div(market.marketStats.lastFundingOracleTwap)
|
|
166
295
|
.muln(24);
|
|
167
|
-
const lastFundingRatePreAdj = lastFundingRate.sub(numericConstants_1.
|
|
168
|
-
);
|
|
296
|
+
const lastFundingRatePreAdj = lastFundingRate.sub(numericConstants_1.FUNDING_RATE_OFFSET_PERCENTAGE);
|
|
169
297
|
const timeLeftUntilFundingUpdate = anchor_1.BN.min(anchor_1.BN.max(now.sub(market.lastFundingRateTs), numericConstants_1.ZERO), market.marketStats.fundingPeriod);
|
|
170
298
|
const lastFundingBasis = oraclePrice
|
|
171
299
|
.mul(lastFundingRatePreAdj)
|
|
@@ -1,14 +1,127 @@
|
|
|
1
1
|
import { HistoricalOracleData, MarketStats, OracleGuardRails, OracleSource, OracleValidity, PerpMarketAccount } from '../types';
|
|
2
2
|
import { OraclePriceData } from '../oracles/types';
|
|
3
3
|
import { BN } from '../isomorphic/anchor';
|
|
4
|
+
/**
|
|
5
|
+
* Computes a generic sanity band around the oracle price, sized by the gap between the
|
|
6
|
+
* market's initial and maintenance margin ratios (a wider margin gap allows a wider band).
|
|
7
|
+
* This is a coarse UI/client-side sanity check, not the exact on-chain price-band gate —
|
|
8
|
+
* order and settlement price-divergence checks on-chain compare the 5-min oracle TWAP
|
|
9
|
+
* spread via `isMarkOracleTooDivergent`/`isOracleTooDivergent` instead.
|
|
10
|
+
* @param market Perp market whose `marginRatioInitial`/`marginRatioMaintenance` (MARGIN_PRECISION, 1e4) set the band width.
|
|
11
|
+
* @param oraclePriceData Must provide `price`, PRICE_PRECISION (1e6).
|
|
12
|
+
* @returns `[lowerBound, upperBound]`, both PRICE_PRECISION (1e6).
|
|
13
|
+
*/
|
|
4
14
|
export declare function oraclePriceBands(market: PerpMarketAccount, oraclePriceData: Pick<OraclePriceData, 'price'>): [BN, BN];
|
|
15
|
+
/**
|
|
16
|
+
* Returns the per-market multiplier applied to `confidenceIntervalMaxSize` when checking
|
|
17
|
+
* oracle confidence-interval validity, mirroring `PerpMarket::get_max_confidence_interval_multiplier`.
|
|
18
|
+
* Riskier contract tiers tolerate a wider oracle confidence interval before being flagged
|
|
19
|
+
* invalid: 1x for tier A/B, 2x for tier C, 10x for Speculative, 50x for HighlySpeculative and Isolated.
|
|
20
|
+
* @param market Perp market whose `contractTier` selects the multiplier.
|
|
21
|
+
* @returns Unitless multiplier (dimensionless BN).
|
|
22
|
+
*/
|
|
5
23
|
export declare function getMaxConfidenceIntervalMultiplier(market: PerpMarketAccount): BN;
|
|
24
|
+
/**
|
|
25
|
+
* Classifies an oracle reading's validity for `market`, mirroring `oracle_validity` in
|
|
26
|
+
* `programs/velocity/src/math/oracle.rs`. Checks are evaluated in severity order and the
|
|
27
|
+
* first failing check wins: non-positive price, too volatile vs the oracle TWAP
|
|
28
|
+
* (`tooVolatileRatio`), confidence interval too wide (scaled by
|
|
29
|
+
* `getMaxConfidenceIntervalMultiplier`), stale for margin use, insufficient oracle data
|
|
30
|
+
* points, then stale for AMM use (low-risk or immediate, gated by the market's
|
|
31
|
+
* `oracleLowRiskSlotDelayOverride`/`oracleSlotDelayOverride`). Returns `OracleValidity.Valid`
|
|
32
|
+
* only if none of these trip. Callers typically gate on the returned enum via
|
|
33
|
+
* `isOracleValidForAction`-style helpers rather than comparing directly.
|
|
34
|
+
* @param market Perp market providing contract tier, oracle source, and stale-slot overrides.
|
|
35
|
+
* @param oraclePriceData Oracle reading to validate (`price`/`confidence` PRICE_PRECISION 1e6, `slot`).
|
|
36
|
+
* @param oracleGuardRails Protocol-wide validity thresholds (`state.oracleGuardRails`).
|
|
37
|
+
* @param slot Current slot, used to compute oracle delay.
|
|
38
|
+
* @param oracleStalenessBuffer Extra slots subtracted from the raw oracle delay before staleness checks (default 5) to absorb normal reporting lag.
|
|
39
|
+
* @returns The most severe `OracleValidity` classification that applies.
|
|
40
|
+
*/
|
|
6
41
|
export declare function getOracleValidity(market: PerpMarketAccount, oraclePriceData: OraclePriceData, oracleGuardRails: OracleGuardRails, slot: BN, oracleStalenessBuffer?: BN): OracleValidity;
|
|
42
|
+
/**
|
|
43
|
+
* Simplified, AMM-fill-oriented validity check: `true` only if the oracle has sufficient
|
|
44
|
+
* data points, is not stale (vs `slotsBeforeStaleForAmm`), has a positive price, isn't too
|
|
45
|
+
* volatile vs the market's oracle TWAP, and its confidence interval isn't too wide. Unlike
|
|
46
|
+
* `getOracleValidity` this does not distinguish "stale for margin" or "low risk" tiers — it
|
|
47
|
+
* is a single valid/invalid gate specifically for whether the AMM may fill against this
|
|
48
|
+
* price.
|
|
49
|
+
* @param market Perp market providing the oracle TWAP and contract tier for the confidence multiplier.
|
|
50
|
+
* @param oraclePriceData Oracle reading to validate (`price`/`confidence` PRICE_PRECISION 1e6).
|
|
51
|
+
* @param oracleGuardRails Protocol-wide validity thresholds.
|
|
52
|
+
* @param slot Current slot, used to compute oracle staleness.
|
|
53
|
+
* @returns `true` if the oracle is valid for an AMM-only fill.
|
|
54
|
+
*/
|
|
7
55
|
export declare function isOracleValid(market: PerpMarketAccount, oraclePriceData: OraclePriceData, oracleGuardRails: OracleGuardRails, slot: number): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* True when the live oracle price has diverged from the market's 5-minute oracle TWAP by
|
|
58
|
+
* more than the configured threshold (with a 50% safety floor). Distinct from
|
|
59
|
+
* `isMarkOracleTooDivergent`, which compares mark (reserve) price to the same TWAP instead
|
|
60
|
+
* of the live oracle price to itself — this catches an oracle feed itself jumping abruptly.
|
|
61
|
+
* @param marketStats Market stats providing `historicalOracleData.lastOraclePriceTwap5Min`, PRICE_PRECISION (1e6).
|
|
62
|
+
* @param oraclePriceData Live oracle reading (`price`, PRICE_PRECISION 1e6).
|
|
63
|
+
* @param oracleGuardRails Protocol-wide guard rails; uses `priceDivergence.oracleTwap5MinPercentDivergence`, PERCENTAGE_PRECISION (1e6).
|
|
64
|
+
* @returns `true` if the oracle-vs-TWAP spread exceeds the divergence threshold.
|
|
65
|
+
*/
|
|
8
66
|
export declare function isOracleTooDivergent(marketStats: MarketStats, oraclePriceData: OraclePriceData, oracleGuardRails: OracleGuardRails): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* True when `|priceSpreadPct|` exceeds the configured mark/oracle divergence threshold,
|
|
69
|
+
* with a 10% safety floor. Mirrors `is_mark_oracle_too_divergent` in
|
|
70
|
+
* `programs/velocity/src/math/oracle.rs` — a pure decision helper used both to block
|
|
71
|
+
* funding-rate updates (`block_operation`) and to reject orders/settlement when the market
|
|
72
|
+
* has moved too far from its 5-minute oracle TWAP (`validate_market_within_price_band`,
|
|
73
|
+
* which calls this once with the mark-vs-TWAP spread and once with the oracle-vs-TWAP
|
|
74
|
+
* spread, blocking on whichever is more divergent).
|
|
75
|
+
* @param priceSpreadPct Mark (or oracle) price spread vs the 5-minute oracle TWAP, PERCENTAGE_PRECISION (1e6, signed).
|
|
76
|
+
* @param oracleGuardRails Protocol-wide guard rails; uses `priceDivergence.markOraclePercentDivergence`, PERCENTAGE_PRECISION (1e6).
|
|
77
|
+
* @returns `true` if the spread exceeds `max(markOraclePercentDivergence, 10%)`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function isMarkOracleTooDivergent(priceSpreadPct: BN, oracleGuardRails: OracleGuardRails): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Projects the oracle TWAP forward to `now` without requiring an on-chain update,
|
|
82
|
+
* time-weighting the stored TWAP against the live oracle price clamped to within 1/3 of the
|
|
83
|
+
* current TWAP (so a single outlier tick can't swing the live estimate too far). Uses the
|
|
84
|
+
* 5-minute TWAP field when `period` equals `FIVE_MINUTE`, otherwise the funding-period (hourly) TWAP field.
|
|
85
|
+
* @param histOracleData Market's historical oracle data (TWAP fields, PRICE_PRECISION 1e6, and their last-update timestamp).
|
|
86
|
+
* @param oraclePriceData Live oracle reading (`price`, PRICE_PRECISION 1e6).
|
|
87
|
+
* @param now Current unix timestamp (seconds).
|
|
88
|
+
* @param period TWAP window length in seconds — pass `FIVE_MINUTE` for the 5-minute TWAP, otherwise the funding period is assumed.
|
|
89
|
+
* @returns Live-projected oracle TWAP, PRICE_PRECISION (1e6).
|
|
90
|
+
*/
|
|
9
91
|
export declare function calculateLiveOracleTwap(histOracleData: HistoricalOracleData, oraclePriceData: OraclePriceData, now: BN, period: BN): BN;
|
|
92
|
+
/**
|
|
93
|
+
* Live-projected oracle price standard deviation, combining the live oracle price's
|
|
94
|
+
* deviation from the freshly-projected 1hr and 5min TWAPs with the decayed stored
|
|
95
|
+
* `marketStats.oracleStd`. Feeds `calculateVolSpreadBN`'s volatility-based spread component.
|
|
96
|
+
* @param marketStats Market stats providing `historicalOracleData`, `fundingPeriod`, and the stored `oracleStd`.
|
|
97
|
+
* @param oraclePriceData Live oracle reading (`price`, PRICE_PRECISION 1e6).
|
|
98
|
+
* @param now Current unix timestamp (seconds).
|
|
99
|
+
* @returns Live oracle price standard deviation, PRICE_PRECISION (1e6).
|
|
100
|
+
*/
|
|
10
101
|
export declare function calculateLiveOracleStd(marketStats: MarketStats, oraclePriceData: OraclePriceData, now: BN): BN;
|
|
102
|
+
/**
|
|
103
|
+
* Live-projected oracle confidence interval as a fraction of `reservePrice`, floored by a
|
|
104
|
+
* decaying lower bound derived from the market's last stored confidence (so confidence
|
|
105
|
+
* can't be understated immediately after a stale update — it decays back down over ~20
|
|
106
|
+
* seconds). Feeds the volatility-spread and quote calculations that need a current
|
|
107
|
+
* confidence estimate without waiting for the next on-chain refresh.
|
|
108
|
+
* @param marketStats Market stats providing `lastOracleConfPct` and `historicalOracleData`'s last-update timestamp.
|
|
109
|
+
* @param oraclePriceData Live oracle reading; uses `confidence`, PRICE_PRECISION (1e6).
|
|
110
|
+
* @param reservePrice AMM reserve (mark) price used to express confidence as a fraction, PRICE_PRECISION (1e6).
|
|
111
|
+
* @param now Current unix timestamp (seconds).
|
|
112
|
+
* @returns Oracle confidence as a fraction of price, BID_ASK_SPREAD_PRECISION (1e6).
|
|
113
|
+
*/
|
|
11
114
|
export declare function getNewOracleConfPct(marketStats: MarketStats, oraclePriceData: OraclePriceData, reservePrice: BN, now: BN): BN;
|
|
115
|
+
/**
|
|
116
|
+
* Returns the scale factor to convert a price quoted under `firstOracleSource` into the
|
|
117
|
+
* equivalent price under `secondOracleSource`, for the Pyth Lazer "scaled" variants
|
|
118
|
+
* (`pythLazer1K`/`pythLazer1M` report a price 1,000x/1,000,000x smaller than `pythLazer` for
|
|
119
|
+
* high-priced assets). Returns `{1, 1}` (no conversion) for any other source pair.
|
|
120
|
+
* @param firstOracleSource Oracle source the input price is denominated in.
|
|
121
|
+
* @param secondOracleSource Oracle source to convert the price into.
|
|
122
|
+
* @returns `{ numerator, denominator }` such that `price * numerator / denominator` converts between sources.
|
|
123
|
+
* @throws if either source is a removed Pyth-pull variant (`pythPull`, `pyth1KPull`, `pyth1MPull`, `pythStableCoinPull`).
|
|
124
|
+
*/
|
|
12
125
|
export declare function getMultipleBetweenOracleSources(firstOracleSource: OracleSource, secondOracleSource: OracleSource): {
|
|
13
126
|
numerator: BN;
|
|
14
127
|
denominator: BN;
|