@velocity-exchange/sdk 0.2.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
package/src/math/orders.ts
CHANGED
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
} from './amm';
|
|
31
31
|
import { calculateSizePremiumLiabilityWeight } from './margin';
|
|
32
32
|
|
|
33
|
+
/** Rounds `baseAssetAmount` down to the nearest multiple of `stepSize` (always truncates toward zero — never rounds up), matching the on-chain order/fill step-size standardization. @param baseAssetAmount Amount to round, BASE_PRECISION (1e9). @param stepSize Market's order step size, BASE_PRECISION (1e9). @returns Amount rounded down to a `stepSize` multiple, BASE_PRECISION (1e9). */
|
|
33
34
|
export function standardizeBaseAssetAmount(
|
|
34
35
|
baseAssetAmount: BN,
|
|
35
36
|
stepSize: BN
|
|
@@ -38,13 +39,32 @@ export function standardizeBaseAssetAmount(
|
|
|
38
39
|
return baseAssetAmount.sub(remainder);
|
|
39
40
|
}
|
|
40
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Rounds `price` to a multiple of `tickSize`, rounding in the direction that's conservative
|
|
44
|
+
* for the order's side: down for a long (never overpay past the tick) and up for a short
|
|
45
|
+
* (never undersell past the tick). Used across auction pricing and limit-price derivation so
|
|
46
|
+
* every price the SDK produces already lines up with the market's `orderTickSize` before it
|
|
47
|
+
* reaches the program, avoiding the on-chain tick-size rejection this standardization fix
|
|
48
|
+
* addresses. A `tickSize <= 0` (unset/no constraint) or `price == 0` passes through
|
|
49
|
+
* unchanged.
|
|
50
|
+
* @param price Price to standardize, PRICE_PRECISION (1e6).
|
|
51
|
+
* @param tickSize Market's order tick size, PRICE_PRECISION (1e6). Non-positive means "no tick constraint."
|
|
52
|
+
* @param direction Order side; determines rounding direction.
|
|
53
|
+
* @returns `price` rounded to the nearest tick in the conservative direction, PRICE_PRECISION (1e6).
|
|
54
|
+
*/
|
|
41
55
|
export function standardizePrice(
|
|
42
56
|
price: BN,
|
|
43
57
|
tickSize: BN,
|
|
44
58
|
direction: PositionDirection
|
|
45
59
|
): BN {
|
|
46
60
|
if (price.eq(ZERO)) {
|
|
47
|
-
|
|
61
|
+
return price;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// A non-positive tick size means "no tick constraint" (e.g. unset markets);
|
|
65
|
+
// on-chain markets always have tick_size >= 1, but guard against a zero
|
|
66
|
+
// divisor rather than throwing.
|
|
67
|
+
if (tickSize.lte(ZERO)) {
|
|
48
68
|
return price;
|
|
49
69
|
}
|
|
50
70
|
|
|
@@ -60,23 +80,43 @@ export function standardizePrice(
|
|
|
60
80
|
}
|
|
61
81
|
}
|
|
62
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Resolves an order's effective limit price at the current slot, standardized to
|
|
85
|
+
* `tickSize`: the in-progress auction price while the auction hasn't completed, the
|
|
86
|
+
* oracle-offset price for oracle-pegged orders, the order's fixed `price` if set, or
|
|
87
|
+
* `fallbackPrice` (also standardized) for a market order with no price/offset/auction.
|
|
88
|
+
* @param order Order to price.
|
|
89
|
+
* @param oraclePriceData Oracle price source — use `MMOraclePriceData` for perp orders, `OraclePriceData` for spot.
|
|
90
|
+
* @param slot Current slot, used to evaluate auction progress.
|
|
91
|
+
* @param fallbackPrice Price to return for a market order with no auction/offset/fixed price (e.g. a mark or oracle price), PRICE_PRECISION (1e6).
|
|
92
|
+
* @param tickSize Market's order tick size, PRICE_PRECISION (1e6). Defaults to `ONE` (no effective standardization).
|
|
93
|
+
* @returns Limit price, PRICE_PRECISION (1e6); `undefined` if the order has no resolvable price and no `fallbackPrice` was given.
|
|
94
|
+
*/
|
|
63
95
|
export function getLimitPrice<T extends MarketTypeStr>(
|
|
64
96
|
order: Order,
|
|
65
97
|
oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData,
|
|
66
98
|
slot: number,
|
|
67
|
-
fallbackPrice?: BN
|
|
99
|
+
fallbackPrice?: BN,
|
|
100
|
+
tickSize: BN = ONE
|
|
68
101
|
): BN | undefined {
|
|
69
102
|
if (hasAuctionPrice(order, slot)) {
|
|
70
|
-
return getAuctionPrice(order, slot, oraclePriceData.price);
|
|
103
|
+
return getAuctionPrice(order, slot, oraclePriceData.price, tickSize);
|
|
71
104
|
} else if (!order.oraclePriceOffset.eq(ZERO)) {
|
|
72
|
-
|
|
105
|
+
const limitPrice = BN.max(
|
|
106
|
+
oraclePriceData.price.add(order.oraclePriceOffset),
|
|
107
|
+
tickSize
|
|
108
|
+
);
|
|
109
|
+
return standardizePrice(limitPrice, tickSize, order.direction);
|
|
73
110
|
} else if (order.price.eq(ZERO)) {
|
|
74
|
-
return fallbackPrice
|
|
111
|
+
return fallbackPrice === undefined
|
|
112
|
+
? undefined
|
|
113
|
+
: standardizePrice(fallbackPrice, tickSize, order.direction);
|
|
75
114
|
} else {
|
|
76
115
|
return order.price;
|
|
77
116
|
}
|
|
78
117
|
}
|
|
79
118
|
|
|
119
|
+
/** True if the order has any way to resolve a limit price right now: a fixed `price`, a nonzero oracle offset, or an auction still in progress. */
|
|
80
120
|
export function hasLimitPrice(order: Order, slot: number): boolean {
|
|
81
121
|
return (
|
|
82
122
|
order.price.gt(ZERO) ||
|
|
@@ -85,6 +125,7 @@ export function hasLimitPrice(order: Order, slot: number): boolean {
|
|
|
85
125
|
);
|
|
86
126
|
}
|
|
87
127
|
|
|
128
|
+
/** True if the order still has an active (incomplete) auction with a nonzero start or end price. */
|
|
88
129
|
export function hasAuctionPrice(order: Order, slot: number): boolean {
|
|
89
130
|
return (
|
|
90
131
|
!isAuctionComplete(order, slot) &&
|
|
@@ -92,6 +133,19 @@ export function hasAuctionPrice(order: Order, slot: number): boolean {
|
|
|
92
133
|
);
|
|
93
134
|
}
|
|
94
135
|
|
|
136
|
+
/**
|
|
137
|
+
* True if the AMM is currently a fillable liquidity source for `order` — either it's
|
|
138
|
+
* expired (always fillable to clean up), or the AMM has fillable size at the order's limit
|
|
139
|
+
* price AND is an allowed liquidity source right now (`isFallbackAvailableLiquiditySource`,
|
|
140
|
+
* which gates on oracle validity and low-risk-for-AMM classification).
|
|
141
|
+
* @param order Order to check.
|
|
142
|
+
* @param market Perp market the order is on.
|
|
143
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
144
|
+
* @param slot Current slot.
|
|
145
|
+
* @param ts Current unix timestamp (seconds), used for expiry.
|
|
146
|
+
* @param state Global state, providing oracle guard rails and paused-operations flags.
|
|
147
|
+
* @returns `true` if the AMM may currently fill this order.
|
|
148
|
+
*/
|
|
95
149
|
export function isFillableByVAMM(
|
|
96
150
|
order: Order,
|
|
97
151
|
market: PerpMarketAccount,
|
|
@@ -118,6 +172,17 @@ export function isFillableByVAMM(
|
|
|
118
172
|
);
|
|
119
173
|
}
|
|
120
174
|
|
|
175
|
+
/**
|
|
176
|
+
* True if filling `order` against the AMM is considered low-risk even when the MM oracle
|
|
177
|
+
* isn't fully valid, approximating `Order::is_low_risk_for_amm` in
|
|
178
|
+
* `programs/velocity/src/state/user.rs`. Always false for spot orders. True when the order
|
|
179
|
+
* was placed at or before the MM oracle's slot (so it can't be exploiting oracle staleness),
|
|
180
|
+
* during liquidation, or when the order carries the `SafeTriggerOrder` bit flag.
|
|
181
|
+
* @param order Order to check.
|
|
182
|
+
* @param mmOraclePriceData Current MM oracle price data, used for its `slot`.
|
|
183
|
+
* @param isLiquidation Whether the fill is part of a liquidation (always low-risk if so).
|
|
184
|
+
* @returns `true` if the order is low-risk for an AMM fill under a degraded oracle.
|
|
185
|
+
*/
|
|
121
186
|
export function isLowRiskForAmm(
|
|
122
187
|
order: Order,
|
|
123
188
|
mmOraclePriceData: MMOraclePriceData,
|
|
@@ -138,6 +203,19 @@ export function isLowRiskForAmm(
|
|
|
138
203
|
);
|
|
139
204
|
}
|
|
140
205
|
|
|
206
|
+
/**
|
|
207
|
+
* Calculates how much of `order` the AMM can currently fill, capped by both the order's
|
|
208
|
+
* limit price (via `calculateBaseAssetAmountToFillUpToLimitPrice`, standardized to
|
|
209
|
+
* `market.orderTickSize`) and the AMM's own max fillable size
|
|
210
|
+
* (`calculateMaxBaseAssetAmountFillable`). Returns zero for a not-yet-triggered
|
|
211
|
+
* trigger order. Prices against `calculateUpdatedAMM` (i.e. the repegged/curve-updated AMM
|
|
212
|
+
* state), not the raw stored reserves.
|
|
213
|
+
* @param order Order to evaluate.
|
|
214
|
+
* @param market Perp market the order is on.
|
|
215
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
216
|
+
* @param slot Current slot.
|
|
217
|
+
* @returns Fillable base asset amount, BASE_PRECISION (1e9).
|
|
218
|
+
*/
|
|
141
219
|
export function calculateBaseAssetAmountForAmmToFulfill(
|
|
142
220
|
order: Order,
|
|
143
221
|
market: PerpMarketAccount,
|
|
@@ -148,7 +226,13 @@ export function calculateBaseAssetAmountForAmmToFulfill(
|
|
|
148
226
|
return ZERO;
|
|
149
227
|
}
|
|
150
228
|
|
|
151
|
-
const limitPrice = getLimitPrice(
|
|
229
|
+
const limitPrice = getLimitPrice(
|
|
230
|
+
order,
|
|
231
|
+
mmOraclePriceData,
|
|
232
|
+
slot,
|
|
233
|
+
undefined,
|
|
234
|
+
market.orderTickSize
|
|
235
|
+
);
|
|
152
236
|
let baseAssetAmount;
|
|
153
237
|
|
|
154
238
|
const updatedAMM = calculateUpdatedAMM(market.amm, mmOraclePriceData);
|
|
@@ -175,6 +259,21 @@ export function calculateBaseAssetAmountForAmmToFulfill(
|
|
|
175
259
|
return BN.min(maxBaseAssetAmount, baseAssetAmount);
|
|
176
260
|
}
|
|
177
261
|
|
|
262
|
+
/**
|
|
263
|
+
* Calculates how much base asset the AMM can trade against `order` without crossing its
|
|
264
|
+
* limit price, adjusting the limit by one tick in the order's favor (so the AMM never fills
|
|
265
|
+
* exactly at the boundary) before asking `calculateMaxBaseAssetAmountToTrade` how much
|
|
266
|
+
* inventory the AMM has at that price. Returns zero if the AMM would only trade in the
|
|
267
|
+
* opposite direction from the order. Caps the result at the order's unfilled remainder.
|
|
268
|
+
* @param order Order being filled.
|
|
269
|
+
* @param amm AMM state to trade against.
|
|
270
|
+
* @param marketStats Market stats needed to compute spread reserves.
|
|
271
|
+
* @param orderStepSize Market's order step size, BASE_PRECISION (1e9), used to standardize the result.
|
|
272
|
+
* @param orderTickSize Market's order tick size, PRICE_PRECISION (1e6), used to adjust the limit price by one tick.
|
|
273
|
+
* @param limitPrice Order's limit price, PRICE_PRECISION (1e6).
|
|
274
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
275
|
+
* @returns Fillable base asset amount up to the limit price, BASE_PRECISION (1e9).
|
|
276
|
+
*/
|
|
178
277
|
export function calculateBaseAssetAmountToFillUpToLimitPrice(
|
|
179
278
|
order: Order,
|
|
180
279
|
amm: AMM,
|
|
@@ -225,6 +324,15 @@ function isSameDirection(
|
|
|
225
324
|
);
|
|
226
325
|
}
|
|
227
326
|
|
|
327
|
+
/**
|
|
328
|
+
* True if `order.maxTs` has passed as of `ts`. Never true for trigger orders, non-`open`
|
|
329
|
+
* orders, or orders with no expiry (`maxTs == 0`).
|
|
330
|
+
* @param order Order to check.
|
|
331
|
+
* @param ts Current unix timestamp (seconds).
|
|
332
|
+
* @param enforceBuffer If true, extends `maxTs` by `bufferSeconds` before comparing, but only for limit orders (default false) — gives resting limit orders a grace period before being treated as expired.
|
|
333
|
+
* @param bufferSeconds Grace period in seconds applied when `enforceBuffer` is true (default 15).
|
|
334
|
+
* @returns `true` if the order has expired.
|
|
335
|
+
*/
|
|
228
336
|
export function isOrderExpired(
|
|
229
337
|
order: Order,
|
|
230
338
|
ts: number,
|
|
@@ -249,18 +357,22 @@ export function isOrderExpired(
|
|
|
249
357
|
return new BN(ts).gt(maxTs);
|
|
250
358
|
}
|
|
251
359
|
|
|
360
|
+
/** True if `order.orderType` is `market`, `triggerMarket`, or `oracle`. */
|
|
252
361
|
export function isMarketOrder(order: Order): boolean {
|
|
253
362
|
return isOneOfVariant(order.orderType, ['market', 'triggerMarket', 'oracle']);
|
|
254
363
|
}
|
|
255
364
|
|
|
365
|
+
/** True if `order.orderType` is `limit` or `triggerLimit`. */
|
|
256
366
|
export function isLimitOrder(order: Order): boolean {
|
|
257
367
|
return isOneOfVariant(order.orderType, ['limit', 'triggerLimit']);
|
|
258
368
|
}
|
|
259
369
|
|
|
370
|
+
/** True if the order requires a trigger condition to fire before it becomes fillable (`triggerMarket`/`triggerLimit`). */
|
|
260
371
|
export function mustBeTriggered(order: Order): boolean {
|
|
261
372
|
return isOneOfVariant(order.orderType, ['triggerMarket', 'triggerLimit']);
|
|
262
373
|
}
|
|
263
374
|
|
|
375
|
+
/** True if a trigger order's condition has already fired (`triggeredAbove`/`triggeredBelow`). */
|
|
264
376
|
export function isTriggered(order: Order): boolean {
|
|
265
377
|
return isOneOfVariant(order.triggerCondition, [
|
|
266
378
|
'triggeredAbove',
|
|
@@ -268,6 +380,7 @@ export function isTriggered(order: Order): boolean {
|
|
|
268
380
|
]);
|
|
269
381
|
}
|
|
270
382
|
|
|
383
|
+
/** True if a limit order currently rests on the book — i.e. it's `postOnly`, or its auction (if any) has completed. Always false for non-limit orders. */
|
|
271
384
|
export function isRestingLimitOrder(order: Order, slot: number): boolean {
|
|
272
385
|
if (!isLimitOrder(order)) {
|
|
273
386
|
return false;
|
|
@@ -276,16 +389,25 @@ export function isRestingLimitOrder(order: Order, slot: number): boolean {
|
|
|
276
389
|
return order.postOnly || isAuctionComplete(order, slot);
|
|
277
390
|
}
|
|
278
391
|
|
|
279
|
-
|
|
392
|
+
/** True if the order was submitted via the signed-message (swift/off-chain relay) path (`OrderBitFlag.SignedMessage`). */
|
|
280
393
|
export function isSignedMsgOrder(order: Order): boolean {
|
|
281
|
-
return (order.bitFlags &
|
|
394
|
+
return (order.bitFlags & OrderBitFlag.SignedMessage) !== 0;
|
|
282
395
|
}
|
|
283
396
|
|
|
284
|
-
|
|
397
|
+
/** True if the order carries a builder-fee attribution (`OrderBitFlag.HasBuilder`) — the associated builder is entitled to a fee cut on fill. */
|
|
285
398
|
export function hasBuilder(order: Order): boolean {
|
|
286
|
-
return (order.bitFlags &
|
|
399
|
+
return (order.bitFlags & OrderBitFlag.HasBuilder) !== 0;
|
|
287
400
|
}
|
|
288
401
|
|
|
402
|
+
/**
|
|
403
|
+
* Resolves the effective base asset amount for a reduce-only order: caps it so the order
|
|
404
|
+
* can't flip the position through zero (a reduce-only long can close at most the existing
|
|
405
|
+
* short, and vice versa). Non-reduce-only orders pass through `order.baseAssetAmount`
|
|
406
|
+
* unchanged.
|
|
407
|
+
* @param order Order to resolve.
|
|
408
|
+
* @param existingBaseAssetAmount Current position size before this order fills, BASE_PRECISION (1e9, signed).
|
|
409
|
+
* @returns Effective base asset amount, BASE_PRECISION (1e9).
|
|
410
|
+
*/
|
|
289
411
|
export function calculateOrderBaseAssetAmount(
|
|
290
412
|
order: Order,
|
|
291
413
|
existingBaseAssetAmount: BN
|
|
@@ -306,12 +428,15 @@ export function calculateOrderBaseAssetAmount(
|
|
|
306
428
|
|
|
307
429
|
// ---------- inverse ----------
|
|
308
430
|
/**
|
|
309
|
-
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
314
|
-
*
|
|
431
|
+
* Inverts `calculateSizePremiumLiabilityWeight` via binary search: given a target margin ratio
|
|
432
|
+
* (liability weight), finds the largest position `size` whose size-premium-adjusted liability
|
|
433
|
+
* weight is still `<= target`. Used to size down an order/position to stay under a margin-ratio
|
|
434
|
+
* target as size grows (the on-chain weight increases with `sqrt(size)` via `imfFactor`).
|
|
435
|
+
* @param target Target (max acceptable) liability weight, MARGIN_PRECISION (1e4).
|
|
436
|
+
* @param imfFactor Market's initial-margin-fraction scaling factor, SPOT_MARKET_IMF_PRECISION-scaled.
|
|
437
|
+
* @param liabilityWeight Market's base (zero-size) liability weight, MARGIN_PRECISION (1e4).
|
|
438
|
+
* @param market Perp market providing `maxOpenInterest` as a final cap on the result.
|
|
439
|
+
* @returns Max size, AMM_RESERVE_PRECISION (1e9), capped at `market.maxOpenInterest` (a zero `maxOpenInterest` means uncapped, per on-chain convention); `null` if `target < liabilityWeight` (impossible) or `imfFactor` is zero (weight is size-invariant, so no size bounds it).
|
|
315
440
|
*/
|
|
316
441
|
export function maxSizeForTargetLiabilityWeightBN(
|
|
317
442
|
target: BN,
|
|
@@ -364,9 +489,10 @@ export function maxSizeForTargetLiabilityWeightBN(
|
|
|
364
489
|
}
|
|
365
490
|
}
|
|
366
491
|
|
|
367
|
-
// cap at max OI
|
|
492
|
+
// cap at max OI. A maxOpenInterest of 0 means no configured cap (unlimited),
|
|
493
|
+
// matching the on-chain convention — do not treat it as a hard cap of 0.
|
|
368
494
|
const maxOpenInterest = market.maxOpenInterest;
|
|
369
|
-
if (lo.gt(maxOpenInterest)) {
|
|
495
|
+
if (!maxOpenInterest.isZero() && lo.gt(maxOpenInterest)) {
|
|
370
496
|
return maxOpenInterest;
|
|
371
497
|
}
|
|
372
498
|
|
package/src/math/position.ts
CHANGED
|
@@ -26,12 +26,17 @@ import { calculateBaseAssetValueWithOracle } from './margin';
|
|
|
26
26
|
import { calculateNetUserPnlImbalance } from './market';
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* @param
|
|
34
|
-
* @returns
|
|
29
|
+
* Simulates fully closing `userPosition` against the AMM (optionally through its bid/ask
|
|
30
|
+
* spread reserves) and returns the resulting quote value — i.e. the market value of closing
|
|
31
|
+
* the entire position right now, distinct from `calculateBaseAssetValueWithOracle`'s
|
|
32
|
+
* mark-to-oracle valuation used for margin.
|
|
33
|
+
* @param market Perp market whose AMM is used to price the close.
|
|
34
|
+
* @param userPosition Position to value; returns zero if flat (`baseAssetAmount == 0`).
|
|
35
|
+
* @param mmOraclePriceData MM oracle price data used to re-peg/update the AMM before pricing (unless `skipUpdate`).
|
|
36
|
+
* @param useSpread If true (default) and the market has a nonzero base spread, price through the bid/ask spread reserves on the closing side rather than the raw AMM reserves.
|
|
37
|
+
* @param skipUpdate If true, price against `market.amm` as-is without applying `calculateUpdatedAMM`/spread-reserve updates first (default false).
|
|
38
|
+
* @param latestSlot Current slot, forwarded to the spread-reserve update for reference-price-offset smoothing.
|
|
39
|
+
* @returns Value of fully closing the position, QUOTE_PRECISION (1e6).
|
|
35
40
|
*/
|
|
36
41
|
export function calculateBaseAssetValue(
|
|
37
42
|
market: PerpMarketAccount,
|
|
@@ -98,13 +103,14 @@ export function calculateBaseAssetValue(
|
|
|
98
103
|
}
|
|
99
104
|
|
|
100
105
|
/**
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* @param
|
|
105
|
-
* @param
|
|
106
|
-
* @param
|
|
107
|
-
* @
|
|
106
|
+
* Calculates a position's unrealized pnl, marked to the oracle price (via
|
|
107
|
+
* `calculateBaseAssetValueWithOracle`) rather than the AMM close price. For a flat position
|
|
108
|
+
* this is simply `quoteAssetAmount` (any residual realized/settled pnl still on the position).
|
|
109
|
+
* @param market Perp market the position belongs to.
|
|
110
|
+
* @param perpPosition Position to value.
|
|
111
|
+
* @param withFunding If true, adds unsettled funding pnl (`calculateUnsettledFundingPnl`) to the result (default false).
|
|
112
|
+
* @param oraclePriceData Must provide `price`, PRICE_PRECISION (1e6); used unless the market is in `settlement` status (which uses `market.expiryPrice` internally).
|
|
113
|
+
* @returns Unrealized pnl, QUOTE_PRECISION (1e6, signed).
|
|
108
114
|
*/
|
|
109
115
|
export function calculatePositionPNL(
|
|
110
116
|
market: PerpMarketAccount,
|
|
@@ -137,6 +143,22 @@ export function calculatePositionPNL(
|
|
|
137
143
|
return pnl;
|
|
138
144
|
}
|
|
139
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Caps a position's unrealized pnl (incl. funding) to the amount actually settleable via
|
|
148
|
+
* `settle_pnl`, mirroring `PerpPosition::get_claimable_pnl` in
|
|
149
|
+
* `programs/velocity/src/state/user.rs`. Positive pnl can only be settled up to whichever is
|
|
150
|
+
* larger: pnl already realized by reducing the position (`quoteAssetAmount -
|
|
151
|
+
* quoteEntryAmount`, floored at zero) plus any pnl-pool surplus over the market's net user
|
|
152
|
+
* pnl (`calculateNetUserPnlImbalance`, negated and floored at zero). Negative pnl passes
|
|
153
|
+
* through uncapped — this function does not itself gate on margin requirements (the program
|
|
154
|
+
* separately blocks settling negative pnl for a user who wouldn't meet maintenance margin
|
|
155
|
+
* afterward).
|
|
156
|
+
* @param market Perp market the position belongs to.
|
|
157
|
+
* @param spotMarket Quote spot market, used to size the pnl pool via `calculateNetUserPnlImbalance`.
|
|
158
|
+
* @param perpPosition Position to evaluate.
|
|
159
|
+
* @param oraclePriceData Must provide `price`, PRICE_PRECISION (1e6).
|
|
160
|
+
* @returns Settleable pnl, QUOTE_PRECISION (1e6, signed) — equal to unrealized pnl if negative or uncapped, otherwise capped.
|
|
161
|
+
*/
|
|
140
162
|
export function calculateClaimablePnl(
|
|
141
163
|
market: PerpMarketAccount,
|
|
142
164
|
spotMarket: SpotMarketAccount,
|
|
@@ -170,12 +192,14 @@ export function calculateClaimablePnl(
|
|
|
170
192
|
}
|
|
171
193
|
|
|
172
194
|
/**
|
|
173
|
-
* Returns
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
* @param
|
|
178
|
-
* @
|
|
195
|
+
* Returns the cumulative fees-plus-funding component of a position's pnl (i.e. the part of
|
|
196
|
+
* pnl not explained by price movement): settled funding/fees so far
|
|
197
|
+
* (`quoteBreakEvenAmount - quoteEntryAmount`) plus, optionally, unsettled funding accrued
|
|
198
|
+
* since the last funding settlement.
|
|
199
|
+
* @param market Perp market the position belongs to.
|
|
200
|
+
* @param perpPosition Position to evaluate.
|
|
201
|
+
* @param includeUnsettled If true (default), adds `calculateUnsettledFundingPnl` to the result.
|
|
202
|
+
* @returns Fees + funding pnl, QUOTE_PRECISION (1e6, signed).
|
|
179
203
|
*/
|
|
180
204
|
export function calculateFeesAndFundingPnl(
|
|
181
205
|
market: PerpMarketAccount,
|
|
@@ -199,13 +223,16 @@ export function calculateFeesAndFundingPnl(
|
|
|
199
223
|
}
|
|
200
224
|
|
|
201
225
|
/**
|
|
202
|
-
* Returns unsettled funding pnl
|
|
226
|
+
* Returns unsettled funding pnl accrued on the position since its last funding settlement:
|
|
227
|
+
* the delta between the market's current cumulative funding rate (long or short side,
|
|
228
|
+
* selected by position direction) and the position's `lastCumulativeFundingRate`, applied to
|
|
229
|
+
* `baseAssetAmount`. Zero for a flat position.
|
|
203
230
|
*
|
|
204
|
-
* To calculate all fees and funding pnl including settled, use calculateFeesAndFundingPnl
|
|
231
|
+
* To calculate all fees and funding pnl including settled, use `calculateFeesAndFundingPnl`.
|
|
205
232
|
*
|
|
206
|
-
* @param market
|
|
207
|
-
* @param
|
|
208
|
-
* @returns
|
|
233
|
+
* @param market Perp market the position belongs to; uses `cumulativeFundingRateLong`/`cumulativeFundingRateShort`.
|
|
234
|
+
* @param perpPosition Position to evaluate.
|
|
235
|
+
* @returns Unsettled funding pnl, QUOTE_PRECISION (1e6, signed).
|
|
209
236
|
*/
|
|
210
237
|
export function calculateUnsettledFundingPnl(
|
|
211
238
|
market: PerpMarketAccount,
|
|
@@ -232,6 +259,16 @@ export function calculateUnsettledFundingPnl(
|
|
|
232
259
|
return perPositionFundingRate;
|
|
233
260
|
}
|
|
234
261
|
|
|
262
|
+
/**
|
|
263
|
+
* True if a `PerpPosition` slot is free to be reused for a different market, mirroring
|
|
264
|
+
* `PerpPosition::is_available` in `programs/velocity/src/state/user.rs`: no open base
|
|
265
|
+
* position, no open orders, no unsettled quote pnl, no isolated-margin collateral parked in
|
|
266
|
+
* it (`isolatedPositionScaledBalance == 0`), and not currently mid-liquidation/bankruptcy.
|
|
267
|
+
* An isolated position with collateral still deposited is never "available" even if flat,
|
|
268
|
+
* since that collateral must be withdrawn first.
|
|
269
|
+
* @param position Position slot to check.
|
|
270
|
+
* @returns `true` if the slot can be assigned to a new market.
|
|
271
|
+
*/
|
|
235
272
|
export function positionIsAvailable(position: PerpPosition): boolean {
|
|
236
273
|
return (
|
|
237
274
|
position.baseAssetAmount.eq(ZERO) &&
|
|
@@ -242,6 +279,7 @@ export function positionIsAvailable(position: PerpPosition): boolean {
|
|
|
242
279
|
);
|
|
243
280
|
}
|
|
244
281
|
|
|
282
|
+
/** True if `position.positionFlag` has the `BeingLiquidated` or `Bankruptcy` bit set. */
|
|
245
283
|
export function positionIsBeingLiquidated(position: PerpPosition): boolean {
|
|
246
284
|
return (
|
|
247
285
|
(position.positionFlag &
|
|
@@ -251,9 +289,10 @@ export function positionIsBeingLiquidated(position: PerpPosition): boolean {
|
|
|
251
289
|
}
|
|
252
290
|
|
|
253
291
|
/**
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
* @
|
|
292
|
+
* Price at which closing the position realizes zero further pnl, i.e. entry price adjusted
|
|
293
|
+
* for fees and funding paid/received so far (`quoteBreakEvenAmount / baseAssetAmount`).
|
|
294
|
+
* @param userPosition Position to evaluate.
|
|
295
|
+
* @returns Break-even price (always non-negative), PRICE_PRECISION (1e6). Zero if flat.
|
|
257
296
|
*/
|
|
258
297
|
export function calculateBreakEvenPrice(userPosition: PerpPosition): BN {
|
|
259
298
|
if (userPosition.baseAssetAmount.eq(ZERO)) {
|
|
@@ -268,9 +307,9 @@ export function calculateBreakEvenPrice(userPosition: PerpPosition): BN {
|
|
|
268
307
|
}
|
|
269
308
|
|
|
270
309
|
/**
|
|
271
|
-
*
|
|
272
|
-
* @param userPosition
|
|
273
|
-
* @returns
|
|
310
|
+
* Average entry price of the position, before fees/funding (`quoteEntryAmount / baseAssetAmount`).
|
|
311
|
+
* @param userPosition Position to evaluate.
|
|
312
|
+
* @returns Average entry price (always non-negative), PRICE_PRECISION (1e6). Zero if flat.
|
|
274
313
|
*/
|
|
275
314
|
export function calculateEntryPrice(userPosition: PerpPosition): BN {
|
|
276
315
|
if (userPosition.baseAssetAmount.eq(ZERO)) {
|
|
@@ -285,9 +324,13 @@ export function calculateEntryPrice(userPosition: PerpPosition): BN {
|
|
|
285
324
|
}
|
|
286
325
|
|
|
287
326
|
/**
|
|
288
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
327
|
+
* Cost basis of the position (`quoteAssetAmount / baseAssetAmount`, optionally including
|
|
328
|
+
* realized settled pnl), i.e. the current quote value backing the position expressed per
|
|
329
|
+
* unit of base — this differs from `calculateEntryPrice` whenever the position has
|
|
330
|
+
* accumulated settled pnl or fees since it was opened.
|
|
331
|
+
* @param userPosition Position to evaluate.
|
|
332
|
+
* @param includeSettledPnl If true, folds `userPosition.settledPnl` into the quote amount before dividing (default false).
|
|
333
|
+
* @returns Cost basis (always non-negative), PRICE_PRECISION (1e6). Zero if flat.
|
|
291
334
|
*/
|
|
292
335
|
export function calculateCostBasis(
|
|
293
336
|
userPosition: PerpPosition,
|
|
@@ -305,6 +348,7 @@ export function calculateCostBasis(
|
|
|
305
348
|
.abs();
|
|
306
349
|
}
|
|
307
350
|
|
|
351
|
+
/** Direction of the trade that would fully close `userPosition`: `SHORT` for a long position (base > 0), `LONG` otherwise (including flat). */
|
|
308
352
|
export function findDirectionToClose(
|
|
309
353
|
userPosition: PerpPosition
|
|
310
354
|
): PositionDirection {
|
|
@@ -313,6 +357,7 @@ export function findDirectionToClose(
|
|
|
313
357
|
: PositionDirection.LONG;
|
|
314
358
|
}
|
|
315
359
|
|
|
360
|
+
/** The position's own directional exposure: `LONG` if `baseAssetAmount >= 0` (including flat), `SHORT` if negative. */
|
|
316
361
|
export function positionCurrentDirection(
|
|
317
362
|
userPosition: PerpPosition
|
|
318
363
|
): PositionDirection {
|
|
@@ -321,10 +366,12 @@ export function positionCurrentDirection(
|
|
|
321
366
|
: PositionDirection.SHORT;
|
|
322
367
|
}
|
|
323
368
|
|
|
369
|
+
/** True if the position has no open base exposure and no open orders (a coarser check than `positionIsAvailable` — does not check quote pnl, isolated collateral, or liquidation flags). */
|
|
324
370
|
export function isEmptyPosition(userPosition: PerpPosition): boolean {
|
|
325
371
|
return userPosition.baseAssetAmount.eq(ZERO) && userPosition.openOrders === 0;
|
|
326
372
|
}
|
|
327
373
|
|
|
374
|
+
/** True if the position has any open orders, resting bids, or resting asks, mirroring `PerpPosition::has_open_order` in `programs/velocity/src/state/user.rs`. */
|
|
328
375
|
export function hasOpenOrders(position: PerpPosition): boolean {
|
|
329
376
|
return (
|
|
330
377
|
position.openOrders != 0 ||
|
package/src/math/repeg.ts
CHANGED
|
@@ -13,11 +13,18 @@ import {
|
|
|
13
13
|
} from '../constants/numericConstants';
|
|
14
14
|
import { AMM } from '../types';
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
16
|
+
* Closed-form estimate of the quote-denominated cost of scaling the AMM's `sqrtK`
|
|
17
|
+
* (liquidity depth) by `numerator / denomenator` while holding `pegMultiplier` fixed.
|
|
18
|
+
* Used by `calculateNewAmm` as the cheap-to-compute stand-in for the program's K-shrink
|
|
19
|
+
* step (`adjust_k_cost_and_update` in `vlp/amm/quoter.rs`, which shrinks `sqrtK` by 0.1%
|
|
20
|
+
* — i.e. `numerator`/`denomenator` = 999/1000 — when a straight repeg to the oracle price
|
|
21
|
+
* would exceed the AMM's affordability budget). A positive result is a cost the AMM must
|
|
22
|
+
* fund from `totalFeeMinusDistributions`; shrinking K (denomenator > numerator) typically
|
|
23
|
+
* yields a negative cost (a rebate) since it reduces the AMM's net unrealized exposure.
|
|
24
|
+
* @param amm AMM state (uses `baseAssetReserve`, `quoteAssetReserve`, `baseAssetAmountWithAmm`, `pegMultiplier`).
|
|
25
|
+
* @param numerator Numerator of the K scale factor (e.g. 999).
|
|
26
|
+
* @param denomenator Denominator of the K scale factor (e.g. 1000).
|
|
27
|
+
* @returns Cost of the K adjustment, QUOTE_PRECISION (1e6).
|
|
21
28
|
*/
|
|
22
29
|
export function calculateAdjustKCost(
|
|
23
30
|
amm: AMM,
|
|
@@ -82,11 +89,16 @@ export function calculateAdjustKCost(
|
|
|
82
89
|
// }
|
|
83
90
|
|
|
84
91
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
92
|
+
* Calculates the quote-denominated cost of moving the AMM's `pegMultiplier` to `newPeg`,
|
|
93
|
+
* mirroring `calculate_repeg_cost` in `vlp/amm/math/repeg.rs`: `(quoteAssetReserve -
|
|
94
|
+
* terminalQuoteAssetReserve) * (newPeg - pegMultiplier) / AMM_TO_QUOTE_PRECISION_RATIO`.
|
|
95
|
+
* The sign follows the AMM's inventory skew (`quoteAssetReserve - terminalQuoteAssetReserve`)
|
|
96
|
+
* — repegging in the direction that favors the AMM's current net position is free or a
|
|
97
|
+
* rebate; repegging against it costs `totalFeeMinusDistributions`. Zero when the AMM carries
|
|
98
|
+
* no net inventory (`quoteAssetReserve == terminalQuoteAssetReserve`).
|
|
99
|
+
* @param amm AMM state (uses `quoteAssetReserve`, `terminalQuoteAssetReserve`, `pegMultiplier`).
|
|
100
|
+
* @param newPeg Candidate peg multiplier, PEG_PRECISION (1e6).
|
|
101
|
+
* @returns Signed cost of the repeg, QUOTE_PRECISION (1e6).
|
|
90
102
|
*/
|
|
91
103
|
export function calculateRepegCost(amm: AMM, newPeg: BN): BN {
|
|
92
104
|
const dqar = amm.quoteAssetReserve.sub(amm.terminalQuoteAssetReserve);
|
|
@@ -97,6 +109,21 @@ export function calculateRepegCost(amm: AMM, newPeg: BN): BN {
|
|
|
97
109
|
return cost;
|
|
98
110
|
}
|
|
99
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Solves for a `sqrtK` scale factor `numerator / denominator` such that repegging the AMM
|
|
114
|
+
* to price-neutral (holding the terminal/reserve price relationship implied by the current
|
|
115
|
+
* inventory) costs exactly `budget`. Used as the closed-form companion to
|
|
116
|
+
* `calculateAdjustKCost` (same K-shrink mechanism as the program's `adjust_k_cost_and_update`)
|
|
117
|
+
* when solving for "how much must K move to spend exactly this much." Falls back to a fixed
|
|
118
|
+
* `[10000, 1]` (10000x factor) if the budget is negative (protocol spending to increase K) and the
|
|
119
|
+
* solution would be numerically unstable.
|
|
120
|
+
* @param x AMM `baseAssetReserve`, AMM_RESERVE_PRECISION (1e9).
|
|
121
|
+
* @param y AMM `quoteAssetReserve`, AMM_RESERVE_PRECISION (1e9).
|
|
122
|
+
* @param budget Quote budget available to spend on the K adjustment, QUOTE_PRECISION (1e6).
|
|
123
|
+
* @param Q AMM `pegMultiplier`, PEG_PRECISION (1e6).
|
|
124
|
+
* @param d AMM `baseAssetAmountWithAmm` (net AMM inventory), AMM_RESERVE_PRECISION (1e9).
|
|
125
|
+
* @returns `[numerator, denominator]` scale factor to apply to `sqrtK`/`baseAssetReserve`.
|
|
126
|
+
*/
|
|
100
127
|
export function calculateBudgetedKBN(
|
|
101
128
|
x: BN,
|
|
102
129
|
y: BN,
|
|
@@ -148,6 +175,17 @@ export function calculateBudgetedKBN(
|
|
|
148
175
|
return [numerator, denominator];
|
|
149
176
|
}
|
|
150
177
|
|
|
178
|
+
/**
|
|
179
|
+
* Calculates the largest peg move affordable within `budget`, capped so it never overshoots
|
|
180
|
+
* `targetPrice`'s implied peg. Mirrors the "use full budget peg" branch of `adjust_amm` in
|
|
181
|
+
* `vlp/amm/math/repeg.rs`: computes a per-peg-unit cost from the AMM's inventory skew, then
|
|
182
|
+
* returns `targetPeg` directly whenever moving toward it is free or revenue-generating
|
|
183
|
+
* (`useTargetPeg`), otherwise walks the peg by `budget / perPegCost` and floors it at 1.
|
|
184
|
+
* @param amm AMM state (uses `quoteAssetReserve`, `terminalQuoteAssetReserve`, `baseAssetReserve`, `pegMultiplier`).
|
|
185
|
+
* @param budget Quote budget available to spend on the repeg, QUOTE_PRECISION (1e6).
|
|
186
|
+
* @param targetPrice Oracle-implied target price driving the optimal peg, PRICE_PRECISION (1e6).
|
|
187
|
+
* @returns New peg multiplier, PEG_PRECISION (1e6), never below 1.
|
|
188
|
+
*/
|
|
151
189
|
export function calculateBudgetedPeg(
|
|
152
190
|
amm: AMM,
|
|
153
191
|
budget: BN,
|