@velocity-exchange/sdk 0.2.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
package/lib/node/math/oracles.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMultipleBetweenOracleSources = exports.getNewOracleConfPct = exports.calculateLiveOracleStd = exports.calculateLiveOracleTwap = exports.isOracleTooDivergent = exports.isOracleValid = exports.getOracleValidity = exports.getMaxConfidenceIntervalMultiplier = exports.oraclePriceBands = void 0;
|
|
3
|
+
exports.getMultipleBetweenOracleSources = exports.getNewOracleConfPct = exports.calculateLiveOracleStd = exports.calculateLiveOracleTwap = exports.isMarkOracleTooDivergent = exports.isOracleTooDivergent = exports.isOracleValid = exports.getOracleValidity = exports.getMaxConfidenceIntervalMultiplier = exports.oraclePriceBands = void 0;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
6
6
|
const assert_1 = require("../assert/assert");
|
|
7
7
|
const anchor_1 = require("../isomorphic/anchor");
|
|
8
|
+
/**
|
|
9
|
+
* Computes a generic sanity band around the oracle price, sized by the gap between the
|
|
10
|
+
* market's initial and maintenance margin ratios (a wider margin gap allows a wider band).
|
|
11
|
+
* This is a coarse UI/client-side sanity check, not the exact on-chain price-band gate —
|
|
12
|
+
* order and settlement price-divergence checks on-chain compare the 5-min oracle TWAP
|
|
13
|
+
* spread via `isMarkOracleTooDivergent`/`isOracleTooDivergent` instead.
|
|
14
|
+
* @param market Perp market whose `marginRatioInitial`/`marginRatioMaintenance` (MARGIN_PRECISION, 1e4) set the band width.
|
|
15
|
+
* @param oraclePriceData Must provide `price`, PRICE_PRECISION (1e6).
|
|
16
|
+
* @returns `[lowerBound, upperBound]`, both PRICE_PRECISION (1e6).
|
|
17
|
+
*/
|
|
8
18
|
function oraclePriceBands(market, oraclePriceData) {
|
|
9
19
|
const maxPercentDiff = market.marginRatioInitial - market.marginRatioMaintenance;
|
|
10
20
|
const offset = oraclePriceData.price
|
|
@@ -14,6 +24,14 @@ function oraclePriceBands(market, oraclePriceData) {
|
|
|
14
24
|
return [oraclePriceData.price.sub(offset), oraclePriceData.price.add(offset)];
|
|
15
25
|
}
|
|
16
26
|
exports.oraclePriceBands = oraclePriceBands;
|
|
27
|
+
/**
|
|
28
|
+
* Returns the per-market multiplier applied to `confidenceIntervalMaxSize` when checking
|
|
29
|
+
* oracle confidence-interval validity, mirroring `PerpMarket::get_max_confidence_interval_multiplier`.
|
|
30
|
+
* Riskier contract tiers tolerate a wider oracle confidence interval before being flagged
|
|
31
|
+
* invalid: 1x for tier A/B, 2x for tier C, 10x for Speculative, 50x for HighlySpeculative and Isolated.
|
|
32
|
+
* @param market Perp market whose `contractTier` selects the multiplier.
|
|
33
|
+
* @returns Unitless multiplier (dimensionless BN).
|
|
34
|
+
*/
|
|
17
35
|
function getMaxConfidenceIntervalMultiplier(market) {
|
|
18
36
|
let maxConfidenceIntervalMultiplier;
|
|
19
37
|
if ((0, types_1.isVariant)(market.contractTier, 'a')) {
|
|
@@ -34,6 +52,23 @@ function getMaxConfidenceIntervalMultiplier(market) {
|
|
|
34
52
|
return maxConfidenceIntervalMultiplier;
|
|
35
53
|
}
|
|
36
54
|
exports.getMaxConfidenceIntervalMultiplier = getMaxConfidenceIntervalMultiplier;
|
|
55
|
+
/**
|
|
56
|
+
* Classifies an oracle reading's validity for `market`, mirroring `oracle_validity` in
|
|
57
|
+
* `programs/velocity/src/math/oracle.rs`. Checks are evaluated in severity order and the
|
|
58
|
+
* first failing check wins: non-positive price, too volatile vs the oracle TWAP
|
|
59
|
+
* (`tooVolatileRatio`), confidence interval too wide (scaled by
|
|
60
|
+
* `getMaxConfidenceIntervalMultiplier`), stale for margin use, insufficient oracle data
|
|
61
|
+
* points, then stale for AMM use (low-risk or immediate, gated by the market's
|
|
62
|
+
* `oracleLowRiskSlotDelayOverride`/`oracleSlotDelayOverride`). Returns `OracleValidity.Valid`
|
|
63
|
+
* only if none of these trip. Callers typically gate on the returned enum via
|
|
64
|
+
* `isOracleValidForAction`-style helpers rather than comparing directly.
|
|
65
|
+
* @param market Perp market providing contract tier, oracle source, and stale-slot overrides.
|
|
66
|
+
* @param oraclePriceData Oracle reading to validate (`price`/`confidence` PRICE_PRECISION 1e6, `slot`).
|
|
67
|
+
* @param oracleGuardRails Protocol-wide validity thresholds (`state.oracleGuardRails`).
|
|
68
|
+
* @param slot Current slot, used to compute oracle delay.
|
|
69
|
+
* @param oracleStalenessBuffer Extra slots subtracted from the raw oracle delay before staleness checks (default 5) to absorb normal reporting lag.
|
|
70
|
+
* @returns The most severe `OracleValidity` classification that applies.
|
|
71
|
+
*/
|
|
37
72
|
function getOracleValidity(market, oraclePriceData, oracleGuardRails, slot, oracleStalenessBuffer = numericConstants_1.FIVE) {
|
|
38
73
|
const isNonPositive = oraclePriceData.price.lte(numericConstants_1.ZERO);
|
|
39
74
|
const isTooVolatile = anchor_1.BN.max(oraclePriceData.price, market.marketStats.historicalOracleData.lastOraclePriceTwap)
|
|
@@ -85,6 +120,19 @@ function getOracleValidity(market, oraclePriceData, oracleGuardRails, slot, orac
|
|
|
85
120
|
}
|
|
86
121
|
}
|
|
87
122
|
exports.getOracleValidity = getOracleValidity;
|
|
123
|
+
/**
|
|
124
|
+
* Simplified, AMM-fill-oriented validity check: `true` only if the oracle has sufficient
|
|
125
|
+
* data points, is not stale (vs `slotsBeforeStaleForAmm`), has a positive price, isn't too
|
|
126
|
+
* volatile vs the market's oracle TWAP, and its confidence interval isn't too wide. Unlike
|
|
127
|
+
* `getOracleValidity` this does not distinguish "stale for margin" or "low risk" tiers — it
|
|
128
|
+
* is a single valid/invalid gate specifically for whether the AMM may fill against this
|
|
129
|
+
* price.
|
|
130
|
+
* @param market Perp market providing the oracle TWAP and contract tier for the confidence multiplier.
|
|
131
|
+
* @param oraclePriceData Oracle reading to validate (`price`/`confidence` PRICE_PRECISION 1e6).
|
|
132
|
+
* @param oracleGuardRails Protocol-wide validity thresholds.
|
|
133
|
+
* @param slot Current slot, used to compute oracle staleness.
|
|
134
|
+
* @returns `true` if the oracle is valid for an AMM-only fill.
|
|
135
|
+
*/
|
|
88
136
|
function isOracleValid(market, oraclePriceData, oracleGuardRails, slot) {
|
|
89
137
|
// checks if oracle is valid for an AMM only fill
|
|
90
138
|
const stats = market.marketStats;
|
|
@@ -110,6 +158,16 @@ function isOracleValid(market, oraclePriceData, oracleGuardRails, slot) {
|
|
|
110
158
|
isConfidenceTooLarge);
|
|
111
159
|
}
|
|
112
160
|
exports.isOracleValid = isOracleValid;
|
|
161
|
+
/**
|
|
162
|
+
* True when the live oracle price has diverged from the market's 5-minute oracle TWAP by
|
|
163
|
+
* more than the configured threshold (with a 50% safety floor). Distinct from
|
|
164
|
+
* `isMarkOracleTooDivergent`, which compares mark (reserve) price to the same TWAP instead
|
|
165
|
+
* of the live oracle price to itself — this catches an oracle feed itself jumping abruptly.
|
|
166
|
+
* @param marketStats Market stats providing `historicalOracleData.lastOraclePriceTwap5Min`, PRICE_PRECISION (1e6).
|
|
167
|
+
* @param oraclePriceData Live oracle reading (`price`, PRICE_PRECISION 1e6).
|
|
168
|
+
* @param oracleGuardRails Protocol-wide guard rails; uses `priceDivergence.oracleTwap5MinPercentDivergence`, PERCENTAGE_PRECISION (1e6).
|
|
169
|
+
* @returns `true` if the oracle-vs-TWAP spread exceeds the divergence threshold.
|
|
170
|
+
*/
|
|
113
171
|
function isOracleTooDivergent(marketStats, oraclePriceData, oracleGuardRails) {
|
|
114
172
|
const oracleSpreadPct = oraclePriceData.price
|
|
115
173
|
.sub(marketStats.historicalOracleData.lastOraclePriceTwap5Min)
|
|
@@ -120,6 +178,34 @@ function isOracleTooDivergent(marketStats, oraclePriceData, oracleGuardRails) {
|
|
|
120
178
|
return tooDivergent;
|
|
121
179
|
}
|
|
122
180
|
exports.isOracleTooDivergent = isOracleTooDivergent;
|
|
181
|
+
/**
|
|
182
|
+
* True when `|priceSpreadPct|` exceeds the configured mark/oracle divergence threshold,
|
|
183
|
+
* with a 10% safety floor. Mirrors `is_mark_oracle_too_divergent` in
|
|
184
|
+
* `programs/velocity/src/math/oracle.rs` — a pure decision helper used both to block
|
|
185
|
+
* funding-rate updates (`block_operation`) and to reject orders/settlement when the market
|
|
186
|
+
* has moved too far from its 5-minute oracle TWAP (`validate_market_within_price_band`,
|
|
187
|
+
* which calls this once with the mark-vs-TWAP spread and once with the oracle-vs-TWAP
|
|
188
|
+
* spread, blocking on whichever is more divergent).
|
|
189
|
+
* @param priceSpreadPct Mark (or oracle) price spread vs the 5-minute oracle TWAP, PERCENTAGE_PRECISION (1e6, signed).
|
|
190
|
+
* @param oracleGuardRails Protocol-wide guard rails; uses `priceDivergence.markOraclePercentDivergence`, PERCENTAGE_PRECISION (1e6).
|
|
191
|
+
* @returns `true` if the spread exceeds `max(markOraclePercentDivergence, 10%)`.
|
|
192
|
+
*/
|
|
193
|
+
function isMarkOracleTooDivergent(priceSpreadPct, oracleGuardRails) {
|
|
194
|
+
const maxDivergence = anchor_1.BN.max(oracleGuardRails.priceDivergence.markOraclePercentDivergence, numericConstants_1.PERCENTAGE_PRECISION.div(numericConstants_1.TEN));
|
|
195
|
+
return priceSpreadPct.abs().gt(maxDivergence);
|
|
196
|
+
}
|
|
197
|
+
exports.isMarkOracleTooDivergent = isMarkOracleTooDivergent;
|
|
198
|
+
/**
|
|
199
|
+
* Projects the oracle TWAP forward to `now` without requiring an on-chain update,
|
|
200
|
+
* time-weighting the stored TWAP against the live oracle price clamped to within 1/3 of the
|
|
201
|
+
* current TWAP (so a single outlier tick can't swing the live estimate too far). Uses the
|
|
202
|
+
* 5-minute TWAP field when `period` equals `FIVE_MINUTE`, otherwise the funding-period (hourly) TWAP field.
|
|
203
|
+
* @param histOracleData Market's historical oracle data (TWAP fields, PRICE_PRECISION 1e6, and their last-update timestamp).
|
|
204
|
+
* @param oraclePriceData Live oracle reading (`price`, PRICE_PRECISION 1e6).
|
|
205
|
+
* @param now Current unix timestamp (seconds).
|
|
206
|
+
* @param period TWAP window length in seconds — pass `FIVE_MINUTE` for the 5-minute TWAP, otherwise the funding period is assumed.
|
|
207
|
+
* @returns Live-projected oracle TWAP, PRICE_PRECISION (1e6).
|
|
208
|
+
*/
|
|
123
209
|
function calculateLiveOracleTwap(histOracleData, oraclePriceData, now, period) {
|
|
124
210
|
let oracleTwap = undefined;
|
|
125
211
|
if (period.eq(numericConstants_1.FIVE_MINUTE)) {
|
|
@@ -141,6 +227,15 @@ function calculateLiveOracleTwap(histOracleData, oraclePriceData, now, period) {
|
|
|
141
227
|
return newOracleTwap;
|
|
142
228
|
}
|
|
143
229
|
exports.calculateLiveOracleTwap = calculateLiveOracleTwap;
|
|
230
|
+
/**
|
|
231
|
+
* Live-projected oracle price standard deviation, combining the live oracle price's
|
|
232
|
+
* deviation from the freshly-projected 1hr and 5min TWAPs with the decayed stored
|
|
233
|
+
* `marketStats.oracleStd`. Feeds `calculateVolSpreadBN`'s volatility-based spread component.
|
|
234
|
+
* @param marketStats Market stats providing `historicalOracleData`, `fundingPeriod`, and the stored `oracleStd`.
|
|
235
|
+
* @param oraclePriceData Live oracle reading (`price`, PRICE_PRECISION 1e6).
|
|
236
|
+
* @param now Current unix timestamp (seconds).
|
|
237
|
+
* @returns Live oracle price standard deviation, PRICE_PRECISION (1e6).
|
|
238
|
+
*/
|
|
144
239
|
function calculateLiveOracleStd(marketStats, oraclePriceData, now) {
|
|
145
240
|
const sinceLastUpdate = anchor_1.BN.max(numericConstants_1.ONE, now.sub(marketStats.historicalOracleData.lastOraclePriceTwapTs));
|
|
146
241
|
const sinceStart = anchor_1.BN.max(numericConstants_1.ZERO, marketStats.fundingPeriod.sub(sinceLastUpdate));
|
|
@@ -151,6 +246,18 @@ function calculateLiveOracleStd(marketStats, oraclePriceData, now) {
|
|
|
151
246
|
return oracleStd;
|
|
152
247
|
}
|
|
153
248
|
exports.calculateLiveOracleStd = calculateLiveOracleStd;
|
|
249
|
+
/**
|
|
250
|
+
* Live-projected oracle confidence interval as a fraction of `reservePrice`, floored by a
|
|
251
|
+
* decaying lower bound derived from the market's last stored confidence (so confidence
|
|
252
|
+
* can't be understated immediately after a stale update — it decays back down over ~20
|
|
253
|
+
* seconds). Feeds the volatility-spread and quote calculations that need a current
|
|
254
|
+
* confidence estimate without waiting for the next on-chain refresh.
|
|
255
|
+
* @param marketStats Market stats providing `lastOracleConfPct` and `historicalOracleData`'s last-update timestamp.
|
|
256
|
+
* @param oraclePriceData Live oracle reading; uses `confidence`, PRICE_PRECISION (1e6).
|
|
257
|
+
* @param reservePrice AMM reserve (mark) price used to express confidence as a fraction, PRICE_PRECISION (1e6).
|
|
258
|
+
* @param now Current unix timestamp (seconds).
|
|
259
|
+
* @returns Oracle confidence as a fraction of price, BID_ASK_SPREAD_PRECISION (1e6).
|
|
260
|
+
*/
|
|
154
261
|
function getNewOracleConfPct(marketStats, oraclePriceData, reservePrice, now) {
|
|
155
262
|
const confInterval = oraclePriceData.confidence || numericConstants_1.ZERO;
|
|
156
263
|
const sinceLastUpdate = anchor_1.BN.max(numericConstants_1.ZERO, now.sub(marketStats.historicalOracleData.lastOraclePriceTwapTs));
|
|
@@ -166,6 +273,16 @@ function getNewOracleConfPct(marketStats, oraclePriceData, reservePrice, now) {
|
|
|
166
273
|
return confIntervalPctResult;
|
|
167
274
|
}
|
|
168
275
|
exports.getNewOracleConfPct = getNewOracleConfPct;
|
|
276
|
+
/**
|
|
277
|
+
* Returns the scale factor to convert a price quoted under `firstOracleSource` into the
|
|
278
|
+
* equivalent price under `secondOracleSource`, for the Pyth Lazer "scaled" variants
|
|
279
|
+
* (`pythLazer1K`/`pythLazer1M` report a price 1,000x/1,000,000x smaller than `pythLazer` for
|
|
280
|
+
* high-priced assets). Returns `{1, 1}` (no conversion) for any other source pair.
|
|
281
|
+
* @param firstOracleSource Oracle source the input price is denominated in.
|
|
282
|
+
* @param secondOracleSource Oracle source to convert the price into.
|
|
283
|
+
* @returns `{ numerator, denominator }` such that `price * numerator / denominator` converts between sources.
|
|
284
|
+
* @throws if either source is a removed Pyth-pull variant (`pythPull`, `pyth1KPull`, `pyth1MPull`, `pythStableCoinPull`).
|
|
285
|
+
*/
|
|
169
286
|
function getMultipleBetweenOracleSources(firstOracleSource, secondOracleSource) {
|
|
170
287
|
if ((0, types_1.isOneOfVariant)(firstOracleSource, [
|
|
171
288
|
'pythPull',
|
|
@@ -1,31 +1,139 @@
|
|
|
1
1
|
import { PerpMarketAccount, AMM, MarketStats, Order, PositionDirection, MarketTypeStr, StateAccount } from '../types';
|
|
2
2
|
import { BN } from '../isomorphic/anchor';
|
|
3
3
|
import { MMOraclePriceData, OraclePriceData } from '../oracles/types';
|
|
4
|
+
/** 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). */
|
|
4
5
|
export declare function standardizeBaseAssetAmount(baseAssetAmount: BN, stepSize: BN): BN;
|
|
6
|
+
/**
|
|
7
|
+
* Rounds `price` to a multiple of `tickSize`, rounding in the direction that's conservative
|
|
8
|
+
* for the order's side: down for a long (never overpay past the tick) and up for a short
|
|
9
|
+
* (never undersell past the tick). Used across auction pricing and limit-price derivation so
|
|
10
|
+
* every price the SDK produces already lines up with the market's `orderTickSize` before it
|
|
11
|
+
* reaches the program, avoiding the on-chain tick-size rejection this standardization fix
|
|
12
|
+
* addresses. A `tickSize <= 0` (unset/no constraint) or `price == 0` passes through
|
|
13
|
+
* unchanged.
|
|
14
|
+
* @param price Price to standardize, PRICE_PRECISION (1e6).
|
|
15
|
+
* @param tickSize Market's order tick size, PRICE_PRECISION (1e6). Non-positive means "no tick constraint."
|
|
16
|
+
* @param direction Order side; determines rounding direction.
|
|
17
|
+
* @returns `price` rounded to the nearest tick in the conservative direction, PRICE_PRECISION (1e6).
|
|
18
|
+
*/
|
|
5
19
|
export declare function standardizePrice(price: BN, tickSize: BN, direction: PositionDirection): BN;
|
|
6
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Resolves an order's effective limit price at the current slot, standardized to
|
|
22
|
+
* `tickSize`: the in-progress auction price while the auction hasn't completed, the
|
|
23
|
+
* oracle-offset price for oracle-pegged orders, the order's fixed `price` if set, or
|
|
24
|
+
* `fallbackPrice` (also standardized) for a market order with no price/offset/auction.
|
|
25
|
+
* @param order Order to price.
|
|
26
|
+
* @param oraclePriceData Oracle price source — use `MMOraclePriceData` for perp orders, `OraclePriceData` for spot.
|
|
27
|
+
* @param slot Current slot, used to evaluate auction progress.
|
|
28
|
+
* @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).
|
|
29
|
+
* @param tickSize Market's order tick size, PRICE_PRECISION (1e6). Defaults to `ONE` (no effective standardization).
|
|
30
|
+
* @returns Limit price, PRICE_PRECISION (1e6); `undefined` if the order has no resolvable price and no `fallbackPrice` was given.
|
|
31
|
+
*/
|
|
32
|
+
export declare function getLimitPrice<T extends MarketTypeStr>(order: Order, oraclePriceData: T extends 'spot' ? OraclePriceData : MMOraclePriceData, slot: number, fallbackPrice?: BN, tickSize?: BN): BN | undefined;
|
|
33
|
+
/** 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. */
|
|
7
34
|
export declare function hasLimitPrice(order: Order, slot: number): boolean;
|
|
35
|
+
/** True if the order still has an active (incomplete) auction with a nonzero start or end price. */
|
|
8
36
|
export declare function hasAuctionPrice(order: Order, slot: number): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* True if the AMM is currently a fillable liquidity source for `order` — either it's
|
|
39
|
+
* expired (always fillable to clean up), or the AMM has fillable size at the order's limit
|
|
40
|
+
* price AND is an allowed liquidity source right now (`isFallbackAvailableLiquiditySource`,
|
|
41
|
+
* which gates on oracle validity and low-risk-for-AMM classification).
|
|
42
|
+
* @param order Order to check.
|
|
43
|
+
* @param market Perp market the order is on.
|
|
44
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
45
|
+
* @param slot Current slot.
|
|
46
|
+
* @param ts Current unix timestamp (seconds), used for expiry.
|
|
47
|
+
* @param state Global state, providing oracle guard rails and paused-operations flags.
|
|
48
|
+
* @returns `true` if the AMM may currently fill this order.
|
|
49
|
+
*/
|
|
9
50
|
export declare function isFillableByVAMM(order: Order, market: PerpMarketAccount, mmOraclePriceData: MMOraclePriceData, slot: number, ts: number, state: StateAccount): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* True if filling `order` against the AMM is considered low-risk even when the MM oracle
|
|
53
|
+
* isn't fully valid, approximating `Order::is_low_risk_for_amm` in
|
|
54
|
+
* `programs/velocity/src/state/user.rs`. Always false for spot orders. True when the order
|
|
55
|
+
* was placed at or before the MM oracle's slot (so it can't be exploiting oracle staleness),
|
|
56
|
+
* during liquidation, or when the order carries the `SafeTriggerOrder` bit flag.
|
|
57
|
+
* @param order Order to check.
|
|
58
|
+
* @param mmOraclePriceData Current MM oracle price data, used for its `slot`.
|
|
59
|
+
* @param isLiquidation Whether the fill is part of a liquidation (always low-risk if so).
|
|
60
|
+
* @returns `true` if the order is low-risk for an AMM fill under a degraded oracle.
|
|
61
|
+
*/
|
|
10
62
|
export declare function isLowRiskForAmm(order: Order, mmOraclePriceData: MMOraclePriceData, isLiquidation?: boolean): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Calculates how much of `order` the AMM can currently fill, capped by both the order's
|
|
65
|
+
* limit price (via `calculateBaseAssetAmountToFillUpToLimitPrice`, standardized to
|
|
66
|
+
* `market.orderTickSize`) and the AMM's own max fillable size
|
|
67
|
+
* (`calculateMaxBaseAssetAmountFillable`). Returns zero for a not-yet-triggered
|
|
68
|
+
* trigger order. Prices against `calculateUpdatedAMM` (i.e. the repegged/curve-updated AMM
|
|
69
|
+
* state), not the raw stored reserves.
|
|
70
|
+
* @param order Order to evaluate.
|
|
71
|
+
* @param market Perp market the order is on.
|
|
72
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
73
|
+
* @param slot Current slot.
|
|
74
|
+
* @returns Fillable base asset amount, BASE_PRECISION (1e9).
|
|
75
|
+
*/
|
|
11
76
|
export declare function calculateBaseAssetAmountForAmmToFulfill(order: Order, market: PerpMarketAccount, mmOraclePriceData: MMOraclePriceData, slot: number): BN;
|
|
77
|
+
/**
|
|
78
|
+
* Calculates how much base asset the AMM can trade against `order` without crossing its
|
|
79
|
+
* limit price, adjusting the limit by one tick in the order's favor (so the AMM never fills
|
|
80
|
+
* exactly at the boundary) before asking `calculateMaxBaseAssetAmountToTrade` how much
|
|
81
|
+
* inventory the AMM has at that price. Returns zero if the AMM would only trade in the
|
|
82
|
+
* opposite direction from the order. Caps the result at the order's unfilled remainder.
|
|
83
|
+
* @param order Order being filled.
|
|
84
|
+
* @param amm AMM state to trade against.
|
|
85
|
+
* @param marketStats Market stats needed to compute spread reserves.
|
|
86
|
+
* @param orderStepSize Market's order step size, BASE_PRECISION (1e9), used to standardize the result.
|
|
87
|
+
* @param orderTickSize Market's order tick size, PRICE_PRECISION (1e6), used to adjust the limit price by one tick.
|
|
88
|
+
* @param limitPrice Order's limit price, PRICE_PRECISION (1e6).
|
|
89
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
90
|
+
* @returns Fillable base asset amount up to the limit price, BASE_PRECISION (1e9).
|
|
91
|
+
*/
|
|
12
92
|
export declare function calculateBaseAssetAmountToFillUpToLimitPrice(order: Order, amm: AMM, marketStats: MarketStats, orderStepSize: BN, orderTickSize: BN, limitPrice: BN, mmOraclePriceData: MMOraclePriceData): BN;
|
|
93
|
+
/**
|
|
94
|
+
* True if `order.maxTs` has passed as of `ts`. Never true for trigger orders, non-`open`
|
|
95
|
+
* orders, or orders with no expiry (`maxTs == 0`).
|
|
96
|
+
* @param order Order to check.
|
|
97
|
+
* @param ts Current unix timestamp (seconds).
|
|
98
|
+
* @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.
|
|
99
|
+
* @param bufferSeconds Grace period in seconds applied when `enforceBuffer` is true (default 15).
|
|
100
|
+
* @returns `true` if the order has expired.
|
|
101
|
+
*/
|
|
13
102
|
export declare function isOrderExpired(order: Order, ts: number, enforceBuffer?: boolean, bufferSeconds?: number): boolean;
|
|
103
|
+
/** True if `order.orderType` is `market`, `triggerMarket`, or `oracle`. */
|
|
14
104
|
export declare function isMarketOrder(order: Order): boolean;
|
|
105
|
+
/** True if `order.orderType` is `limit` or `triggerLimit`. */
|
|
15
106
|
export declare function isLimitOrder(order: Order): boolean;
|
|
107
|
+
/** True if the order requires a trigger condition to fire before it becomes fillable (`triggerMarket`/`triggerLimit`). */
|
|
16
108
|
export declare function mustBeTriggered(order: Order): boolean;
|
|
109
|
+
/** True if a trigger order's condition has already fired (`triggeredAbove`/`triggeredBelow`). */
|
|
17
110
|
export declare function isTriggered(order: Order): boolean;
|
|
111
|
+
/** 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. */
|
|
18
112
|
export declare function isRestingLimitOrder(order: Order, slot: number): boolean;
|
|
113
|
+
/** True if the order was submitted via the signed-message (swift/off-chain relay) path (`OrderBitFlag.SignedMessage`). */
|
|
19
114
|
export declare function isSignedMsgOrder(order: Order): boolean;
|
|
115
|
+
/** True if the order carries a builder-fee attribution (`OrderBitFlag.HasBuilder`) — the associated builder is entitled to a fee cut on fill. */
|
|
20
116
|
export declare function hasBuilder(order: Order): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Resolves the effective base asset amount for a reduce-only order: caps it so the order
|
|
119
|
+
* can't flip the position through zero (a reduce-only long can close at most the existing
|
|
120
|
+
* short, and vice versa). Non-reduce-only orders pass through `order.baseAssetAmount`
|
|
121
|
+
* unchanged.
|
|
122
|
+
* @param order Order to resolve.
|
|
123
|
+
* @param existingBaseAssetAmount Current position size before this order fills, BASE_PRECISION (1e9, signed).
|
|
124
|
+
* @returns Effective base asset amount, BASE_PRECISION (1e9).
|
|
125
|
+
*/
|
|
21
126
|
export declare function calculateOrderBaseAssetAmount(order: Order, existingBaseAssetAmount: BN): BN;
|
|
22
127
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
128
|
+
* Inverts `calculateSizePremiumLiabilityWeight` via binary search: given a target margin ratio
|
|
129
|
+
* (liability weight), finds the largest position `size` whose size-premium-adjusted liability
|
|
130
|
+
* weight is still `<= target`. Used to size down an order/position to stay under a margin-ratio
|
|
131
|
+
* target as size grows (the on-chain weight increases with `sqrt(size)` via `imfFactor`).
|
|
132
|
+
* @param target Target (max acceptable) liability weight, MARGIN_PRECISION (1e4).
|
|
133
|
+
* @param imfFactor Market's initial-margin-fraction scaling factor, SPOT_MARKET_IMF_PRECISION-scaled.
|
|
134
|
+
* @param liabilityWeight Market's base (zero-size) liability weight, MARGIN_PRECISION (1e4).
|
|
135
|
+
* @param market Perp market providing `maxOpenInterest` as a final cap on the result.
|
|
136
|
+
* @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).
|
|
29
137
|
*/
|
|
30
138
|
export declare function maxSizeForTargetLiabilityWeightBN(target: BN, imfFactor: BN, liabilityWeight: BN, market: PerpMarketAccount): BN | null;
|
|
31
139
|
//# sourceMappingURL=orders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/math/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,iBAAiB,EACjB,GAAG,EACH,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,aAAa,EAEb,YAAY,EACZ,MAAM,UAAU,CAAC;AAOlB,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAatE,wBAAgB,0BAA0B,CACzC,eAAe,EAAE,EAAE,EACnB,QAAQ,EAAE,EAAE,GACV,EAAE,CAGJ;AAED,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,iBAAiB,GAC1B,EAAE,
|
|
1
|
+
{"version":3,"file":"orders.d.ts","sourceRoot":"","sources":["../../../src/math/orders.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,iBAAiB,EACjB,GAAG,EACH,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,aAAa,EAEb,YAAY,EACZ,MAAM,UAAU,CAAC;AAOlB,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAatE,mYAAmY;AACnY,wBAAgB,0BAA0B,CACzC,eAAe,EAAE,EAAE,EACnB,QAAQ,EAAE,EAAE,GACV,EAAE,CAGJ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,EAAE,EACZ,SAAS,EAAE,iBAAiB,GAC1B,EAAE,CAsBJ;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,aAAa,EACpD,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,CAAC,SAAS,MAAM,GAAG,eAAe,GAAG,iBAAiB,EACvE,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,EAAE,EAClB,QAAQ,GAAE,EAAQ,GAChB,EAAE,GAAG,SAAS,CAgBhB;AAED,mJAAmJ;AACnJ,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMjE;AAED,oGAAoG;AACpG,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,YAAY,GACjB,OAAO,CAiBT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC9B,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,CAAC,EAAE,OAAO,GACrB,OAAO,CAcT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uCAAuC,CACtD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB,EACzB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,MAAM,GACV,EAAE,CAoCJ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,4CAA4C,CAC3D,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,EAAE,EACjB,aAAa,EAAE,EAAE,EACjB,UAAU,EAAE,EAAE,EACd,iBAAiB,EAAE,iBAAiB,GAClC,EAAE,CA8BJ;AAYD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,MAAM,EACV,aAAa,UAAQ,EACrB,aAAa,SAAK,GAChB,OAAO,CAiBT;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEnD;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAElD;AAED,0HAA0H;AAC1H,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAErD;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAKjD;AAED,0JAA0J;AAC1J,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMvE;AAED,0HAA0H;AAC1H,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEtD;AAED,iJAAiJ;AACjJ,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAEhD;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC5C,KAAK,EAAE,KAAK,EACZ,uBAAuB,EAAE,EAAE,GACzB,EAAE,CAaJ;AAGD;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,EAAE,EACb,eAAe,EAAE,EAAE,EACnB,MAAM,EAAE,iBAAiB,GACvB,EAAE,GAAG,IAAI,CAsDX"}
|
package/lib/node/math/orders.js
CHANGED
|
@@ -7,14 +7,33 @@ const anchor_1 = require("../isomorphic/anchor");
|
|
|
7
7
|
const auction_1 = require("./auction");
|
|
8
8
|
const amm_1 = require("./amm");
|
|
9
9
|
const margin_1 = require("./margin");
|
|
10
|
+
/** 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). */
|
|
10
11
|
function standardizeBaseAssetAmount(baseAssetAmount, stepSize) {
|
|
11
12
|
const remainder = baseAssetAmount.mod(stepSize);
|
|
12
13
|
return baseAssetAmount.sub(remainder);
|
|
13
14
|
}
|
|
14
15
|
exports.standardizeBaseAssetAmount = standardizeBaseAssetAmount;
|
|
16
|
+
/**
|
|
17
|
+
* Rounds `price` to a multiple of `tickSize`, rounding in the direction that's conservative
|
|
18
|
+
* for the order's side: down for a long (never overpay past the tick) and up for a short
|
|
19
|
+
* (never undersell past the tick). Used across auction pricing and limit-price derivation so
|
|
20
|
+
* every price the SDK produces already lines up with the market's `orderTickSize` before it
|
|
21
|
+
* reaches the program, avoiding the on-chain tick-size rejection this standardization fix
|
|
22
|
+
* addresses. A `tickSize <= 0` (unset/no constraint) or `price == 0` passes through
|
|
23
|
+
* unchanged.
|
|
24
|
+
* @param price Price to standardize, PRICE_PRECISION (1e6).
|
|
25
|
+
* @param tickSize Market's order tick size, PRICE_PRECISION (1e6). Non-positive means "no tick constraint."
|
|
26
|
+
* @param direction Order side; determines rounding direction.
|
|
27
|
+
* @returns `price` rounded to the nearest tick in the conservative direction, PRICE_PRECISION (1e6).
|
|
28
|
+
*/
|
|
15
29
|
function standardizePrice(price, tickSize, direction) {
|
|
16
30
|
if (price.eq(numericConstants_1.ZERO)) {
|
|
17
|
-
|
|
31
|
+
return price;
|
|
32
|
+
}
|
|
33
|
+
// A non-positive tick size means "no tick constraint" (e.g. unset markets);
|
|
34
|
+
// on-chain markets always have tick_size >= 1, but guard against a zero
|
|
35
|
+
// divisor rather than throwing.
|
|
36
|
+
if (tickSize.lte(numericConstants_1.ZERO)) {
|
|
18
37
|
return price;
|
|
19
38
|
}
|
|
20
39
|
const remainder = price.mod(tickSize);
|
|
@@ -29,38 +48,79 @@ function standardizePrice(price, tickSize, direction) {
|
|
|
29
48
|
}
|
|
30
49
|
}
|
|
31
50
|
exports.standardizePrice = standardizePrice;
|
|
32
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Resolves an order's effective limit price at the current slot, standardized to
|
|
53
|
+
* `tickSize`: the in-progress auction price while the auction hasn't completed, the
|
|
54
|
+
* oracle-offset price for oracle-pegged orders, the order's fixed `price` if set, or
|
|
55
|
+
* `fallbackPrice` (also standardized) for a market order with no price/offset/auction.
|
|
56
|
+
* @param order Order to price.
|
|
57
|
+
* @param oraclePriceData Oracle price source — use `MMOraclePriceData` for perp orders, `OraclePriceData` for spot.
|
|
58
|
+
* @param slot Current slot, used to evaluate auction progress.
|
|
59
|
+
* @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).
|
|
60
|
+
* @param tickSize Market's order tick size, PRICE_PRECISION (1e6). Defaults to `ONE` (no effective standardization).
|
|
61
|
+
* @returns Limit price, PRICE_PRECISION (1e6); `undefined` if the order has no resolvable price and no `fallbackPrice` was given.
|
|
62
|
+
*/
|
|
63
|
+
function getLimitPrice(order, oraclePriceData, slot, fallbackPrice, tickSize = numericConstants_1.ONE) {
|
|
33
64
|
if (hasAuctionPrice(order, slot)) {
|
|
34
|
-
return (0, auction_1.getAuctionPrice)(order, slot, oraclePriceData.price);
|
|
65
|
+
return (0, auction_1.getAuctionPrice)(order, slot, oraclePriceData.price, tickSize);
|
|
35
66
|
}
|
|
36
67
|
else if (!order.oraclePriceOffset.eq(numericConstants_1.ZERO)) {
|
|
37
|
-
|
|
68
|
+
const limitPrice = anchor_1.BN.max(oraclePriceData.price.add(order.oraclePriceOffset), tickSize);
|
|
69
|
+
return standardizePrice(limitPrice, tickSize, order.direction);
|
|
38
70
|
}
|
|
39
71
|
else if (order.price.eq(numericConstants_1.ZERO)) {
|
|
40
|
-
return fallbackPrice
|
|
72
|
+
return fallbackPrice === undefined
|
|
73
|
+
? undefined
|
|
74
|
+
: standardizePrice(fallbackPrice, tickSize, order.direction);
|
|
41
75
|
}
|
|
42
76
|
else {
|
|
43
77
|
return order.price;
|
|
44
78
|
}
|
|
45
79
|
}
|
|
46
80
|
exports.getLimitPrice = getLimitPrice;
|
|
81
|
+
/** 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. */
|
|
47
82
|
function hasLimitPrice(order, slot) {
|
|
48
83
|
return (order.price.gt(numericConstants_1.ZERO) ||
|
|
49
84
|
!order.oraclePriceOffset.eq(numericConstants_1.ZERO) ||
|
|
50
85
|
!(0, auction_1.isAuctionComplete)(order, slot));
|
|
51
86
|
}
|
|
52
87
|
exports.hasLimitPrice = hasLimitPrice;
|
|
88
|
+
/** True if the order still has an active (incomplete) auction with a nonzero start or end price. */
|
|
53
89
|
function hasAuctionPrice(order, slot) {
|
|
54
90
|
return (!(0, auction_1.isAuctionComplete)(order, slot) &&
|
|
55
91
|
(!order.auctionStartPrice.eq(numericConstants_1.ZERO) || !order.auctionEndPrice.eq(numericConstants_1.ZERO)));
|
|
56
92
|
}
|
|
57
93
|
exports.hasAuctionPrice = hasAuctionPrice;
|
|
94
|
+
/**
|
|
95
|
+
* True if the AMM is currently a fillable liquidity source for `order` — either it's
|
|
96
|
+
* expired (always fillable to clean up), or the AMM has fillable size at the order's limit
|
|
97
|
+
* price AND is an allowed liquidity source right now (`isFallbackAvailableLiquiditySource`,
|
|
98
|
+
* which gates on oracle validity and low-risk-for-AMM classification).
|
|
99
|
+
* @param order Order to check.
|
|
100
|
+
* @param market Perp market the order is on.
|
|
101
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
102
|
+
* @param slot Current slot.
|
|
103
|
+
* @param ts Current unix timestamp (seconds), used for expiry.
|
|
104
|
+
* @param state Global state, providing oracle guard rails and paused-operations flags.
|
|
105
|
+
* @returns `true` if the AMM may currently fill this order.
|
|
106
|
+
*/
|
|
58
107
|
function isFillableByVAMM(order, market, mmOraclePriceData, slot, ts, state) {
|
|
59
108
|
return (((0, auction_1.isFallbackAvailableLiquiditySource)(order, mmOraclePriceData, slot, state, market) &&
|
|
60
109
|
calculateBaseAssetAmountForAmmToFulfill(order, market, mmOraclePriceData, slot).gt(numericConstants_1.ZERO)) ||
|
|
61
110
|
isOrderExpired(order, ts));
|
|
62
111
|
}
|
|
63
112
|
exports.isFillableByVAMM = isFillableByVAMM;
|
|
113
|
+
/**
|
|
114
|
+
* True if filling `order` against the AMM is considered low-risk even when the MM oracle
|
|
115
|
+
* isn't fully valid, approximating `Order::is_low_risk_for_amm` in
|
|
116
|
+
* `programs/velocity/src/state/user.rs`. Always false for spot orders. True when the order
|
|
117
|
+
* was placed at or before the MM oracle's slot (so it can't be exploiting oracle staleness),
|
|
118
|
+
* during liquidation, or when the order carries the `SafeTriggerOrder` bit flag.
|
|
119
|
+
* @param order Order to check.
|
|
120
|
+
* @param mmOraclePriceData Current MM oracle price data, used for its `slot`.
|
|
121
|
+
* @param isLiquidation Whether the fill is part of a liquidation (always low-risk if so).
|
|
122
|
+
* @returns `true` if the order is low-risk for an AMM fill under a degraded oracle.
|
|
123
|
+
*/
|
|
64
124
|
function isLowRiskForAmm(order, mmOraclePriceData, isLiquidation) {
|
|
65
125
|
if ((0, types_1.isVariant)(order.marketType, 'spot')) {
|
|
66
126
|
return false;
|
|
@@ -71,11 +131,24 @@ function isLowRiskForAmm(order, mmOraclePriceData, isLiquidation) {
|
|
|
71
131
|
(order.bitFlags & types_1.OrderBitFlag.SafeTriggerOrder) !== 0);
|
|
72
132
|
}
|
|
73
133
|
exports.isLowRiskForAmm = isLowRiskForAmm;
|
|
134
|
+
/**
|
|
135
|
+
* Calculates how much of `order` the AMM can currently fill, capped by both the order's
|
|
136
|
+
* limit price (via `calculateBaseAssetAmountToFillUpToLimitPrice`, standardized to
|
|
137
|
+
* `market.orderTickSize`) and the AMM's own max fillable size
|
|
138
|
+
* (`calculateMaxBaseAssetAmountFillable`). Returns zero for a not-yet-triggered
|
|
139
|
+
* trigger order. Prices against `calculateUpdatedAMM` (i.e. the repegged/curve-updated AMM
|
|
140
|
+
* state), not the raw stored reserves.
|
|
141
|
+
* @param order Order to evaluate.
|
|
142
|
+
* @param market Perp market the order is on.
|
|
143
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
144
|
+
* @param slot Current slot.
|
|
145
|
+
* @returns Fillable base asset amount, BASE_PRECISION (1e9).
|
|
146
|
+
*/
|
|
74
147
|
function calculateBaseAssetAmountForAmmToFulfill(order, market, mmOraclePriceData, slot) {
|
|
75
148
|
if (mustBeTriggered(order) && !isTriggered(order)) {
|
|
76
149
|
return numericConstants_1.ZERO;
|
|
77
150
|
}
|
|
78
|
-
const limitPrice = getLimitPrice(order, mmOraclePriceData, slot);
|
|
151
|
+
const limitPrice = getLimitPrice(order, mmOraclePriceData, slot, undefined, market.orderTickSize);
|
|
79
152
|
let baseAssetAmount;
|
|
80
153
|
const updatedAMM = (0, amm_1.calculateUpdatedAMM)(market.amm, mmOraclePriceData);
|
|
81
154
|
if (limitPrice !== undefined) {
|
|
@@ -88,6 +161,21 @@ function calculateBaseAssetAmountForAmmToFulfill(order, market, mmOraclePriceDat
|
|
|
88
161
|
return anchor_1.BN.min(maxBaseAssetAmount, baseAssetAmount);
|
|
89
162
|
}
|
|
90
163
|
exports.calculateBaseAssetAmountForAmmToFulfill = calculateBaseAssetAmountForAmmToFulfill;
|
|
164
|
+
/**
|
|
165
|
+
* Calculates how much base asset the AMM can trade against `order` without crossing its
|
|
166
|
+
* limit price, adjusting the limit by one tick in the order's favor (so the AMM never fills
|
|
167
|
+
* exactly at the boundary) before asking `calculateMaxBaseAssetAmountToTrade` how much
|
|
168
|
+
* inventory the AMM has at that price. Returns zero if the AMM would only trade in the
|
|
169
|
+
* opposite direction from the order. Caps the result at the order's unfilled remainder.
|
|
170
|
+
* @param order Order being filled.
|
|
171
|
+
* @param amm AMM state to trade against.
|
|
172
|
+
* @param marketStats Market stats needed to compute spread reserves.
|
|
173
|
+
* @param orderStepSize Market's order step size, BASE_PRECISION (1e9), used to standardize the result.
|
|
174
|
+
* @param orderTickSize Market's order tick size, PRICE_PRECISION (1e6), used to adjust the limit price by one tick.
|
|
175
|
+
* @param limitPrice Order's limit price, PRICE_PRECISION (1e6).
|
|
176
|
+
* @param mmOraclePriceData Current MM oracle price data.
|
|
177
|
+
* @returns Fillable base asset amount up to the limit price, BASE_PRECISION (1e9).
|
|
178
|
+
*/
|
|
91
179
|
function calculateBaseAssetAmountToFillUpToLimitPrice(order, amm, marketStats, orderStepSize, orderTickSize, limitPrice, mmOraclePriceData) {
|
|
92
180
|
const adjustedLimitPrice = (0, types_1.isVariant)(order.direction, 'long')
|
|
93
181
|
? limitPrice.sub(orderTickSize)
|
|
@@ -109,6 +197,15 @@ function isSameDirection(firstDirection, secondDirection) {
|
|
|
109
197
|
return (((0, types_1.isVariant)(firstDirection, 'long') && (0, types_1.isVariant)(secondDirection, 'long')) ||
|
|
110
198
|
((0, types_1.isVariant)(firstDirection, 'short') && (0, types_1.isVariant)(secondDirection, 'short')));
|
|
111
199
|
}
|
|
200
|
+
/**
|
|
201
|
+
* True if `order.maxTs` has passed as of `ts`. Never true for trigger orders, non-`open`
|
|
202
|
+
* orders, or orders with no expiry (`maxTs == 0`).
|
|
203
|
+
* @param order Order to check.
|
|
204
|
+
* @param ts Current unix timestamp (seconds).
|
|
205
|
+
* @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.
|
|
206
|
+
* @param bufferSeconds Grace period in seconds applied when `enforceBuffer` is true (default 15).
|
|
207
|
+
* @returns `true` if the order has expired.
|
|
208
|
+
*/
|
|
112
209
|
function isOrderExpired(order, ts, enforceBuffer = false, bufferSeconds = 15) {
|
|
113
210
|
if (mustBeTriggered(order) ||
|
|
114
211
|
!(0, types_1.isVariant)(order.status, 'open') ||
|
|
@@ -125,18 +222,22 @@ function isOrderExpired(order, ts, enforceBuffer = false, bufferSeconds = 15) {
|
|
|
125
222
|
return new anchor_1.BN(ts).gt(maxTs);
|
|
126
223
|
}
|
|
127
224
|
exports.isOrderExpired = isOrderExpired;
|
|
225
|
+
/** True if `order.orderType` is `market`, `triggerMarket`, or `oracle`. */
|
|
128
226
|
function isMarketOrder(order) {
|
|
129
227
|
return (0, types_1.isOneOfVariant)(order.orderType, ['market', 'triggerMarket', 'oracle']);
|
|
130
228
|
}
|
|
131
229
|
exports.isMarketOrder = isMarketOrder;
|
|
230
|
+
/** True if `order.orderType` is `limit` or `triggerLimit`. */
|
|
132
231
|
function isLimitOrder(order) {
|
|
133
232
|
return (0, types_1.isOneOfVariant)(order.orderType, ['limit', 'triggerLimit']);
|
|
134
233
|
}
|
|
135
234
|
exports.isLimitOrder = isLimitOrder;
|
|
235
|
+
/** True if the order requires a trigger condition to fire before it becomes fillable (`triggerMarket`/`triggerLimit`). */
|
|
136
236
|
function mustBeTriggered(order) {
|
|
137
237
|
return (0, types_1.isOneOfVariant)(order.orderType, ['triggerMarket', 'triggerLimit']);
|
|
138
238
|
}
|
|
139
239
|
exports.mustBeTriggered = mustBeTriggered;
|
|
240
|
+
/** True if a trigger order's condition has already fired (`triggeredAbove`/`triggeredBelow`). */
|
|
140
241
|
function isTriggered(order) {
|
|
141
242
|
return (0, types_1.isOneOfVariant)(order.triggerCondition, [
|
|
142
243
|
'triggeredAbove',
|
|
@@ -144,6 +245,7 @@ function isTriggered(order) {
|
|
|
144
245
|
]);
|
|
145
246
|
}
|
|
146
247
|
exports.isTriggered = isTriggered;
|
|
248
|
+
/** 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. */
|
|
147
249
|
function isRestingLimitOrder(order, slot) {
|
|
148
250
|
if (!isLimitOrder(order)) {
|
|
149
251
|
return false;
|
|
@@ -151,16 +253,25 @@ function isRestingLimitOrder(order, slot) {
|
|
|
151
253
|
return order.postOnly || (0, auction_1.isAuctionComplete)(order, slot);
|
|
152
254
|
}
|
|
153
255
|
exports.isRestingLimitOrder = isRestingLimitOrder;
|
|
154
|
-
|
|
256
|
+
/** True if the order was submitted via the signed-message (swift/off-chain relay) path (`OrderBitFlag.SignedMessage`). */
|
|
155
257
|
function isSignedMsgOrder(order) {
|
|
156
|
-
return (order.bitFlags &
|
|
258
|
+
return (order.bitFlags & types_1.OrderBitFlag.SignedMessage) !== 0;
|
|
157
259
|
}
|
|
158
260
|
exports.isSignedMsgOrder = isSignedMsgOrder;
|
|
159
|
-
|
|
261
|
+
/** True if the order carries a builder-fee attribution (`OrderBitFlag.HasBuilder`) — the associated builder is entitled to a fee cut on fill. */
|
|
160
262
|
function hasBuilder(order) {
|
|
161
|
-
return (order.bitFlags &
|
|
263
|
+
return (order.bitFlags & types_1.OrderBitFlag.HasBuilder) !== 0;
|
|
162
264
|
}
|
|
163
265
|
exports.hasBuilder = hasBuilder;
|
|
266
|
+
/**
|
|
267
|
+
* Resolves the effective base asset amount for a reduce-only order: caps it so the order
|
|
268
|
+
* can't flip the position through zero (a reduce-only long can close at most the existing
|
|
269
|
+
* short, and vice versa). Non-reduce-only orders pass through `order.baseAssetAmount`
|
|
270
|
+
* unchanged.
|
|
271
|
+
* @param order Order to resolve.
|
|
272
|
+
* @param existingBaseAssetAmount Current position size before this order fills, BASE_PRECISION (1e9, signed).
|
|
273
|
+
* @returns Effective base asset amount, BASE_PRECISION (1e9).
|
|
274
|
+
*/
|
|
164
275
|
function calculateOrderBaseAssetAmount(order, existingBaseAssetAmount) {
|
|
165
276
|
if (!order.reduceOnly) {
|
|
166
277
|
return order.baseAssetAmount;
|
|
@@ -175,12 +286,15 @@ function calculateOrderBaseAssetAmount(order, existingBaseAssetAmount) {
|
|
|
175
286
|
exports.calculateOrderBaseAssetAmount = calculateOrderBaseAssetAmount;
|
|
176
287
|
// ---------- inverse ----------
|
|
177
288
|
/**
|
|
178
|
-
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
289
|
+
* Inverts `calculateSizePremiumLiabilityWeight` via binary search: given a target margin ratio
|
|
290
|
+
* (liability weight), finds the largest position `size` whose size-premium-adjusted liability
|
|
291
|
+
* weight is still `<= target`. Used to size down an order/position to stay under a margin-ratio
|
|
292
|
+
* target as size grows (the on-chain weight increases with `sqrt(size)` via `imfFactor`).
|
|
293
|
+
* @param target Target (max acceptable) liability weight, MARGIN_PRECISION (1e4).
|
|
294
|
+
* @param imfFactor Market's initial-margin-fraction scaling factor, SPOT_MARKET_IMF_PRECISION-scaled.
|
|
295
|
+
* @param liabilityWeight Market's base (zero-size) liability weight, MARGIN_PRECISION (1e4).
|
|
296
|
+
* @param market Perp market providing `maxOpenInterest` as a final cap on the result.
|
|
297
|
+
* @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).
|
|
184
298
|
*/
|
|
185
299
|
function maxSizeForTargetLiabilityWeightBN(target, imfFactor, liabilityWeight, market) {
|
|
186
300
|
if (target.lt(liabilityWeight))
|
|
@@ -212,9 +326,10 @@ function maxSizeForTargetLiabilityWeightBN(target, imfFactor, liabilityWeight, m
|
|
|
212
326
|
hi = mid.sub(numericConstants_1.ONE);
|
|
213
327
|
}
|
|
214
328
|
}
|
|
215
|
-
// cap at max OI
|
|
329
|
+
// cap at max OI. A maxOpenInterest of 0 means no configured cap (unlimited),
|
|
330
|
+
// matching the on-chain convention — do not treat it as a hard cap of 0.
|
|
216
331
|
const maxOpenInterest = market.maxOpenInterest;
|
|
217
|
-
if (lo.gt(maxOpenInterest)) {
|
|
332
|
+
if (!maxOpenInterest.isZero() && lo.gt(maxOpenInterest)) {
|
|
218
333
|
return maxOpenInterest;
|
|
219
334
|
}
|
|
220
335
|
return lo;
|