@velocity-exchange/sdk 0.2.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
package/src/math/superStake.ts
CHANGED
|
@@ -14,6 +14,7 @@ import { LAMPORTS_PRECISION, ZERO } from '../constants/numericConstants';
|
|
|
14
14
|
import fetch from 'node-fetch';
|
|
15
15
|
import { checkSameDate } from './utils';
|
|
16
16
|
|
|
17
|
+
/** Response shape of SolBlaze's `bsol/stats` endpoint (bSOL conversion ratio + APY breakdown). */
|
|
17
18
|
export type BSOL_STATS_API_RESPONSE = {
|
|
18
19
|
success: boolean;
|
|
19
20
|
stats?: {
|
|
@@ -31,6 +32,7 @@ export type BSOL_STATS_API_RESPONSE = {
|
|
|
31
32
|
};
|
|
32
33
|
};
|
|
33
34
|
|
|
35
|
+
/** Response shape of SolBlaze's Velocity-specific lending emissions endpoint. */
|
|
34
36
|
export type BSOL_EMISSIONS_API_RESPONSE = {
|
|
35
37
|
success: boolean;
|
|
36
38
|
emissions?: {
|
|
@@ -38,14 +40,52 @@ export type BSOL_EMISSIONS_API_RESPONSE = {
|
|
|
38
40
|
};
|
|
39
41
|
};
|
|
40
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Fetches bSOL conversion/APY stats from SolBlaze's public API.
|
|
45
|
+
*
|
|
46
|
+
* @return {Promise<Response>} The raw `fetch` response; caller must check `.status` and parse
|
|
47
|
+
* JSON as `BSOL_STATS_API_RESPONSE`
|
|
48
|
+
*/
|
|
41
49
|
export async function fetchBSolMetrics() {
|
|
42
50
|
return await fetch('https://stake.solblaze.org/api/v1/stats');
|
|
43
51
|
}
|
|
44
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Fetches bSOL lending-emissions data specific to Velocity from SolBlaze's public API.
|
|
55
|
+
*
|
|
56
|
+
* @return {Promise<Response>} The raw `fetch` response; caller must check `.status` and parse
|
|
57
|
+
* JSON as `BSOL_EMISSIONS_API_RESPONSE`
|
|
58
|
+
*/
|
|
45
59
|
export async function fetchBSolVelocityEmissions() {
|
|
46
60
|
return await fetch('https://stake.solblaze.org/api/v1/velocity_emissions');
|
|
47
61
|
}
|
|
48
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Dispatches to the correct "super-stake" (deposit SOL, swap to an LST, deposit the LST as
|
|
65
|
+
* leveraged collateral) instruction builder for a given LST spot market, routing by the SDK's
|
|
66
|
+
* hardcoded market-index constants: `2` (mSOL) uses Marinade-or-Jupiter (`findBestMSolSuperStakeIxs`),
|
|
67
|
+
* `6` (JitoSOL) and `8` (a generic LST, e.g. bSOL) both use Jupiter-only routing.
|
|
68
|
+
*
|
|
69
|
+
* @param {object} params
|
|
70
|
+
* @param {number} params.marketIndex - The LST spot market index; must be `2`, `6`, or `8`
|
|
71
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
72
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client for swap routing
|
|
73
|
+
* @param {VelocityClient} params.velocityClient - Velocity client (for market accounts + instruction building)
|
|
74
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account; defaults to the
|
|
75
|
+
* client's active sub-account if omitted
|
|
76
|
+
* @param {number} [params.price] - Pre-fetched mSOL/SOL price (market index 2 only); fetched from
|
|
77
|
+
* Marinade if omitted
|
|
78
|
+
* @param {boolean} [params.forceMarinade] - Force the direct Marinade stake path over a Jupiter
|
|
79
|
+
* swap even if Jupiter would be cheaper (market index 2 only)
|
|
80
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
81
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse instead of
|
|
82
|
+
* fetching a fresh one
|
|
83
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
84
|
+
* method: 'jupiter' | 'marinade'; price?: number }>} The instructions to submit, any address
|
|
85
|
+
* lookup tables they require, which routing method was chosen, and (market index 2 only) the
|
|
86
|
+
* price used for the routing decision
|
|
87
|
+
* @throws {Error} If `marketIndex` is not one of the supported LST markets
|
|
88
|
+
*/
|
|
49
89
|
export async function findBestSuperStakeIxs({
|
|
50
90
|
marketIndex,
|
|
51
91
|
amount,
|
|
@@ -108,6 +148,26 @@ export async function findBestSuperStakeIxs({
|
|
|
108
148
|
}
|
|
109
149
|
}
|
|
110
150
|
|
|
151
|
+
/**
|
|
152
|
+
* Chooses between staking SOL directly with Marinade (mint mSOL 1:1 at the protocol rate) or
|
|
153
|
+
* swapping SOL for mSOL via Jupiter, whichever is cheaper for the user, then returns the
|
|
154
|
+
* resulting deposit instructions. Marinade is chosen when its price is lower than (i.e. gives
|
|
155
|
+
* more mSOL per SOL than) the best Jupiter quote, when `forceMarinade` is set, or when a Jupiter
|
|
156
|
+
* quote couldn't be obtained.
|
|
157
|
+
*
|
|
158
|
+
* @param {object} params
|
|
159
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
160
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
|
|
161
|
+
* @param {VelocityClient} params.velocityClient - Velocity client
|
|
162
|
+
* @param {number} [params.price] - Pre-fetched mSOL/SOL Marinade rate; fetched live if omitted
|
|
163
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
|
|
164
|
+
* @param {boolean} [params.forceMarinade] - Force the Marinade path regardless of Jupiter pricing
|
|
165
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
166
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
|
|
167
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
168
|
+
* method: 'jupiter' | 'marinade'; price: number }>} The chosen route's instructions, required
|
|
169
|
+
* lookup tables, the method used, and the mSOL/SOL price used for the decision
|
|
170
|
+
*/
|
|
111
171
|
export async function findBestMSolSuperStakeIxs({
|
|
112
172
|
amount,
|
|
113
173
|
jupiterClient,
|
|
@@ -190,6 +250,20 @@ export async function findBestMSolSuperStakeIxs({
|
|
|
190
250
|
}
|
|
191
251
|
}
|
|
192
252
|
|
|
253
|
+
/**
|
|
254
|
+
* Builds instructions to super-stake into JitoSOL (spot market index `6`) by swapping SOL for
|
|
255
|
+
* JitoSOL via Jupiter. Thin wrapper around `findBestLstSuperStakeIxs`.
|
|
256
|
+
*
|
|
257
|
+
* @param {object} params
|
|
258
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
259
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
|
|
260
|
+
* @param {VelocityClient} params.velocityClient - Velocity client
|
|
261
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
|
|
262
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
263
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
|
|
264
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
265
|
+
* method: 'jupiter' | 'marinade'; price?: number }>} Always resolves with `method: 'jupiter'`
|
|
266
|
+
*/
|
|
193
267
|
export async function findBestJitoSolSuperStakeIxs({
|
|
194
268
|
amount,
|
|
195
269
|
jupiterClient,
|
|
@@ -223,9 +297,22 @@ export async function findBestJitoSolSuperStakeIxs({
|
|
|
223
297
|
}
|
|
224
298
|
|
|
225
299
|
/**
|
|
226
|
-
*
|
|
300
|
+
* Builds instructions to super-stake into an arbitrary LST via a Jupiter swap from SOL. Unlike
|
|
301
|
+
* `findBestMSolSuperStakeIxs`, this does not compare against a direct-stake rate with the LST's
|
|
302
|
+
* own protocol — it always routes through Jupiter.
|
|
227
303
|
*
|
|
228
|
-
*
|
|
304
|
+
* @param {object} params
|
|
305
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
306
|
+
* @param {PublicKey} params.lstMint - The target LST's mint (unused directly here; kept for
|
|
307
|
+
* caller symmetry with `lstMarketIndex`)
|
|
308
|
+
* @param {number} params.lstMarketIndex - The target LST's spot market index
|
|
309
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
|
|
310
|
+
* @param {VelocityClient} params.velocityClient - Velocity client
|
|
311
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
|
|
312
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
313
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
|
|
314
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
315
|
+
* method: 'jupiter' | 'marinade' }>} Always resolves with `method: 'jupiter'`
|
|
229
316
|
*/
|
|
230
317
|
export async function findBestLstSuperStakeIxs({
|
|
231
318
|
amount,
|
|
@@ -266,6 +353,7 @@ export async function findBestLstSuperStakeIxs({
|
|
|
266
353
|
};
|
|
267
354
|
}
|
|
268
355
|
|
|
356
|
+
/** Response shape of Jito's `stake_pool_stats` endpoint: daily TVL, jitoSOL supply, and APY series. */
|
|
269
357
|
export type JITO_SOL_METRICS_ENDPOINT_RESPONSE = {
|
|
270
358
|
tvl: {
|
|
271
359
|
// TVL in SOL, BN
|
|
@@ -299,6 +387,11 @@ const get30DAgo = () => {
|
|
|
299
387
|
return date;
|
|
300
388
|
};
|
|
301
389
|
|
|
390
|
+
/**
|
|
391
|
+
* Fetches daily jitoSOL TVL/supply/APY stats for the trailing 30 days from Jito's public API.
|
|
392
|
+
*
|
|
393
|
+
* @return {Promise<JITO_SOL_METRICS_ENDPOINT_RESPONSE>} The parsed JSON response
|
|
394
|
+
*/
|
|
302
395
|
export async function fetchJitoSolMetrics() {
|
|
303
396
|
const res = await fetch(
|
|
304
397
|
'https://kobe.mainnet.jito.network/api/v1/stake_pool_stats',
|
|
@@ -360,6 +453,22 @@ const getJitoSolHistoricalPriceMap = async (timestamps: number[]) => {
|
|
|
360
453
|
}
|
|
361
454
|
};
|
|
362
455
|
|
|
456
|
+
/**
|
|
457
|
+
* Estimates net SOL earned (or lost) from super-staking a given LST market over the user's full
|
|
458
|
+
* deposit history, by converting every historical SOL and LST deposit/withdrawal record to a SOL
|
|
459
|
+
* value at the LST/SOL ratio effective at that record's timestamp, then adding back the current
|
|
460
|
+
* SOL-value of the user's present SOL and LST balances. Requires third-party price history APIs
|
|
461
|
+
* per LST (Marinade for mSOL, Jito's stake pool stats for JitoSOL, SolBlaze's current-only rate
|
|
462
|
+
* for bSOL — bSOL therefore uses one flat ratio for all historical records, not a true history).
|
|
463
|
+
*
|
|
464
|
+
* @param {object} params
|
|
465
|
+
* @param {number} params.marketIndex - The LST spot market index (`2` mSOL, `6` JitoSOL, `8` bSOL)
|
|
466
|
+
* @param {User} params.user - The user account to read current SOL/LST balances from
|
|
467
|
+
* @param {DepositRecord[]} params.depositRecords - The user's historical deposit/withdraw records
|
|
468
|
+
* across the SOL market (index `1`) and the LST market
|
|
469
|
+
* @return {Promise<BN>} Estimated net SOL earned, `LAMPORTS_PRECISION` (1e9); can be negative
|
|
470
|
+
* @throws {Error} If an LST/SOL ratio can't be resolved for a record's timestamp (or for "now")
|
|
471
|
+
*/
|
|
363
472
|
export async function calculateSolEarned({
|
|
364
473
|
marketIndex,
|
|
365
474
|
user,
|
|
@@ -463,7 +572,21 @@ export async function calculateSolEarned({
|
|
|
463
572
|
return solEarned;
|
|
464
573
|
}
|
|
465
574
|
|
|
466
|
-
|
|
575
|
+
/**
|
|
576
|
+
* Estimates the LST/SOL price at which a super-staked (leveraged LST-collateral, SOL-borrow)
|
|
577
|
+
* position would hit maintenance margin and become liquidatable: the price where
|
|
578
|
+
* `lstMaintenanceAssetWeight * lstDepositAmount * price === solMaintenanceLiabilityWeight * solBorrowAmount`.
|
|
579
|
+
* All inputs are plain (unscaled) numbers, not `BN` — weights are expected as fractions (e.g.
|
|
580
|
+
* `0.8` for 80%, i.e. already divided by `SPOT_MARKET_WEIGHT_PRECISION`), and this is a
|
|
581
|
+
* float-precision estimate for UI display, not a program-exact calculation.
|
|
582
|
+
*
|
|
583
|
+
* @param {number} lstDepositAmount - LST collateral amount, in whole LST tokens
|
|
584
|
+
* @param {number} lstMaintenanceAssetWeight - The LST market's maintenance asset weight, as a fraction
|
|
585
|
+
* @param {number} solBorrowAmount - SOL borrow amount, in whole SOL
|
|
586
|
+
* @param {number} solMaintenanceLiabilityWeight - The SOL market's maintenance liability weight, as a fraction
|
|
587
|
+
* @param {number} lstPriceRatio - Current LST/SOL price ratio
|
|
588
|
+
* @return {number} Estimated liquidation LST/SOL price
|
|
589
|
+
*/
|
|
467
590
|
export function calculateEstimatedSuperStakeLiquidationPrice(
|
|
468
591
|
lstDepositAmount: number,
|
|
469
592
|
lstMaintenanceAssetWeight: number,
|
package/src/math/tiers.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { isVariant, PerpMarketAccount, SpotMarketAccount } from '../types';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Maps a perp market's `contractTier` to an ordinal safety rank, lower is safer. Matches the
|
|
5
|
+
* declaration order of the Rust `ContractTier` enum (which derives `Ord` from declaration order,
|
|
6
|
+
* used by `ContractTier::is_as_safe_as_contract`'s `self <= other`).
|
|
7
|
+
*
|
|
8
|
+
* @param {PerpMarketAccount} perpMarket - The perp market account
|
|
9
|
+
* @return {number} `0` (A, safest) through `5` (Isolated, riskiest); `4` = HighlySpeculative
|
|
10
|
+
*/
|
|
3
11
|
export function getPerpMarketTierNumber(perpMarket: PerpMarketAccount): number {
|
|
4
12
|
if (isVariant(perpMarket.contractTier, 'a')) {
|
|
5
13
|
return 0;
|
|
@@ -16,6 +24,14 @@ export function getPerpMarketTierNumber(perpMarket: PerpMarketAccount): number {
|
|
|
16
24
|
}
|
|
17
25
|
}
|
|
18
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Maps a spot market's `assetTier` to an ordinal safety rank, lower is safer. Matches the
|
|
29
|
+
* declaration order of the Rust `AssetTier` enum, used by `ContractTier::is_as_safe_as_asset`.
|
|
30
|
+
*
|
|
31
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
32
|
+
* @return {number} `0` (Collateral, safest) through `4` (Unlisted, riskiest); `5` is unreachable
|
|
33
|
+
* (falls through only if `assetTier` matches none of the known variants)
|
|
34
|
+
*/
|
|
19
35
|
export function getSpotMarketTierNumber(spotMarket: SpotMarketAccount): number {
|
|
20
36
|
if (isVariant(spotMarket.assetTier, 'collateral')) {
|
|
21
37
|
return 0;
|
|
@@ -32,6 +48,19 @@ export function getSpotMarketTierNumber(spotMarket: SpotMarketAccount): number {
|
|
|
32
48
|
}
|
|
33
49
|
}
|
|
34
50
|
|
|
51
|
+
/**
|
|
52
|
+
* True if a perp market's tier is at least as safe as both a reference perp tier and a reference
|
|
53
|
+
* spot tier, mirroring `ContractTier::is_as_safe_as`. Used to gate cross-margining: a position in
|
|
54
|
+
* a market riskier than the account's other collateral/positions can force isolated margin.
|
|
55
|
+
* A perp tier is "as safe as" a spot tier if the spot tier is Unlisted (anything beats Unlisted);
|
|
56
|
+
* otherwise, if the spot tier is Cross or Isolated, the perp tier must be C-or-safer (tiers 0-2).
|
|
57
|
+
*
|
|
58
|
+
* @param {number} perpTier - This market's tier number, from `getPerpMarketTierNumber`
|
|
59
|
+
* @param {number} otherPerpTier - The reference perp tier number to compare against
|
|
60
|
+
* @param {number} otherSpotTier - The reference spot tier number to compare against, from
|
|
61
|
+
* `getSpotMarketTierNumber`
|
|
62
|
+
* @return {boolean} Whether `perpTier` is as safe as both references
|
|
63
|
+
*/
|
|
35
64
|
export function perpTierIsAsSafeAs(
|
|
36
65
|
perpTier: number,
|
|
37
66
|
otherPerpTier: number,
|
package/src/math/trade.ts
CHANGED
|
@@ -37,6 +37,11 @@ import { L2OrderBook } from '../dlob/orderBookLevels';
|
|
|
37
37
|
|
|
38
38
|
const MAXPCT = new BN(1000); //percentage units are [0,1000] => [0,1]
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Enumerates the price-impact-related fields historically produced by trade-slippage helpers.
|
|
42
|
+
* Not currently consumed as a parameter/return type by any function in this file — kept for
|
|
43
|
+
* backward compatibility with callers that reference it as a key type.
|
|
44
|
+
*/
|
|
40
45
|
export type PriceImpactUnit =
|
|
41
46
|
| 'entryPrice'
|
|
42
47
|
| 'maxPrice'
|
|
@@ -51,24 +56,23 @@ export type PriceImpactUnit =
|
|
|
51
56
|
| 'all';
|
|
52
57
|
|
|
53
58
|
/**
|
|
54
|
-
* Calculates avg/max slippage (price impact) for
|
|
55
|
-
*
|
|
56
|
-
* @deprecated use calculateEstimatedPerpEntryPrice instead
|
|
57
|
-
*
|
|
58
|
-
* @param direction
|
|
59
|
-
* @param amount
|
|
60
|
-
* @param market
|
|
61
|
-
* @param inputAssetType which asset is being traded
|
|
62
|
-
* @param useSpread whether to consider spread with calculating slippage
|
|
63
|
-
* @return [pctAvgSlippage, pctMaxSlippage, entryPrice, newPrice]
|
|
64
|
-
*
|
|
65
|
-
* 'pctAvgSlippage' => the percentage change to entryPrice (average est slippage in execution) : Precision PRICE_PRECISION
|
|
66
|
-
*
|
|
67
|
-
* 'pctMaxSlippage' => the percentage change to maxPrice (highest est slippage in execution) : Precision PRICE_PRECISION
|
|
59
|
+
* Calculates avg/max slippage (price impact) for a hypothetical AMM-only trade.
|
|
68
60
|
*
|
|
69
|
-
*
|
|
61
|
+
* @deprecated Use `calculateEstimatedPerpEntryPrice` instead (this ignores DLOB liquidity and
|
|
62
|
+
* only swaps against the vAMM).
|
|
70
63
|
*
|
|
71
|
-
*
|
|
64
|
+
* @param {PositionDirection} direction - Taker's trade direction
|
|
65
|
+
* @param {BN} amount - Trade size in `inputAssetType` units (base: BASE_PRECISION (1e9); quote: QUOTE_PRECISION (1e6))
|
|
66
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
67
|
+
* @param {AssetType} [inputAssetType] - Whether `amount` denominates base or quote; defaults to `'quote'`
|
|
68
|
+
* @param {MMOraclePriceData} mmOraclePriceData - MM oracle price data used for spread reserve calc
|
|
69
|
+
* @param {boolean} [useSpread] - Whether to consider the bid/ask spread when computing slippage; defaults to `true`
|
|
70
|
+
* @param {BN} [latestSlot] - Slot used for spread-reserve staleness/decay calc when `useSpread` is true
|
|
71
|
+
* @return {[BN, BN, BN, BN]} `[pctAvgSlippage, pctMaxSlippage, entryPrice, newPrice]`, all
|
|
72
|
+
* PRICE_PRECISION (1e6): `pctAvgSlippage` is the percentage change from the pre-trade price to
|
|
73
|
+
* `entryPrice` (average execution slippage); `pctMaxSlippage` is the percentage change from the
|
|
74
|
+
* pre-trade price to `newPrice` (worst-case/marginal slippage); `entryPrice` is the trade's
|
|
75
|
+
* average execution price; `newPrice` is the AMM's price after the trade
|
|
72
76
|
*/
|
|
73
77
|
export function calculateTradeSlippage(
|
|
74
78
|
direction: PositionDirection,
|
|
@@ -155,15 +159,20 @@ export function calculateTradeSlippage(
|
|
|
155
159
|
}
|
|
156
160
|
|
|
157
161
|
/**
|
|
158
|
-
* Calculates
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
* @param
|
|
162
|
-
* @param inputAssetType
|
|
163
|
-
* @param
|
|
164
|
-
* @
|
|
165
|
-
*
|
|
166
|
-
*
|
|
162
|
+
* Calculates the AMM reserve deltas and resulting quote amount for a hypothetical constant-product
|
|
163
|
+
* swap against the vAMM, without executing anything on-chain.
|
|
164
|
+
*
|
|
165
|
+
* @param {PositionDirection} direction - Taker's trade direction
|
|
166
|
+
* @param {BN} amount - Trade size in `inputAssetType` units (base: BASE_PRECISION (1e9); quote: QUOTE_PRECISION (1e6))
|
|
167
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
168
|
+
* @param {AssetType} [inputAssetType] - Whether `amount` denominates base or quote; defaults to `'quote'`
|
|
169
|
+
* @param {MMOraclePriceData} mmOraclePriceData - MM oracle price data used for spread reserve calc
|
|
170
|
+
* @param {boolean} [useSpread] - Whether to swap against the spread-adjusted reserves (bid/ask)
|
|
171
|
+
* rather than the raw reserves; defaults to `true`
|
|
172
|
+
* @param {BN} [latestSlot] - Slot used for spread-reserve staleness/decay calc when `useSpread` is true
|
|
173
|
+
* @return {[BN, BN, BN]} `[acquiredBase, acquiredQuote, acquiredQuoteAssetAmount]` — the change
|
|
174
|
+
* in the AMM's base and quote reserves (signed, `AMM_RESERVE_PRECISION` (1e9)), and the
|
|
175
|
+
* resulting user-facing quote amount swapped, `QUOTE_PRECISION` (1e6)
|
|
167
176
|
*/
|
|
168
177
|
export function calculateTradeAcquiredAmounts(
|
|
169
178
|
direction: PositionDirection,
|
|
@@ -215,24 +224,26 @@ export function calculateTradeAcquiredAmounts(
|
|
|
215
224
|
}
|
|
216
225
|
|
|
217
226
|
/**
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* @deprecated
|
|
227
|
+
* Calculates the AMM-only trade (direction + size) required to push the market's reserve price
|
|
228
|
+
* to (or `pct` of the way to) `targetPrice` — a simple arbitrage-sizing helper.
|
|
222
229
|
*
|
|
223
|
-
* @
|
|
224
|
-
* @param targetPrice
|
|
225
|
-
* @param pct optional default is 100% gap filling, can set smaller.
|
|
226
|
-
* @param outputAssetType which asset to trade.
|
|
227
|
-
* @param useSpread whether or not to consider the spread when calculating the trade size
|
|
228
|
-
* @returns trade direction/size in order to push price to a targetPrice,
|
|
230
|
+
* @deprecated No longer actively maintained; ignores DLOB liquidity.
|
|
229
231
|
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
232
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
233
|
+
* @param {BN} targetPrice - The price to arbitrage toward, PRICE_PRECISION (1e6)
|
|
234
|
+
* @param {BN} [pct] - Fraction of the full price gap to close, out of `MAXPCT` (1000 = 100%);
|
|
235
|
+
* defaults to fully closing the gap
|
|
236
|
+
* @param {AssetType} [outputAssetType] - Whether the returned trade size is denominated in base
|
|
237
|
+
* or quote; defaults to `'quote'`
|
|
238
|
+
* @param {MMOraclePriceData} [mmOraclePriceData] - MM oracle price data used for spread reserve calc
|
|
239
|
+
* @param {boolean} [useSpread] - Whether to consider the bid/ask spread when sizing the trade;
|
|
240
|
+
* defaults to `true`. If `targetPrice` already sits within the current bid/ask spread, returns
|
|
241
|
+
* a zero-size trade
|
|
242
|
+
* @param {BN} [latestSlot] - Slot used for spread-reserve staleness/decay calc when `useSpread` is true
|
|
243
|
+
* @return {[PositionDirection, BN, BN, BN]} `[direction, tradeSize, entryPrice, targetPrice]` —
|
|
244
|
+
* `direction` required to move price toward `targetPrice`; `tradeSize` in `outputAssetType`
|
|
245
|
+
* units (base: BASE_PRECISION (1e9); quote: QUOTE_PRECISION (1e6)); `entryPrice`/`targetPrice`
|
|
246
|
+
* PRICE_PRECISION (1e6)
|
|
236
247
|
*/
|
|
237
248
|
export function calculateTargetPriceTrade(
|
|
238
249
|
market: PerpMarketAccount,
|
|
@@ -389,17 +400,29 @@ export function calculateTargetPriceTrade(
|
|
|
389
400
|
}
|
|
390
401
|
|
|
391
402
|
/**
|
|
392
|
-
*
|
|
393
|
-
*
|
|
403
|
+
* Simulates walking the combined DLOB + vAMM liquidity to estimate the entry price and price
|
|
404
|
+
* impact of a hypothetical taker order, filling against resting limit orders and the AMM's
|
|
405
|
+
* spread-adjusted reserves in whichever is cheaper at each step. Price impact is the difference
|
|
406
|
+
* between the estimated entry price and the best available price (top of book/AMM) before any
|
|
407
|
+
* fill.
|
|
394
408
|
*
|
|
395
|
-
* @param assetType
|
|
396
|
-
* @param amount
|
|
397
|
-
* @param direction
|
|
398
|
-
* @param market
|
|
399
|
-
* @param
|
|
400
|
-
*
|
|
401
|
-
* @param
|
|
402
|
-
* @param
|
|
409
|
+
* @param {AssetType} assetType - Whether `amount` denominates base or quote
|
|
410
|
+
* @param {BN} amount - Order size, `assetType === 'base'`: BASE_PRECISION (1e9); `'quote'`: QUOTE_PRECISION (1e6)
|
|
411
|
+
* @param {PositionDirection} direction - Taker's trade direction
|
|
412
|
+
* @param {PerpMarketAccount} market - The perp market account
|
|
413
|
+
* @param {MMOraclePriceData} mmOraclePriceData - MM oracle price data used to price both the DLOB
|
|
414
|
+
* resting orders and the AMM's spread-adjusted reserves
|
|
415
|
+
* @param {DLOB} dlob - The order book to walk for resting limit orders
|
|
416
|
+
* @param {number} slot - Current slot, used to resolve oracle-pegged/auction limit order prices
|
|
417
|
+
* @param {Map<PublicKey, boolean>} [usersToSkip] - Maker user accounts to exclude from the fill
|
|
418
|
+
* simulation (e.g. the taker's own resting orders); defaults to none
|
|
419
|
+
* @return {{ entryPrice: BN; priceImpact: BN; bestPrice: BN; worstPrice: BN; baseFilled: BN;
|
|
420
|
+
* quoteFilled: BN }} `entryPrice`/`bestPrice`/`worstPrice` are PRICE_PRECISION (1e6);
|
|
421
|
+
* `priceImpact` is `|entryPrice - bestPrice| / bestPrice`, also scaled by PRICE_PRECISION
|
|
422
|
+
* (1e6) but represents a ratio, not a price (e.g. `1e4` = 1% impact); `baseFilled` is
|
|
423
|
+
* BASE_PRECISION (1e9); `quoteFilled` is QUOTE_PRECISION (1e6). All-zero only if `amount` is
|
|
424
|
+
* zero; if liquidity runs out before `amount` fully fills, the returned fields reflect the
|
|
425
|
+
* partial fill
|
|
403
426
|
*/
|
|
404
427
|
export function calculateEstimatedPerpEntryPrice(
|
|
405
428
|
assetType: AssetType,
|
|
@@ -432,7 +455,14 @@ export function calculateEstimatedPerpEntryPrice(
|
|
|
432
455
|
const takerIsLong = isVariant(direction, 'long');
|
|
433
456
|
const limitOrders = dlob[
|
|
434
457
|
takerIsLong ? 'getRestingLimitAsks' : 'getRestingLimitBids'
|
|
435
|
-
](
|
|
458
|
+
](
|
|
459
|
+
market.marketIndex,
|
|
460
|
+
slot,
|
|
461
|
+
MarketType.PERP,
|
|
462
|
+
mmOraclePriceData,
|
|
463
|
+
undefined,
|
|
464
|
+
market.orderTickSize
|
|
465
|
+
);
|
|
436
466
|
|
|
437
467
|
const swapDirection = getSwapDirection(assetType, direction);
|
|
438
468
|
|
|
@@ -489,7 +519,11 @@ export function calculateEstimatedPerpEntryPrice(
|
|
|
489
519
|
|
|
490
520
|
let limitOrder = limitOrders.next().value;
|
|
491
521
|
if (limitOrder) {
|
|
492
|
-
const limitOrderPrice = limitOrder.getPriceOrThrow(
|
|
522
|
+
const limitOrderPrice = limitOrder.getPriceOrThrow(
|
|
523
|
+
mmOraclePriceData,
|
|
524
|
+
slot,
|
|
525
|
+
market.orderTickSize
|
|
526
|
+
);
|
|
493
527
|
bestPrice = takerIsLong
|
|
494
528
|
? BN.min(limitOrderPrice, bestPrice)
|
|
495
529
|
: BN.max(limitOrderPrice, bestPrice);
|
|
@@ -502,7 +536,11 @@ export function calculateEstimatedPerpEntryPrice(
|
|
|
502
536
|
!cumulativeBaseFilled.eq(amount) &&
|
|
503
537
|
(ammLiquidity.gt(ZERO) || limitOrder)
|
|
504
538
|
) {
|
|
505
|
-
const limitOrderPrice = limitOrder?.getPrice(
|
|
539
|
+
const limitOrderPrice = limitOrder?.getPrice(
|
|
540
|
+
mmOraclePriceData,
|
|
541
|
+
slot,
|
|
542
|
+
market.orderTickSize
|
|
543
|
+
);
|
|
506
544
|
|
|
507
545
|
let maxAmmFill: BN;
|
|
508
546
|
if (limitOrderPrice) {
|
|
@@ -586,7 +624,11 @@ export function calculateEstimatedPerpEntryPrice(
|
|
|
586
624
|
!cumulativeQuoteFilled.eq(amount) &&
|
|
587
625
|
(ammLiquidity.gt(ZERO) || limitOrder)
|
|
588
626
|
) {
|
|
589
|
-
const limitOrderPrice = limitOrder?.getPrice(
|
|
627
|
+
const limitOrderPrice = limitOrder?.getPrice(
|
|
628
|
+
mmOraclePriceData,
|
|
629
|
+
slot,
|
|
630
|
+
market.orderTickSize
|
|
631
|
+
);
|
|
590
632
|
|
|
591
633
|
let maxAmmFill: BN;
|
|
592
634
|
if (limitOrderPrice) {
|
|
@@ -695,6 +737,23 @@ export function calculateEstimatedPerpEntryPrice(
|
|
|
695
737
|
};
|
|
696
738
|
}
|
|
697
739
|
|
|
740
|
+
/**
|
|
741
|
+
* Estimates entry price and price impact of a hypothetical taker order by walking a pre-built L2
|
|
742
|
+
* order book snapshot (asks for a long taker, bids for a short taker), rather than the live DLOB.
|
|
743
|
+
* Useful when an L2 snapshot is already available and a fresh DLOB walk isn't needed.
|
|
744
|
+
*
|
|
745
|
+
* @param {AssetType} assetType - Whether `amount` denominates base or quote
|
|
746
|
+
* @param {BN} amount - Order size, `basePrecision` for `'base'`; QUOTE_PRECISION (1e6) for `'quote'`
|
|
747
|
+
* @param {PositionDirection} direction - Taker's trade direction
|
|
748
|
+
* @param {BN} basePrecision - The base precision to use for size/price math (e.g. `BASE_PRECISION`)
|
|
749
|
+
* @param {L2OrderBook} l2 - Pre-computed L2 order book (bids/asks with price + size levels)
|
|
750
|
+
* @return {{ entryPrice: BN; priceImpact: BN; bestPrice: BN; worstPrice: BN; baseFilled: BN;
|
|
751
|
+
* quoteFilled: BN }} `entryPrice`/`bestPrice`/`worstPrice` are PRICE_PRECISION (1e6);
|
|
752
|
+
* `priceImpact` is `|entryPrice - bestPrice| / bestPrice` scaled by PRICE_PRECISION (1e6);
|
|
753
|
+
* `baseFilled` is `basePrecision`-scaled; `quoteFilled` is QUOTE_PRECISION (1e6). If the book
|
|
754
|
+
* is empty, `bestPrice`/`worstPrice` are `BN_MAX` (long) or `ZERO` (short) and `entryPrice`/
|
|
755
|
+
* `priceImpact` are `ZERO`
|
|
756
|
+
*/
|
|
698
757
|
export function calculateEstimatedEntryPriceWithL2(
|
|
699
758
|
assetType: AssetType,
|
|
700
759
|
amount: BN,
|
|
@@ -782,6 +841,17 @@ export function calculateEstimatedEntryPriceWithL2(
|
|
|
782
841
|
};
|
|
783
842
|
}
|
|
784
843
|
|
|
844
|
+
/**
|
|
845
|
+
* Estimates a user's trailing-30-day taker + maker volume as of `now`, using the same
|
|
846
|
+
* time-weighted decay shape as the on-chain `update_taker_volume_30d` / `update_maker_volume_30d`
|
|
847
|
+
* (`calculate_rolling_sum`) but without requiring a new fill to trigger the on-chain update —
|
|
848
|
+
* useful for e.g. displaying live fee-tier progress between actual `UserStats` refreshes.
|
|
849
|
+
*
|
|
850
|
+
* @param {UserStatsAccount} userStatsAccount - The user's stats account (`takerVolume30D`,
|
|
851
|
+
* `makerVolume30D`, and their respective last-update timestamps)
|
|
852
|
+
* @param {BN} [now] - Current unix timestamp (seconds); defaults to `Date.now() / 1000`
|
|
853
|
+
* @return {BN} Estimated combined 30-day taker + maker volume, QUOTE_PRECISION (1e6)
|
|
854
|
+
*/
|
|
785
855
|
export function getUser30dRollingVolumeEstimate(
|
|
786
856
|
userStatsAccount: UserStatsAccount,
|
|
787
857
|
now?: BN
|
package/src/math/utils.ts
CHANGED
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
import { BN } from '../isomorphic/anchor';
|
|
2
2
|
import { ONE, ZERO } from '../constants/numericConstants';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Clamps `x` to the inclusive range `[min, max]`.
|
|
6
|
+
*
|
|
7
|
+
* @param {BN} x - The value to clamp
|
|
8
|
+
* @param {BN} min - The lower bound
|
|
9
|
+
* @param {BN} max - The upper bound
|
|
10
|
+
* @return {BN} `x` if within range, otherwise `min` or `max`
|
|
11
|
+
*/
|
|
4
12
|
export function clampBN(x: BN, min: BN, max: BN): BN {
|
|
5
13
|
return BN.max(min, BN.min(x, max));
|
|
6
14
|
}
|
|
7
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Integer square root via binary recursion, floored to the nearest integer (i.e.
|
|
18
|
+
* `squareRootBN(n) === Math.floor(Math.sqrt(n))` for values representable as a double). Used
|
|
19
|
+
* throughout the AMM math wherever the program takes an integer sqrt of the constant-product
|
|
20
|
+
* invariant.
|
|
21
|
+
*
|
|
22
|
+
* @param {BN} n - A non-negative integer
|
|
23
|
+
* @return {BN} `floor(sqrt(n))`
|
|
24
|
+
* @throws {Error} If `n` is negative
|
|
25
|
+
*/
|
|
8
26
|
export const squareRootBN = (n: BN): BN => {
|
|
9
27
|
if (n.lt(new BN(0))) {
|
|
10
28
|
throw new Error('Sqrt only works on non-negtiave inputs');
|
|
@@ -23,6 +41,17 @@ export const squareRootBN = (n: BN): BN => {
|
|
|
23
41
|
}
|
|
24
42
|
};
|
|
25
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Integer division rounded up (ceiling), mirroring the program's unsigned `safe_div_ceil` (e.g.
|
|
46
|
+
* used for borrow token amounts, where rounding up favors the protocol/lenders over the
|
|
47
|
+
* borrower). Only meaningful for non-negative operands — `bn.js`'s `.mod()` returns a remainder
|
|
48
|
+
* with the sign of the dividend, so this is not a general-purpose ceiling division for signed
|
|
49
|
+
* inputs.
|
|
50
|
+
*
|
|
51
|
+
* @param {BN} a - The dividend (expected non-negative)
|
|
52
|
+
* @param {BN} b - The divisor (expected positive)
|
|
53
|
+
* @return {BN} `ceil(a / b)`
|
|
54
|
+
*/
|
|
26
55
|
export const divCeil = (a: BN, b: BN): BN => {
|
|
27
56
|
const quotient = a.div(b);
|
|
28
57
|
|
|
@@ -35,17 +64,27 @@ export const divCeil = (a: BN, b: BN): BN => {
|
|
|
35
64
|
}
|
|
36
65
|
};
|
|
37
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Sign function returning ±1 (never 0).
|
|
69
|
+
*
|
|
70
|
+
* @param {BN} x - The value to test
|
|
71
|
+
* @return {BN} `-1` if `x` is negative, otherwise `1` (including for zero)
|
|
72
|
+
*/
|
|
38
73
|
export const sigNum = (x: BN): BN => {
|
|
39
74
|
return x.isNeg() ? new BN(-1) : new BN(1);
|
|
40
75
|
};
|
|
41
76
|
|
|
42
77
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
78
|
+
* Calculates the time remaining until the next update is eligible under a rounded, "on-the-hour"
|
|
79
|
+
* update schedule. Used for perp funding rate updates and revenue-to-insurance-fund sweeps: if the
|
|
80
|
+
* last update landed within 1/3 of `updatePeriod` of an hour boundary, the next update is allowed
|
|
81
|
+
* on that boundary; otherwise it's pushed to the following boundary (two periods out) to avoid
|
|
82
|
+
* drifting the schedule off-hour. Returns zero once the wait has already elapsed.
|
|
83
|
+
*
|
|
84
|
+
* @param {BN} now - Current unix timestamp, seconds
|
|
85
|
+
* @param {BN} lastUpdateTs - Unix timestamp of the last update, seconds
|
|
86
|
+
* @param {BN} updatePeriod - Desired interval between updates, seconds
|
|
87
|
+
* @return {BN} Seconds remaining until the next update is eligible (zero if already due)
|
|
49
88
|
*/
|
|
50
89
|
export function timeRemainingUntilUpdate(
|
|
51
90
|
now: BN,
|
|
@@ -85,6 +124,15 @@ export function timeRemainingUntilUpdate(
|
|
|
85
124
|
return timeRemainingUntilUpdate;
|
|
86
125
|
}
|
|
87
126
|
|
|
127
|
+
/**
|
|
128
|
+
* Compares two date strings for equality by calendar day (year/month/date), ignoring
|
|
129
|
+
* time-of-day. Uses the local `getDate()`/`getMonth()`/`getFullYear()` getters, so the
|
|
130
|
+
* comparison is against the process's local-timezone calendar day (not UTC).
|
|
131
|
+
*
|
|
132
|
+
* @param {string} dateString1 - A date string parseable by `new Date()`
|
|
133
|
+
* @param {string} dateString2 - A date string parseable by `new Date()`
|
|
134
|
+
* @return {boolean} Whether both parse to the same calendar day
|
|
135
|
+
*/
|
|
88
136
|
export const checkSameDate = (dateString1: string, dateString2: string) => {
|
|
89
137
|
const date1 = new Date(dateString1);
|
|
90
138
|
const date2 = new Date(dateString2);
|
|
@@ -97,14 +145,28 @@ export const checkSameDate = (dateString1: string, dateString2: string) => {
|
|
|
97
145
|
return isSameDate;
|
|
98
146
|
};
|
|
99
147
|
|
|
148
|
+
/**
|
|
149
|
+
* True if `number` is within `Number.MAX_SAFE_INTEGER` (2^53 - 1), i.e. safe to convert to a
|
|
150
|
+
* `BN` via a JS `number` without losing precision.
|
|
151
|
+
*
|
|
152
|
+
* @param {number} number - The value to check (typically already multiplied by a target precision)
|
|
153
|
+
* @return {boolean} Whether `number` can be represented exactly as a JS number
|
|
154
|
+
*/
|
|
100
155
|
export function isBNSafe(number: number): boolean {
|
|
101
156
|
return number <= 0x1fffffffffffff;
|
|
102
157
|
}
|
|
103
158
|
|
|
104
159
|
/**
|
|
105
|
-
* Converts a
|
|
106
|
-
*
|
|
107
|
-
*
|
|
160
|
+
* Converts a human-readable JS `number` into a `BN` scaled by `precision`, routing through a
|
|
161
|
+
* string conversion (`number.toString()` for whole numbers) instead of `number * precision` when
|
|
162
|
+
* the naive multiplication would exceed `Number.MAX_SAFE_INTEGER` (per `isBNSafe`), avoiding
|
|
163
|
+
* silent floating-point precision loss for large inputs. Note a fractional input whose scaled
|
|
164
|
+
* value exceeds `Number.MAX_SAFE_INTEGER` has its fractional part truncated (`bn.js` accepts only
|
|
165
|
+
* integer numbers); this is intentional and pinned by `tests/bn/test.ts`.
|
|
166
|
+
*
|
|
167
|
+
* @param {number} number - The human-readable amount to convert
|
|
168
|
+
* @param {BN} precision - The target fixed-point precision (e.g. `QUOTE_PRECISION`, `BASE_PRECISION`)
|
|
169
|
+
* @return {BN} `number` scaled by `precision`
|
|
108
170
|
*/
|
|
109
171
|
export function numberToSafeBN(number: number, precision: BN): BN {
|
|
110
172
|
// check if number has decimals
|