@velocity-exchange/sdk 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2136 -4
- package/lib/browser/adminClient.js +2150 -4
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +4 -4
- package/lib/browser/idl/velocity.json +4 -4
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +91 -0
- package/lib/browser/math/exchangeStatus.js +106 -3
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -10
- package/lib/browser/math/orders.js +130 -19
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +31 -0
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +103 -2
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +781 -13
- package/lib/browser/types.js +126 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3322 -215
- package/lib/browser/velocityClient.js +3412 -245
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2136 -4
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2150 -4
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +4 -4
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +4 -4
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +91 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +106 -3
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -10
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +130 -19
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +31 -0
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +103 -2
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +781 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +126 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3322 -215
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3412 -245
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2156 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +4 -4
- package/src/idl/velocity.ts +4 -4
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +117 -2
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +141 -19
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +31 -0
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +104 -2
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +56 -0
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +777 -24
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3439 -249
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
|
@@ -7,6 +7,17 @@ const numericConstants_1 = require("../constants/numericConstants");
|
|
|
7
7
|
const margin_1 = require("./margin");
|
|
8
8
|
const numericConstants_2 = require("../constants/numericConstants");
|
|
9
9
|
const utils_1 = require("./utils");
|
|
10
|
+
// BN's `.div()` truncates toward zero; the program uses `safe_div_floor` when
|
|
11
|
+
// the numerator is negative (get_token_value / get_strict_token_value), so a
|
|
12
|
+
// negative dividend must round toward -infinity here to match.
|
|
13
|
+
function divFloor(a, b) {
|
|
14
|
+
const quotient = a.div(b);
|
|
15
|
+
const remainder = a.mod(b);
|
|
16
|
+
if (!remainder.isZero() && a.isNeg() !== b.isNeg()) {
|
|
17
|
+
return quotient.sub(numericConstants_1.ONE);
|
|
18
|
+
}
|
|
19
|
+
return quotient;
|
|
20
|
+
}
|
|
10
21
|
/**
|
|
11
22
|
* Calculates the balance of a given token amount including any accumulated interest. This
|
|
12
23
|
* is the same as `SpotPosition.scaledBalance`.
|
|
@@ -14,15 +25,19 @@ const utils_1 = require("./utils");
|
|
|
14
25
|
* @param {BN} tokenAmount - the amount of tokens
|
|
15
26
|
* @param {SpotMarketAccount} spotMarket - the spot market account
|
|
16
27
|
* @param {SpotBalanceType} balanceType - the balance type ('deposit' or 'borrow')
|
|
28
|
+
* @param {boolean} [roundUp] - override the default rounding direction (program's `round_up`);
|
|
29
|
+
* defaults to rounding up for borrows only. Callers reducing a deposit balance while the
|
|
30
|
+
* funds are leaving Velocity (e.g. a withdrawal) should pass `true` to match `is_leaving_velocity`.
|
|
17
31
|
* @return {BN} the calculated balance, scaled by `SPOT_MARKET_BALANCE_PRECISION`
|
|
18
32
|
*/
|
|
19
|
-
function getBalance(tokenAmount, spotMarket, balanceType) {
|
|
33
|
+
function getBalance(tokenAmount, spotMarket, balanceType, roundUp) {
|
|
20
34
|
const precisionIncrease = numericConstants_1.TEN.pow(new anchor_1.BN(19 - spotMarket.decimals));
|
|
21
35
|
const cumulativeInterest = (0, types_1.isVariant)(balanceType, 'deposit')
|
|
22
36
|
? spotMarket.cumulativeDepositInterest
|
|
23
37
|
: spotMarket.cumulativeBorrowInterest;
|
|
24
38
|
let balance = tokenAmount.mul(precisionIncrease).div(cumulativeInterest);
|
|
25
|
-
|
|
39
|
+
const shouldRoundUp = roundUp !== null && roundUp !== void 0 ? roundUp : (0, types_1.isVariant)(balanceType, 'borrow');
|
|
40
|
+
if (!balance.eq(numericConstants_1.ZERO) && shouldRoundUp) {
|
|
26
41
|
balance = balance.add(numericConstants_1.ONE);
|
|
27
42
|
}
|
|
28
43
|
return balance;
|
|
@@ -84,7 +99,11 @@ function getStrictTokenValue(tokenAmount, spotDecimals, strictOraclePrice) {
|
|
|
84
99
|
price = strictOraclePrice.max();
|
|
85
100
|
}
|
|
86
101
|
const precisionDecrease = numericConstants_1.TEN.pow(new anchor_1.BN(spotDecimals));
|
|
87
|
-
|
|
102
|
+
const tokenWithPrice = tokenAmount.mul(price);
|
|
103
|
+
if (tokenWithPrice.isNeg()) {
|
|
104
|
+
return divFloor(tokenWithPrice, precisionDecrease);
|
|
105
|
+
}
|
|
106
|
+
return tokenWithPrice.div(precisionDecrease);
|
|
88
107
|
}
|
|
89
108
|
exports.getStrictTokenValue = getStrictTokenValue;
|
|
90
109
|
/**
|
|
@@ -100,9 +119,29 @@ function getTokenValue(tokenAmount, spotDecimals, oraclePriceData) {
|
|
|
100
119
|
return numericConstants_1.ZERO;
|
|
101
120
|
}
|
|
102
121
|
const precisionDecrease = numericConstants_1.TEN.pow(new anchor_1.BN(spotDecimals));
|
|
103
|
-
|
|
122
|
+
const tokenWithOraclePrice = tokenAmount.mul(oraclePriceData.price);
|
|
123
|
+
if (tokenWithOraclePrice.isNeg()) {
|
|
124
|
+
return divFloor(tokenWithOraclePrice, precisionDecrease);
|
|
125
|
+
}
|
|
126
|
+
return tokenWithOraclePrice.div(precisionDecrease);
|
|
104
127
|
}
|
|
105
128
|
exports.getTokenValue = getTokenValue;
|
|
129
|
+
/**
|
|
130
|
+
* Calculates the collateral (asset) weight applied to a spot deposit balance, mirroring
|
|
131
|
+
* `SpotMarket::get_asset_weight`'s `Initial`/`Maintenance` branches (there is no SDK
|
|
132
|
+
* equivalent of the on-chain `Fill` branch, which averages initial and maintenance).
|
|
133
|
+
* Size is first rescaled into `AMM_RESERVE_PRECISION` before the IMF size-discount is applied,
|
|
134
|
+
* so larger positions receive a lower (more conservative) weight.
|
|
135
|
+
*
|
|
136
|
+
* @param {BN} balanceAmount - The deposit token amount, scaled by the spot market's token decimals
|
|
137
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6); only used for the `Initial`
|
|
138
|
+
* scaled-weight lookup (`calculateScaledInitialAssetWeight`)
|
|
139
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
140
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, `'Fill'`
|
|
141
|
+
* (the integer-averaged midpoint of scaled-initial and maintenance weights), or `undefined`
|
|
142
|
+
* (defaults to the scaled initial weight, used for e.g. UI display outside a margin check)
|
|
143
|
+
* @return {BN} The asset weight, scaled by `SPOT_MARKET_WEIGHT_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
144
|
+
*/
|
|
106
145
|
function calculateAssetWeight(balanceAmount, oraclePrice, spotMarket, marginCategory) {
|
|
107
146
|
const sizePrecision = numericConstants_1.TEN.pow(new anchor_1.BN(spotMarket.decimals));
|
|
108
147
|
let sizeInAmmReservePrecision;
|
|
@@ -119,6 +158,13 @@ function calculateAssetWeight(balanceAmount, oraclePrice, spotMarket, marginCate
|
|
|
119
158
|
case 'Initial':
|
|
120
159
|
assetWeight = (0, margin_1.calculateSizeDiscountAssetWeight)(sizeInAmmReservePrecision, new anchor_1.BN(spotMarket.imfFactor), calculateScaledInitialAssetWeight(spotMarket, oraclePrice));
|
|
121
160
|
break;
|
|
161
|
+
case 'Fill':
|
|
162
|
+
// mirrors SpotMarket::get_asset_weight's Fill branch:
|
|
163
|
+
// (scaled_initial_asset_weight + maintenance_asset_weight) / 2 (integer division)
|
|
164
|
+
assetWeight = (0, margin_1.calculateSizeDiscountAssetWeight)(sizeInAmmReservePrecision, new anchor_1.BN(spotMarket.imfFactor), calculateScaledInitialAssetWeight(spotMarket, oraclePrice)
|
|
165
|
+
.add(new anchor_1.BN(spotMarket.maintenanceAssetWeight))
|
|
166
|
+
.divn(2));
|
|
167
|
+
break;
|
|
122
168
|
case 'Maintenance':
|
|
123
169
|
assetWeight = (0, margin_1.calculateSizeDiscountAssetWeight)(sizeInAmmReservePrecision, new anchor_1.BN(spotMarket.imfFactor), new anchor_1.BN(spotMarket.maintenanceAssetWeight));
|
|
124
170
|
break;
|
|
@@ -129,6 +175,17 @@ function calculateAssetWeight(balanceAmount, oraclePrice, spotMarket, marginCate
|
|
|
129
175
|
return assetWeight;
|
|
130
176
|
}
|
|
131
177
|
exports.calculateAssetWeight = calculateAssetWeight;
|
|
178
|
+
/**
|
|
179
|
+
* Calculates the initial asset weight after applying the market's optional deposit-value
|
|
180
|
+
* scaling, mirroring `SpotMarket::get_scaled_initial_asset_weight`. When
|
|
181
|
+
* `scaleInitialAssetWeightStart` is set and total deposit value exceeds it, the weight is
|
|
182
|
+
* scaled down proportionally (`initialAssetWeight * scaleInitialAssetWeightStart / depositsValue`)
|
|
183
|
+
* so the market's collateral usefulness degrades as its deposits grow past the configured cap.
|
|
184
|
+
*
|
|
185
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
186
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6), used to value total deposits
|
|
187
|
+
* @return {BN} The (possibly scaled) initial asset weight, `SPOT_MARKET_WEIGHT_PRECISION` (1e4)
|
|
188
|
+
*/
|
|
132
189
|
function calculateScaledInitialAssetWeight(spotMarket, oraclePrice) {
|
|
133
190
|
if (spotMarket.scaleInitialAssetWeightStart.eq(numericConstants_1.ZERO)) {
|
|
134
191
|
return new anchor_1.BN(spotMarket.initialAssetWeight);
|
|
@@ -147,6 +204,19 @@ function calculateScaledInitialAssetWeight(spotMarket, oraclePrice) {
|
|
|
147
204
|
}
|
|
148
205
|
}
|
|
149
206
|
exports.calculateScaledInitialAssetWeight = calculateScaledInitialAssetWeight;
|
|
207
|
+
/**
|
|
208
|
+
* Calculates the liability (borrow) weight applied to a spot borrow balance, mirroring
|
|
209
|
+
* `SpotMarket::get_liability_weight`'s `Initial`/`Maintenance` branches. Size is rescaled into
|
|
210
|
+
* `AMM_RESERVE_PRECISION` before the IMF size-premium is applied, so larger borrows receive a
|
|
211
|
+
* higher (more conservative) weight.
|
|
212
|
+
*
|
|
213
|
+
* @param {BN} size - The borrow token amount, scaled by the spot market's token decimals
|
|
214
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
215
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, `'Fill'`
|
|
216
|
+
* (the integer-averaged midpoint of initial and maintenance liability weights), or
|
|
217
|
+
* `undefined` (defaults to `initialLiabilityWeight` with no size premium applied)
|
|
218
|
+
* @return {BN} The liability weight, scaled by `SPOT_MARKET_WEIGHT_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
219
|
+
*/
|
|
150
220
|
function calculateLiabilityWeight(size, spotMarket, marginCategory) {
|
|
151
221
|
const sizePrecision = numericConstants_1.TEN.pow(new anchor_1.BN(spotMarket.decimals));
|
|
152
222
|
let sizeInAmmReservePrecision;
|
|
@@ -163,6 +233,13 @@ function calculateLiabilityWeight(size, spotMarket, marginCategory) {
|
|
|
163
233
|
case 'Initial':
|
|
164
234
|
liabilityWeight = (0, margin_1.calculateSizePremiumLiabilityWeight)(sizeInAmmReservePrecision, new anchor_1.BN(spotMarket.imfFactor), new anchor_1.BN(spotMarket.initialLiabilityWeight), numericConstants_1.SPOT_MARKET_WEIGHT_PRECISION);
|
|
165
235
|
break;
|
|
236
|
+
case 'Fill':
|
|
237
|
+
// mirrors SpotMarket::get_liability_weight's Fill branch:
|
|
238
|
+
// (initial_liability_weight + maintenance_liability_weight) / 2 (integer division)
|
|
239
|
+
liabilityWeight = (0, margin_1.calculateSizePremiumLiabilityWeight)(sizeInAmmReservePrecision, new anchor_1.BN(spotMarket.imfFactor), new anchor_1.BN(spotMarket.initialLiabilityWeight)
|
|
240
|
+
.add(new anchor_1.BN(spotMarket.maintenanceLiabilityWeight))
|
|
241
|
+
.divn(2), numericConstants_1.SPOT_MARKET_WEIGHT_PRECISION);
|
|
242
|
+
break;
|
|
166
243
|
case 'Maintenance':
|
|
167
244
|
liabilityWeight = (0, margin_1.calculateSizePremiumLiabilityWeight)(sizeInAmmReservePrecision, new anchor_1.BN(spotMarket.imfFactor), new anchor_1.BN(spotMarket.maintenanceLiabilityWeight), numericConstants_1.SPOT_MARKET_WEIGHT_PRECISION);
|
|
168
245
|
break;
|
|
@@ -173,6 +250,17 @@ function calculateLiabilityWeight(size, spotMarket, marginCategory) {
|
|
|
173
250
|
return liabilityWeight;
|
|
174
251
|
}
|
|
175
252
|
exports.calculateLiabilityWeight = calculateLiabilityWeight;
|
|
253
|
+
/**
|
|
254
|
+
* Calculates a spot market's utilization (borrows / deposits), mirroring
|
|
255
|
+
* `calculate_utilization`. Returns `SPOT_MARKET_UTILIZATION_PRECISION` (100% utilization) if
|
|
256
|
+
* there are borrows but no deposits, and zero if both are zero.
|
|
257
|
+
*
|
|
258
|
+
* @param {SpotMarketAccount} bank - The spot market account
|
|
259
|
+
* @param {BN} [delta] - Optional hypothetical change in token amount, scaled by the market's
|
|
260
|
+
* token decimals: a positive delta is added to deposits, a negative delta (its absolute
|
|
261
|
+
* value) is added to borrows. Defaults to zero (current on-chain utilization).
|
|
262
|
+
* @return {BN} Utilization, scaled by `SPOT_MARKET_UTILIZATION_PRECISION` (1e6, i.e. 1e6 = 100%)
|
|
263
|
+
*/
|
|
176
264
|
function calculateUtilization(bank, delta = numericConstants_1.ZERO) {
|
|
177
265
|
let tokenDepositAmount = getTokenAmount(bank.depositBalance, bank, types_1.SpotBalanceType.DEPOSIT);
|
|
178
266
|
let tokenBorrowAmount = getTokenAmount(bank.borrowBalance, bank, types_1.SpotBalanceType.BORROW);
|
|
@@ -198,10 +286,17 @@ function calculateUtilization(bank, delta = numericConstants_1.ZERO) {
|
|
|
198
286
|
}
|
|
199
287
|
exports.calculateUtilization = calculateUtilization;
|
|
200
288
|
/**
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
289
|
+
* SDK-only helper (no direct on-chain counterpart) that inverts `calculateInterestRate`'s
|
|
290
|
+
* utilization curve to find how much more can be borrowed before the borrow rate would reach
|
|
291
|
+
* `targetBorrowRate`. Useful for UI "available to borrow at rate X" displays.
|
|
292
|
+
*
|
|
293
|
+
* @param {SpotMarketAccount} spotMarketAccount - The spot market account
|
|
294
|
+
* @param {BN} targetBorrowRate - The target annualized borrow rate, `SPOT_MARKET_RATE_PRECISION` (1e6)
|
|
295
|
+
* @returns {{ totalCapacity: BN; remainingCapacity: BN }} Both scaled by the market's token
|
|
296
|
+
* decimals. `totalCapacity` is the total borrow amount implied by the target utilization;
|
|
297
|
+
* `remainingCapacity` is `totalCapacity` minus current borrows (zero if the market's current
|
|
298
|
+
* borrow rate already meets or exceeds the target), additionally capped by
|
|
299
|
+
* `maxTokenBorrowsFraction` of `maxTokenDeposits` when that cap is configured (>0)
|
|
205
300
|
*/
|
|
206
301
|
function calculateSpotMarketBorrowCapacity(spotMarketAccount, targetBorrowRate) {
|
|
207
302
|
const currentBorrowRate = calculateBorrowRate(spotMarketAccount);
|
|
@@ -246,6 +341,21 @@ function calculateSpotMarketBorrowCapacity(spotMarketAccount, targetBorrowRate)
|
|
|
246
341
|
return { totalCapacity, remainingCapacity };
|
|
247
342
|
}
|
|
248
343
|
exports.calculateSpotMarketBorrowCapacity = calculateSpotMarketBorrowCapacity;
|
|
344
|
+
/**
|
|
345
|
+
* Calculates the annualized borrow interest rate for a spot market, mirroring
|
|
346
|
+
* `calculate_borrow_rate` / the underlying utilization curve. Below `optimalUtilization` the
|
|
347
|
+
* rate ramps linearly from 0 to `optimalBorrowRate`; above it, the rate ramps through a fixed
|
|
348
|
+
* piecewise schedule (85/90/95/99/99.5/100% utilization breakpoints) from `optimalBorrowRate`
|
|
349
|
+
* up to `maxBorrowRate`. The result is floored at `minBorrowRate / 200` (i.e. `minBorrowRate`
|
|
350
|
+
* is in units of half-percentage-points of `PERCENTAGE_PRECISION`).
|
|
351
|
+
*
|
|
352
|
+
* @param {SpotMarketAccount} bank - The spot market account
|
|
353
|
+
* @param {BN} [delta] - Optional hypothetical change in token amount passed through to
|
|
354
|
+
* `calculateUtilization` (ignored if `currentUtilization` is provided)
|
|
355
|
+
* @param {BN} [currentUtilization] - Precomputed utilization, `SPOT_MARKET_UTILIZATION_PRECISION`
|
|
356
|
+
* (1e6); if omitted it is derived from `bank` and `delta`
|
|
357
|
+
* @return {BN} Annualized borrow rate, scaled by `SPOT_MARKET_RATE_PRECISION` (1e6)
|
|
358
|
+
*/
|
|
249
359
|
function calculateInterestRate(bank, delta = numericConstants_1.ZERO, currentUtilization) {
|
|
250
360
|
// todo: ensure both a delta and current util aren't pass?
|
|
251
361
|
const utilization = currentUtilization !== null && currentUtilization !== void 0 ? currentUtilization : calculateUtilization(bank, delta);
|
|
@@ -296,6 +406,19 @@ function calculateInterestRate(bank, delta = numericConstants_1.ZERO, currentUti
|
|
|
296
406
|
return anchor_1.BN.max(minRate, rate);
|
|
297
407
|
}
|
|
298
408
|
exports.calculateInterestRate = calculateInterestRate;
|
|
409
|
+
/**
|
|
410
|
+
* Calculates the annualized deposit interest rate for a spot market, mirroring
|
|
411
|
+
* `calculate_deposit_rate` (velocity-rs). Lenders receive the borrow rate net of the insurance
|
|
412
|
+
* fund and protocol fee carveouts (`ifFeeFactor` + `protocolFeeFactor`, both `PERCENTAGE_PRECISION`),
|
|
413
|
+
* scaled down by utilization since only borrowed deposits earn interest.
|
|
414
|
+
*
|
|
415
|
+
* @param {SpotMarketAccount} bank - The spot market account
|
|
416
|
+
* @param {BN} [delta] - Optional hypothetical change in token amount; positive adds to deposits,
|
|
417
|
+
* negative adds to borrows (see `calculateUtilization`)
|
|
418
|
+
* @param {BN} [currentUtilization] - Precomputed utilization, `SPOT_MARKET_UTILIZATION_PRECISION`
|
|
419
|
+
* (1e6); if omitted it is derived from `bank` and `delta`
|
|
420
|
+
* @return {BN} Annualized deposit rate, scaled by `SPOT_MARKET_RATE_PRECISION` (1e6)
|
|
421
|
+
*/
|
|
299
422
|
function calculateDepositRate(bank, delta = numericConstants_1.ZERO, currentUtilization) {
|
|
300
423
|
// positive delta => adding to deposit
|
|
301
424
|
// negative delta => adding to borrow
|
|
@@ -309,10 +432,40 @@ function calculateDepositRate(bank, delta = numericConstants_1.ZERO, currentUtil
|
|
|
309
432
|
return depositRate;
|
|
310
433
|
}
|
|
311
434
|
exports.calculateDepositRate = calculateDepositRate;
|
|
435
|
+
/**
|
|
436
|
+
* Alias for `calculateInterestRate` (annualized borrow rate).
|
|
437
|
+
*
|
|
438
|
+
* @param {SpotMarketAccount} bank - The spot market account
|
|
439
|
+
* @param {BN} [delta] - Optional hypothetical change in token amount (see `calculateUtilization`)
|
|
440
|
+
* @param {BN} [currentUtilization] - Precomputed utilization, `SPOT_MARKET_UTILIZATION_PRECISION` (1e6)
|
|
441
|
+
* @return {BN} Annualized borrow rate, scaled by `SPOT_MARKET_RATE_PRECISION` (1e6)
|
|
442
|
+
*/
|
|
312
443
|
function calculateBorrowRate(bank, delta = numericConstants_1.ZERO, currentUtilization) {
|
|
313
444
|
return calculateInterestRate(bank, delta, currentUtilization);
|
|
314
445
|
}
|
|
315
446
|
exports.calculateBorrowRate = calculateBorrowRate;
|
|
447
|
+
/**
|
|
448
|
+
* Projects the cumulative interest multipliers that would accrue between `spotMarket.lastInterestTs`
|
|
449
|
+
* and `now` at the market's current interest rate, mirroring the gross amounts computed by
|
|
450
|
+
* `calculate_accumulated_interest`. This is a point-in-time estimate for display purposes only —
|
|
451
|
+
* the actual on-chain update (`update_spot_market_cumulative_interest`) re-derives the rate from
|
|
452
|
+
* utilization at settlement time (same as this function calling `calculateInterestRate(bank)` with
|
|
453
|
+
* no delta), and only runs at all if `deposit_interest > 0 && borrow_interest > 1`. Borrow interest
|
|
454
|
+
* is always rounded up by 1 (added unconditionally), matching the program's lender-favoring
|
|
455
|
+
* rounding, and is credited to `cumulativeBorrowInterest` in full. **`depositInterest` here is the
|
|
456
|
+
* gross pre-carveout amount** — on-chain, `insuranceFund.ifFeeFactor` and `protocolFeeFactor`
|
|
457
|
+
* (both `IF_FACTOR_PRECISION`) are each cut from it first (to `revenuePool` and `protocolFeePool`
|
|
458
|
+
* respectively) and only the remainder is what actually gets added to `cumulativeDepositInterest`;
|
|
459
|
+
* this function does not replicate that split, so it overstates the deposit-side increment
|
|
460
|
+
* whenever either factor is non-zero.
|
|
461
|
+
*
|
|
462
|
+
* @param {SpotMarketAccount} bank - The spot market account
|
|
463
|
+
* @param {BN} now - The timestamp (unix seconds) to project interest up to
|
|
464
|
+
* @return {{ borrowInterest: BN; depositInterest: BN }} `borrowInterest` is the exact amount added
|
|
465
|
+
* to `cumulativeBorrowInterest`; `depositInterest` is the gross pre-carveout amount, not
|
|
466
|
+
* necessarily what's added to `cumulativeDepositInterest` (see above). Both in the same
|
|
467
|
+
* fixed-point units as those cumulative fields (`SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION`)
|
|
468
|
+
*/
|
|
316
469
|
function calculateInterestAccumulated(bank, now) {
|
|
317
470
|
const interestRate = calculateInterestRate(bank);
|
|
318
471
|
const timeSinceLastUpdate = now.sub(bank.lastInterestTs);
|
|
@@ -333,6 +486,22 @@ function calculateInterestAccumulated(bank, now) {
|
|
|
333
486
|
return { borrowInterest, depositInterest };
|
|
334
487
|
}
|
|
335
488
|
exports.calculateInterestAccumulated = calculateInterestAccumulated;
|
|
489
|
+
/**
|
|
490
|
+
* Calculates the minimum deposit / maximum borrow token amounts that keep the market's
|
|
491
|
+
* utilization from exceeding a "max withdraw utilization" ceiling, mirroring
|
|
492
|
+
* `calculate_token_utilization_limits`. The ceiling is `max(optimalUtilization,
|
|
493
|
+
* utilizationTwap + (100% - utilizationTwap) / 2)` — i.e. it allows utilization to rise, but
|
|
494
|
+
* only up to halfway from the TWAP to 100%. Deposit sizes already below
|
|
495
|
+
* `withdrawGuardThreshold` are never blocked (the min-deposit result is capped so it can't
|
|
496
|
+
* exceed `depositTokenAmount - withdrawGuardThreshold`), and borrows below the guard threshold
|
|
497
|
+
* are never blocked either (the max-borrow result is floored at `withdrawGuardThreshold`).
|
|
498
|
+
*
|
|
499
|
+
* @param {BN} depositTokenAmount - Current total deposit token amount, market's token decimals
|
|
500
|
+
* @param {BN} borrowTokenAmount - Current total borrow token amount, market's token decimals
|
|
501
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
502
|
+
* @return {{ minDepositTokensForUtilization: BN; maxBorrowTokensForUtilization: BN }} Both
|
|
503
|
+
* scaled by the market's token decimals
|
|
504
|
+
*/
|
|
336
505
|
function calculateTokenUtilizationLimits(depositTokenAmount, borrowTokenAmount, spotMarket) {
|
|
337
506
|
// Calculates the allowable minimum deposit and maximum borrow amounts for immediate withdrawal based on market utilization.
|
|
338
507
|
// First, it determines a maximum withdrawal utilization from the market's target and historic utilization.
|
|
@@ -354,6 +523,32 @@ function calculateTokenUtilizationLimits(depositTokenAmount, borrowTokenAmount,
|
|
|
354
523
|
};
|
|
355
524
|
}
|
|
356
525
|
exports.calculateTokenUtilizationLimits = calculateTokenUtilizationLimits;
|
|
526
|
+
/**
|
|
527
|
+
* Estimates the current immediate withdraw/borrow limits for a spot market, mirroring the
|
|
528
|
+
* on-chain `check_withdraw_limits` / `get_max_withdraw_for_market_with_token_amount` guard
|
|
529
|
+
* (combining `calculate_min_deposit_token_amount`, `calculate_max_borrow_token_amount`, and
|
|
530
|
+
* `calculateTokenUtilizationLimits`). Because the SDK cannot force an on-chain TWAP update
|
|
531
|
+
* before reading it, this projects a "live" 24h deposit/borrow TWAP by weighting the stored
|
|
532
|
+
* TWAP and the current amount by `sinceStart`/`sinceLast` (the same weighted-average shape as
|
|
533
|
+
* `update_spot_market_twap_stats`, without its rounding bias term) before deriving limits, so
|
|
534
|
+
* the result approximates what the on-chain TWAP would be if updated at `now`.
|
|
535
|
+
*
|
|
536
|
+
* Deposit/borrow TWAP friction bands differ by pool: the main pool (`poolId === 0`) targets
|
|
537
|
+
* ~30-92.5% utilization (borrow ceiling is `lesserDepositAmount` clamped between 1/3 and
|
|
538
|
+
* 13/14 of itself, floored around the live borrow TWAP + 1/5), isolated pools (`poolId !== 0`)
|
|
539
|
+
* target ~50-95% (clamped between 1/2 and 19/20, floored around the live borrow TWAP + 1/3).
|
|
540
|
+
* `lesserDepositAmount` is `min(currentDepositAmount, live deposit TWAP)` — using the smaller of
|
|
541
|
+
* the two keeps the borrow ceiling conservative whether deposits are rising or falling.
|
|
542
|
+
* `borrowLimit` is additionally zeroed for `assetTier === 'protected'` markets, and both limits
|
|
543
|
+
* are clamped by `maxTokenBorrowsFraction` of `maxTokenDeposits` when that cap is configured.
|
|
544
|
+
*
|
|
545
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
546
|
+
* @param {BN} now - The timestamp (unix seconds) to project the live TWAP up to
|
|
547
|
+
* @return {{ borrowLimit: BN; withdrawLimit: BN; minDepositAmount: BN; maxBorrowAmount: BN;
|
|
548
|
+
* currentDepositAmount: BN; currentBorrowAmount: BN }} All values scaled by the market's token
|
|
549
|
+
* decimals. `withdrawLimit`/`borrowLimit` are floored at zero (a market already past its
|
|
550
|
+
* min-deposit/max-borrow bound reports zero remaining room rather than negative)
|
|
551
|
+
*/
|
|
357
552
|
function calculateWithdrawLimit(spotMarket, now) {
|
|
358
553
|
const marketDepositTokenAmount = getTokenAmount(spotMarket.depositBalance, spotMarket, types_1.SpotBalanceType.DEPOSIT);
|
|
359
554
|
const marketBorrowTokenAmount = getTokenAmount(spotMarket.borrowBalance, spotMarket, types_1.SpotBalanceType.BORROW);
|
|
@@ -371,10 +566,10 @@ function calculateWithdrawLimit(spotMarket, now) {
|
|
|
371
566
|
const lesserDepositAmount = anchor_1.BN.min(marketDepositTokenAmount, depositTokenTwapLive);
|
|
372
567
|
let maxBorrowTokensTwap;
|
|
373
568
|
if (spotMarket.poolId == 0) {
|
|
374
|
-
maxBorrowTokensTwap = anchor_1.BN.max(spotMarket.withdrawGuardThreshold, anchor_1.BN.min(anchor_1.BN.max(
|
|
569
|
+
maxBorrowTokensTwap = anchor_1.BN.max(spotMarket.withdrawGuardThreshold, anchor_1.BN.min(anchor_1.BN.max(lesserDepositAmount.div(new anchor_1.BN(3)), borrowTokenTwapLive.add(lesserDepositAmount.div(new anchor_1.BN(5)))), lesserDepositAmount.sub(lesserDepositAmount.div(new anchor_1.BN(14))))); // main pool between ~30-92.5% utilization with friction on twap in 20% increments
|
|
375
570
|
}
|
|
376
571
|
else {
|
|
377
|
-
maxBorrowTokensTwap = anchor_1.BN.max(spotMarket.withdrawGuardThreshold, anchor_1.BN.min(anchor_1.BN.max(
|
|
572
|
+
maxBorrowTokensTwap = anchor_1.BN.max(spotMarket.withdrawGuardThreshold, anchor_1.BN.min(anchor_1.BN.max(lesserDepositAmount.div(new anchor_1.BN(2)), borrowTokenTwapLive.add(lesserDepositAmount.div(new anchor_1.BN(3)))), lesserDepositAmount.sub(lesserDepositAmount.div(new anchor_1.BN(20))))); // isolated pools between 50-95% utilization with friction on twap in 33% increments
|
|
378
573
|
}
|
|
379
574
|
const minDepositTokensTwap = depositTokenTwapLive.sub(anchor_1.BN.max(depositTokenTwapLive.div(new anchor_1.BN(4)), anchor_1.BN.min(spotMarket.withdrawGuardThreshold, depositTokenTwapLive)));
|
|
380
575
|
const { minDepositTokensForUtilization, maxBorrowTokensForUtilization } = calculateTokenUtilizationLimits(marketDepositTokenAmount, marketBorrowTokenAmount, spotMarket);
|
|
@@ -404,6 +599,22 @@ function calculateWithdrawLimit(spotMarket, now) {
|
|
|
404
599
|
};
|
|
405
600
|
}
|
|
406
601
|
exports.calculateWithdrawLimit = calculateWithdrawLimit;
|
|
602
|
+
/**
|
|
603
|
+
* Calculates the margin-weighted value of a spot deposit, mirroring the asset-side of the
|
|
604
|
+
* program's collateral valuation (`get_strict_token_value` + `get_asset_weight`). Uses the
|
|
605
|
+
* worst of the oracle's live price and its 5min TWAP (via `strictOraclePrice`) so a favorable
|
|
606
|
+
* price spike can't be used to over-value collateral.
|
|
607
|
+
*
|
|
608
|
+
* @param {BN} tokenAmount - The deposit token amount, scaled by `spotMarketAccount.decimals`
|
|
609
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
610
|
+
* @param {SpotMarketAccount} spotMarketAccount - The spot market account
|
|
611
|
+
* @param {number} maxMarginRatio - The user's custom max margin ratio (0 if unset), in
|
|
612
|
+
* `SPOT_MARKET_WEIGHT_PRECISION` (1e4) units; only applied when `marginCategory === 'Initial'`
|
|
613
|
+
* and the market isn't the quote spot market, capping the weight at
|
|
614
|
+
* `SPOT_MARKET_WEIGHT_PRECISION - maxMarginRatio`
|
|
615
|
+
* @param {MarginCategory} [marginCategory] - When omitted, returns the unweighted (100%) value
|
|
616
|
+
* @return {BN} The (optionally weighted) asset value, scaled by `PRICE_PRECISION` (1e6)
|
|
617
|
+
*/
|
|
407
618
|
function getSpotAssetValue(tokenAmount, strictOraclePrice, spotMarketAccount, maxMarginRatio, marginCategory) {
|
|
408
619
|
let assetValue = getStrictTokenValue(tokenAmount, spotMarketAccount.decimals, strictOraclePrice);
|
|
409
620
|
if (marginCategory !== undefined) {
|
|
@@ -418,6 +629,24 @@ function getSpotAssetValue(tokenAmount, strictOraclePrice, spotMarketAccount, ma
|
|
|
418
629
|
return assetValue;
|
|
419
630
|
}
|
|
420
631
|
exports.getSpotAssetValue = getSpotAssetValue;
|
|
632
|
+
/**
|
|
633
|
+
* Calculates the margin-weighted value of a spot borrow, mirroring the liability-side of the
|
|
634
|
+
* program's collateral valuation (`get_strict_token_value` + `get_liability_weight`). Uses the
|
|
635
|
+
* worst of the oracle's live price and its 5min TWAP (via `strictOraclePrice`) so a favorable
|
|
636
|
+
* price dip can't be used to under-value a liability.
|
|
637
|
+
*
|
|
638
|
+
* @param {BN} tokenAmount - The borrow token amount (positive), scaled by `spotMarketAccount.decimals`
|
|
639
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
640
|
+
* @param {SpotMarketAccount} spotMarketAccount - The spot market account
|
|
641
|
+
* @param {number} maxMarginRatio - The user's custom max margin ratio (0 if unset),
|
|
642
|
+
* `SPOT_MARKET_WEIGHT_PRECISION` (1e4) units; only applied when `marginCategory === 'Initial'`
|
|
643
|
+
* and the market isn't the quote spot market, flooring the weight at
|
|
644
|
+
* `SPOT_MARKET_WEIGHT_PRECISION + maxMarginRatio`
|
|
645
|
+
* @param {MarginCategory} [marginCategory] - When omitted, returns the unweighted (100%) value
|
|
646
|
+
* @param {BN} [liquidationBuffer] - Extra weight added on top (`SPOT_MARKET_WEIGHT_PRECISION`
|
|
647
|
+
* units) to make maintenance margin checks stricter during liquidation eligibility checks
|
|
648
|
+
* @return {BN} The (optionally weighted) liability value, scaled by `PRICE_PRECISION` (1e6)
|
|
649
|
+
*/
|
|
421
650
|
function getSpotLiabilityValue(tokenAmount, strictOraclePrice, spotMarketAccount, maxMarginRatio, marginCategory, liquidationBuffer) {
|
|
422
651
|
let liabilityValue = getStrictTokenValue(tokenAmount, spotMarketAccount.decimals, strictOraclePrice);
|
|
423
652
|
if (marginCategory !== undefined) {
|
|
@@ -1,11 +1,44 @@
|
|
|
1
1
|
import { BN } from '../isomorphic/anchor';
|
|
2
2
|
import { MarginCategory, SpotBalanceType, SpotMarketAccount } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Converts a human-readable number or `BN` into the spot market's on-chain token precision
|
|
5
|
+
* (`10 ** spotMarket.decimals`). Both inputs are treated as whole-token amounts and multiplied
|
|
6
|
+
* by the market's precision.
|
|
7
|
+
*
|
|
8
|
+
* @param {number | BN} value - A human-readable amount, or a `BN` expressed in whole
|
|
9
|
+
* tokens (not yet scaled) that will be multiplied by the market's precision
|
|
10
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account (supplies `decimals`)
|
|
11
|
+
* @return {BN} The token amount scaled by `10 ** spotMarket.decimals`
|
|
12
|
+
*/
|
|
3
13
|
export declare function castNumberToSpotPrecision(value: number | BN, spotMarket: SpotMarketAccount): BN;
|
|
14
|
+
/**
|
|
15
|
+
* Calculates the effective margin ratio for a spot deposit or borrow position, expressed as
|
|
16
|
+
* `MARGIN_PRECISION - assetWeight` (deposits) or `liabilityWeight - MARGIN_PRECISION` (borrows).
|
|
17
|
+
* Note `MARGIN_PRECISION` and `SPOT_MARKET_WEIGHT_PRECISION` are both 1e4, so weights and margin
|
|
18
|
+
* ratios share the same scale.
|
|
19
|
+
*
|
|
20
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
21
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6)
|
|
22
|
+
* @param {MarginCategory} marginCategory - `'Initial'` or `'Maintenance'`
|
|
23
|
+
* @param {BN} size - The position size, scaled by `market.decimals`
|
|
24
|
+
* @param {SpotBalanceType} balanceType - Whether `size` is a deposit or a borrow
|
|
25
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `MARGIN_PRECISION` (1e4)
|
|
26
|
+
* units; only takes effect for `'Initial'`, where the looser (higher) of the computed ratio
|
|
27
|
+
* and this value is used, so a user can only demand *more* margin than the market default
|
|
28
|
+
* @return {number} The margin ratio, scaled by `MARGIN_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
29
|
+
*/
|
|
4
30
|
export declare function calculateSpotMarketMarginRatio(market: SpotMarketAccount, oraclePrice: BN, marginCategory: MarginCategory, size: BN, balanceType: SpotBalanceType, customMarginRatio?: number): number;
|
|
5
31
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
32
|
+
* Calculates the remaining room under the spot market's deposit cap, mirroring the check in the
|
|
33
|
+
* program's deposit handler (`deposit_token_amount + amount <= max_token_deposits`, when the cap
|
|
34
|
+
* is set).
|
|
35
|
+
*
|
|
36
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
37
|
+
* @return {BN} `market.maxTokenDeposits - currentDeposits` (floored at zero), scaled by
|
|
38
|
+
* `market.decimals`. **Ambiguous zero:** returns `ZERO` both when `maxTokenDeposits === 0`
|
|
39
|
+
* (cap disabled, deposits are actually unlimited) and when the cap is enabled but already
|
|
40
|
+
* fully utilized — callers must check `market.maxTokenDeposits.eq(ZERO)` separately to tell
|
|
41
|
+
* "no limit" from "no room left".
|
|
9
42
|
*/
|
|
10
43
|
export declare function calculateMaxRemainingDeposit(market: SpotMarketAccount): BN;
|
|
11
44
|
//# sourceMappingURL=spotMarket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotMarket.d.ts","sourceRoot":"","sources":["../../../src/math/spotMarket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAEN,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,MAAM,UAAU,CAAC;AASlB,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,MAAM,GAAG,EAAE,EAClB,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAMJ;AAED,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,EAAE,EACf,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,EAAE,EACR,WAAW,EAAE,eAAe,EAC5B,iBAAiB,SAAI,GACnB,MAAM,CA0BR;AAED
|
|
1
|
+
{"version":3,"file":"spotMarket.d.ts","sourceRoot":"","sources":["../../../src/math/spotMarket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAEN,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,MAAM,UAAU,CAAC;AASlB;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,MAAM,GAAG,EAAE,EAClB,UAAU,EAAE,iBAAiB,GAC3B,EAAE,CAMJ;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,iBAAiB,EACzB,WAAW,EAAE,EAAE,EACf,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,EAAE,EACR,WAAW,EAAE,eAAe,EAC5B,iBAAiB,SAAI,GACnB,MAAM,CA0BR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,iBAAiB,MAerE"}
|
|
@@ -6,6 +6,16 @@ const types_1 = require("../types");
|
|
|
6
6
|
const spotBalance_1 = require("./spotBalance");
|
|
7
7
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
8
8
|
const utils_1 = require("./utils");
|
|
9
|
+
/**
|
|
10
|
+
* Converts a human-readable number or `BN` into the spot market's on-chain token precision
|
|
11
|
+
* (`10 ** spotMarket.decimals`). Both inputs are treated as whole-token amounts and multiplied
|
|
12
|
+
* by the market's precision.
|
|
13
|
+
*
|
|
14
|
+
* @param {number | BN} value - A human-readable amount, or a `BN` expressed in whole
|
|
15
|
+
* tokens (not yet scaled) that will be multiplied by the market's precision
|
|
16
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account (supplies `decimals`)
|
|
17
|
+
* @return {BN} The token amount scaled by `10 ** spotMarket.decimals`
|
|
18
|
+
*/
|
|
9
19
|
function castNumberToSpotPrecision(value, spotMarket) {
|
|
10
20
|
if (typeof value === 'number') {
|
|
11
21
|
return (0, utils_1.numberToSafeBN)(value, new anchor_1.BN(Math.pow(10, spotMarket.decimals)));
|
|
@@ -15,6 +25,22 @@ function castNumberToSpotPrecision(value, spotMarket) {
|
|
|
15
25
|
}
|
|
16
26
|
}
|
|
17
27
|
exports.castNumberToSpotPrecision = castNumberToSpotPrecision;
|
|
28
|
+
/**
|
|
29
|
+
* Calculates the effective margin ratio for a spot deposit or borrow position, expressed as
|
|
30
|
+
* `MARGIN_PRECISION - assetWeight` (deposits) or `liabilityWeight - MARGIN_PRECISION` (borrows).
|
|
31
|
+
* Note `MARGIN_PRECISION` and `SPOT_MARKET_WEIGHT_PRECISION` are both 1e4, so weights and margin
|
|
32
|
+
* ratios share the same scale.
|
|
33
|
+
*
|
|
34
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
35
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6)
|
|
36
|
+
* @param {MarginCategory} marginCategory - `'Initial'` or `'Maintenance'`
|
|
37
|
+
* @param {BN} size - The position size, scaled by `market.decimals`
|
|
38
|
+
* @param {SpotBalanceType} balanceType - Whether `size` is a deposit or a borrow
|
|
39
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `MARGIN_PRECISION` (1e4)
|
|
40
|
+
* units; only takes effect for `'Initial'`, where the looser (higher) of the computed ratio
|
|
41
|
+
* and this value is used, so a user can only demand *more* margin than the market default
|
|
42
|
+
* @return {number} The margin ratio, scaled by `MARGIN_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
43
|
+
*/
|
|
18
44
|
function calculateSpotMarketMarginRatio(market, oraclePrice, marginCategory, size, balanceType, customMarginRatio = 0) {
|
|
19
45
|
let marginRatio;
|
|
20
46
|
if ((0, types_1.isVariant)(balanceType, 'deposit')) {
|
|
@@ -33,9 +59,16 @@ function calculateSpotMarketMarginRatio(market, oraclePrice, marginCategory, siz
|
|
|
33
59
|
}
|
|
34
60
|
exports.calculateSpotMarketMarginRatio = calculateSpotMarketMarginRatio;
|
|
35
61
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
62
|
+
* Calculates the remaining room under the spot market's deposit cap, mirroring the check in the
|
|
63
|
+
* program's deposit handler (`deposit_token_amount + amount <= max_token_deposits`, when the cap
|
|
64
|
+
* is set).
|
|
65
|
+
*
|
|
66
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
67
|
+
* @return {BN} `market.maxTokenDeposits - currentDeposits` (floored at zero), scaled by
|
|
68
|
+
* `market.decimals`. **Ambiguous zero:** returns `ZERO` both when `maxTokenDeposits === 0`
|
|
69
|
+
* (cap disabled, deposits are actually unlimited) and when the cap is enabled but already
|
|
70
|
+
* fully utilized — callers must check `market.maxTokenDeposits.eq(ZERO)` separately to tell
|
|
71
|
+
* "no limit" from "no room left".
|
|
39
72
|
*/
|
|
40
73
|
function calculateMaxRemainingDeposit(market) {
|
|
41
74
|
const marketMaxTokenDeposits = market.maxTokenDeposits;
|
|
@@ -1,19 +1,91 @@
|
|
|
1
1
|
import { MarginCategory, SpotMarketAccount, SpotPosition } from '../types';
|
|
2
2
|
import { BN } from '../isomorphic/anchor';
|
|
3
3
|
import { StrictOraclePrice } from '../oracles/strictOraclePrice';
|
|
4
|
+
/**
|
|
5
|
+
* True if a `SpotPosition` slot has no balance and no open orders, meaning it is free to be
|
|
6
|
+
* reused (or shown as empty) rather than representing an active position.
|
|
7
|
+
*
|
|
8
|
+
* @param {SpotPosition} position - The spot position
|
|
9
|
+
* @return {boolean} Whether the slot is unused
|
|
10
|
+
*/
|
|
4
11
|
export declare function isSpotPositionAvailable(position: SpotPosition): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Result of simulating a spot position's collateral contribution, optionally after its resting
|
|
14
|
+
* open orders are assumed to fill. All quote-denominated fields are `PRICE_PRECISION` (1e6).
|
|
15
|
+
*/
|
|
5
16
|
export type OrderFillSimulation = {
|
|
17
|
+
/** Signed token amount (base for non-quote markets), the market's token decimals */
|
|
6
18
|
tokenAmount: BN;
|
|
19
|
+
/** Value of the open orders assumed to fill, at the worst-case (max) oracle price */
|
|
7
20
|
ordersValue: BN;
|
|
21
|
+
/** Strict-oracle value of `tokenAmount` before margin weighting */
|
|
8
22
|
tokenValue: BN;
|
|
23
|
+
/** Asset or liability weight applied to `tokenValue`, `SPOT_MARKET_WEIGHT_PRECISION` (1e4) */
|
|
9
24
|
weight: BN;
|
|
25
|
+
/** `tokenValue` after applying `weight` */
|
|
10
26
|
weightedTokenValue: BN;
|
|
27
|
+
/** Net contribution to free collateral: `weightedTokenValue` plus `ordersValue` where applicable */
|
|
11
28
|
freeCollateralContribution: BN;
|
|
12
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Calculates a spot position's worst-case token amount and margin contribution, accounting for
|
|
32
|
+
* the possibility that its resting open bids or asks could fill. Mirrors the program's
|
|
33
|
+
* worst-case spot balance logic used in margin/health checks: if both `openBids` and `openAsks`
|
|
34
|
+
* are zero (or `includeOpenOrders` is false), the position's current balance is valued as-is;
|
|
35
|
+
* otherwise the function separately simulates full fill of the bids and of the asks
|
|
36
|
+
* (`simulateOrderFill`) and returns whichever leaves the *lower* `freeCollateralContribution` —
|
|
37
|
+
* i.e. the more conservative (worse-case) scenario for margin purposes.
|
|
38
|
+
*
|
|
39
|
+
* @param {SpotPosition} spotPosition - The user's spot position
|
|
40
|
+
* @param {SpotMarketAccount} spotMarketAccount - The spot market account
|
|
41
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
42
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or
|
|
43
|
+
* `undefined` for an unweighted valuation
|
|
44
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio (`'Initial'` only); see
|
|
45
|
+
* `calculateWeightedTokenValue`
|
|
46
|
+
* @param {boolean} [includeOpenOrders] - Whether to simulate open order fills at all; defaults
|
|
47
|
+
* to `true`. When `false`, only the current balance is valued regardless of open orders.
|
|
48
|
+
* @return {OrderFillSimulation} The worst-case simulation result
|
|
49
|
+
*/
|
|
13
50
|
export declare function getWorstCaseTokenAmounts(spotPosition: SpotPosition, spotMarketAccount: SpotMarketAccount, strictOraclePrice: StrictOraclePrice, marginCategory: MarginCategory | undefined, customMarginRatio?: number, includeOpenOrders?: boolean): OrderFillSimulation;
|
|
51
|
+
/**
|
|
52
|
+
* Applies the appropriate asset or liability weight (based on the sign of `tokenValue`) to a
|
|
53
|
+
* token value, mirroring the program's `calculate_weighted_token_value` closure used in both
|
|
54
|
+
* plain and worst-case-fill spot margin calculations.
|
|
55
|
+
*
|
|
56
|
+
* @param {BN} tokenAmount - Signed token amount, used (as `abs()`) for the IMF size adjustment
|
|
57
|
+
* @param {BN} tokenValue - Signed strict-oracle value, `PRICE_PRECISION` (1e6); sign selects
|
|
58
|
+
* asset weight (`>= 0`) vs liability weight (`< 0`)
|
|
59
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6), passed through to
|
|
60
|
+
* `calculateAssetWeight` for the initial-weight deposit-value scaling lookup
|
|
61
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
62
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or `undefined`
|
|
63
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `SPOT_MARKET_WEIGHT_PRECISION`
|
|
64
|
+
* (1e4) units; only applied for `'Initial'` on non-quote markets, tightening (never loosening)
|
|
65
|
+
* the weight in the direction unfavorable to the user
|
|
66
|
+
* @return {{ weight: BN; weightedTokenValue: BN }} `weight` in `SPOT_MARKET_WEIGHT_PRECISION`
|
|
67
|
+
* (1e4); `weightedTokenValue` in `PRICE_PRECISION` (1e6)
|
|
68
|
+
*/
|
|
14
69
|
export declare function calculateWeightedTokenValue(tokenAmount: BN, tokenValue: BN, oraclePrice: BN, spotMarket: SpotMarketAccount, marginCategory: MarginCategory | undefined, customMarginRatio?: number): {
|
|
15
70
|
weight: BN;
|
|
16
71
|
weightedTokenValue: BN;
|
|
17
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* Simulates one side (bids or asks) of a spot position's open orders fully filling, and
|
|
75
|
+
* recomputes the resulting margin contribution. Mirrors the per-side branch of the program's
|
|
76
|
+
* `simulate_fills_both_sides`. The filled orders' value is valued at the *worst-case* price
|
|
77
|
+
* (`strictOraclePrice.max()`) regardless of side, since filling either bids or asks moves the
|
|
78
|
+
* position further from its current state in the direction that could hurt collateral value.
|
|
79
|
+
*
|
|
80
|
+
* @param {BN} tokenAmount - Current signed token amount before the simulated fill
|
|
81
|
+
* @param {BN} tokenValue - Current strict-oracle token value before the simulated fill, `PRICE_PRECISION` (1e6)
|
|
82
|
+
* @param {BN} openOrders - Signed open order base size for this side: `spotPosition.openBids`
|
|
83
|
+
* (stored positive) or `spotPosition.openAsks` (stored negative), the market's token decimals
|
|
84
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
85
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
86
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or `undefined`
|
|
87
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio; see `calculateWeightedTokenValue`
|
|
88
|
+
* @return {OrderFillSimulation} The post-fill simulation for this side
|
|
89
|
+
*/
|
|
18
90
|
export declare function simulateOrderFill(tokenAmount: BN, tokenValue: BN, openOrders: BN, strictOraclePrice: StrictOraclePrice, spotMarket: SpotMarketAccount, marginCategory: MarginCategory | undefined, customMarginRatio?: number): OrderFillSimulation;
|
|
19
91
|
//# sourceMappingURL=spotPosition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotPosition.d.ts","sourceRoot":"","sources":["../../../src/math/spotPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAM3E,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAS1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEvE;AAED,MAAM,MAAM,mBAAmB,GAAG;IACjC,WAAW,EAAE,EAAE,CAAC;IAChB,WAAW,EAAE,EAAE,CAAC;IAChB,UAAU,EAAE,EAAE,CAAC;IACf,MAAM,EAAE,EAAE,CAAC;IACX,kBAAkB,EAAE,EAAE,CAAC;IACvB,0BAA0B,EAAE,EAAE,CAAC;CAC/B,CAAC;AAEF,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,iBAAiB,CAAC,EAAE,MAAM,EAC1B,iBAAiB,GAAE,OAAc,GAC/B,mBAAmB,CAkErB;AAED,wBAAgB,2BAA2B,CAC1C,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,EAAE,EACd,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,iBAAiB,EAC7B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,iBAAiB,CAAC,EAAE,MAAM,GACxB;IAAE,MAAM,EAAE,EAAE,CAAC;IAAC,kBAAkB,EAAE,EAAE,CAAA;CAAE,CAwCxC;AAED,wBAAgB,iBAAiB,CAChC,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,EAAE,EACd,UAAU,EAAE,EAAE,EACd,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,iBAAiB,EAC7B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,iBAAiB,CAAC,EAAE,MAAM,GACxB,mBAAmB,CA4BrB"}
|
|
1
|
+
{"version":3,"file":"spotPosition.d.ts","sourceRoot":"","sources":["../../../src/math/spotPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAM3E,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAS1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEvE;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IACjC,oFAAoF;IACpF,WAAW,EAAE,EAAE,CAAC;IAChB,qFAAqF;IACrF,WAAW,EAAE,EAAE,CAAC;IAChB,mEAAmE;IACnE,UAAU,EAAE,EAAE,CAAC;IACf,8FAA8F;IAC9F,MAAM,EAAE,EAAE,CAAC;IACX,2CAA2C;IAC3C,kBAAkB,EAAE,EAAE,CAAC;IACvB,oGAAoG;IACpG,0BAA0B,EAAE,EAAE,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,iBAAiB,CAAC,EAAE,MAAM,EAC1B,iBAAiB,GAAE,OAAc,GAC/B,mBAAmB,CAkErB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CAC1C,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,EAAE,EACd,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,iBAAiB,EAC7B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,iBAAiB,CAAC,EAAE,MAAM,GACxB;IAAE,MAAM,EAAE,EAAE,CAAC;IAAC,kBAAkB,EAAE,EAAE,CAAA;CAAE,CAwCxC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAChC,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,EAAE,EACd,UAAU,EAAE,EAAE,EACd,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,iBAAiB,EAC7B,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,iBAAiB,CAAC,EAAE,MAAM,GACxB,mBAAmB,CA4BrB"}
|