@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
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
import { BN } from '../isomorphic/anchor';
|
|
2
2
|
import { MarginCategory, SpotBalanceType, SpotMarketAccount } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Converts a human-readable number or `BN` into the spot market's on-chain token precision
|
|
5
|
+
* (`10 ** spotMarket.decimals`). Both inputs are treated as whole-token amounts and multiplied
|
|
6
|
+
* by the market's precision.
|
|
7
|
+
*
|
|
8
|
+
* @param {number | BN} value - A human-readable amount, or a `BN` expressed in whole
|
|
9
|
+
* tokens (not yet scaled) that will be multiplied by the market's precision
|
|
10
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account (supplies `decimals`)
|
|
11
|
+
* @return {BN} The token amount scaled by `10 ** spotMarket.decimals`
|
|
12
|
+
*/
|
|
3
13
|
export declare function castNumberToSpotPrecision(value: number | BN, spotMarket: SpotMarketAccount): BN;
|
|
14
|
+
/**
|
|
15
|
+
* Calculates the effective margin ratio for a spot deposit or borrow position, expressed as
|
|
16
|
+
* `MARGIN_PRECISION - assetWeight` (deposits) or `liabilityWeight - MARGIN_PRECISION` (borrows).
|
|
17
|
+
* Note `MARGIN_PRECISION` and `SPOT_MARKET_WEIGHT_PRECISION` are both 1e4, so weights and margin
|
|
18
|
+
* ratios share the same scale.
|
|
19
|
+
*
|
|
20
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
21
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6)
|
|
22
|
+
* @param {MarginCategory} marginCategory - `'Initial'` or `'Maintenance'`
|
|
23
|
+
* @param {BN} size - The position size, scaled by `market.decimals`
|
|
24
|
+
* @param {SpotBalanceType} balanceType - Whether `size` is a deposit or a borrow
|
|
25
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `MARGIN_PRECISION` (1e4)
|
|
26
|
+
* units; only takes effect for `'Initial'`, where the looser (higher) of the computed ratio
|
|
27
|
+
* and this value is used, so a user can only demand *more* margin than the market default
|
|
28
|
+
* @return {number} The margin ratio, scaled by `MARGIN_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
29
|
+
*/
|
|
4
30
|
export declare function calculateSpotMarketMarginRatio(market: SpotMarketAccount, oraclePrice: BN, marginCategory: MarginCategory, size: BN, balanceType: SpotBalanceType, customMarginRatio?: number): number;
|
|
5
31
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
32
|
+
* Calculates the remaining room under the spot market's deposit cap, mirroring the check in the
|
|
33
|
+
* program's deposit handler (`deposit_token_amount + amount <= max_token_deposits`, when the cap
|
|
34
|
+
* is set).
|
|
35
|
+
*
|
|
36
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
37
|
+
* @return {BN} `market.maxTokenDeposits - currentDeposits` (floored at zero), scaled by
|
|
38
|
+
* `market.decimals`. **Ambiguous zero:** returns `ZERO` both when `maxTokenDeposits === 0`
|
|
39
|
+
* (cap disabled, deposits are actually unlimited) and when the cap is enabled but already
|
|
40
|
+
* fully utilized — callers must check `market.maxTokenDeposits.eq(ZERO)` separately to tell
|
|
41
|
+
* "no limit" from "no room left".
|
|
9
42
|
*/
|
|
10
43
|
export declare function calculateMaxRemainingDeposit(market: SpotMarketAccount): BN;
|
|
@@ -6,6 +6,16 @@ const types_1 = require("../types");
|
|
|
6
6
|
const spotBalance_1 = require("./spotBalance");
|
|
7
7
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
8
8
|
const utils_1 = require("./utils");
|
|
9
|
+
/**
|
|
10
|
+
* Converts a human-readable number or `BN` into the spot market's on-chain token precision
|
|
11
|
+
* (`10 ** spotMarket.decimals`). Both inputs are treated as whole-token amounts and multiplied
|
|
12
|
+
* by the market's precision.
|
|
13
|
+
*
|
|
14
|
+
* @param {number | BN} value - A human-readable amount, or a `BN` expressed in whole
|
|
15
|
+
* tokens (not yet scaled) that will be multiplied by the market's precision
|
|
16
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account (supplies `decimals`)
|
|
17
|
+
* @return {BN} The token amount scaled by `10 ** spotMarket.decimals`
|
|
18
|
+
*/
|
|
9
19
|
function castNumberToSpotPrecision(value, spotMarket) {
|
|
10
20
|
if (typeof value === 'number') {
|
|
11
21
|
return (0, utils_1.numberToSafeBN)(value, new anchor_1.BN(Math.pow(10, spotMarket.decimals)));
|
|
@@ -15,6 +25,22 @@ function castNumberToSpotPrecision(value, spotMarket) {
|
|
|
15
25
|
}
|
|
16
26
|
}
|
|
17
27
|
exports.castNumberToSpotPrecision = castNumberToSpotPrecision;
|
|
28
|
+
/**
|
|
29
|
+
* Calculates the effective margin ratio for a spot deposit or borrow position, expressed as
|
|
30
|
+
* `MARGIN_PRECISION - assetWeight` (deposits) or `liabilityWeight - MARGIN_PRECISION` (borrows).
|
|
31
|
+
* Note `MARGIN_PRECISION` and `SPOT_MARKET_WEIGHT_PRECISION` are both 1e4, so weights and margin
|
|
32
|
+
* ratios share the same scale.
|
|
33
|
+
*
|
|
34
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
35
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6)
|
|
36
|
+
* @param {MarginCategory} marginCategory - `'Initial'` or `'Maintenance'`
|
|
37
|
+
* @param {BN} size - The position size, scaled by `market.decimals`
|
|
38
|
+
* @param {SpotBalanceType} balanceType - Whether `size` is a deposit or a borrow
|
|
39
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `MARGIN_PRECISION` (1e4)
|
|
40
|
+
* units; only takes effect for `'Initial'`, where the looser (higher) of the computed ratio
|
|
41
|
+
* and this value is used, so a user can only demand *more* margin than the market default
|
|
42
|
+
* @return {number} The margin ratio, scaled by `MARGIN_PRECISION` (1e4, i.e. 10000 = 100%)
|
|
43
|
+
*/
|
|
18
44
|
function calculateSpotMarketMarginRatio(market, oraclePrice, marginCategory, size, balanceType, customMarginRatio = 0) {
|
|
19
45
|
let marginRatio;
|
|
20
46
|
if ((0, types_1.isVariant)(balanceType, 'deposit')) {
|
|
@@ -33,9 +59,16 @@ function calculateSpotMarketMarginRatio(market, oraclePrice, marginCategory, siz
|
|
|
33
59
|
}
|
|
34
60
|
exports.calculateSpotMarketMarginRatio = calculateSpotMarketMarginRatio;
|
|
35
61
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
62
|
+
* Calculates the remaining room under the spot market's deposit cap, mirroring the check in the
|
|
63
|
+
* program's deposit handler (`deposit_token_amount + amount <= max_token_deposits`, when the cap
|
|
64
|
+
* is set).
|
|
65
|
+
*
|
|
66
|
+
* @param {SpotMarketAccount} market - The spot market account
|
|
67
|
+
* @return {BN} `market.maxTokenDeposits - currentDeposits` (floored at zero), scaled by
|
|
68
|
+
* `market.decimals`. **Ambiguous zero:** returns `ZERO` both when `maxTokenDeposits === 0`
|
|
69
|
+
* (cap disabled, deposits are actually unlimited) and when the cap is enabled but already
|
|
70
|
+
* fully utilized — callers must check `market.maxTokenDeposits.eq(ZERO)` separately to tell
|
|
71
|
+
* "no limit" from "no room left".
|
|
39
72
|
*/
|
|
40
73
|
function calculateMaxRemainingDeposit(market) {
|
|
41
74
|
const marketMaxTokenDeposits = market.maxTokenDeposits;
|
|
@@ -1,18 +1,90 @@
|
|
|
1
1
|
import { MarginCategory, SpotMarketAccount, SpotPosition } from '../types';
|
|
2
2
|
import { BN } from '../isomorphic/anchor';
|
|
3
3
|
import { StrictOraclePrice } from '../oracles/strictOraclePrice';
|
|
4
|
+
/**
|
|
5
|
+
* True if a `SpotPosition` slot has no balance and no open orders, meaning it is free to be
|
|
6
|
+
* reused (or shown as empty) rather than representing an active position.
|
|
7
|
+
*
|
|
8
|
+
* @param {SpotPosition} position - The spot position
|
|
9
|
+
* @return {boolean} Whether the slot is unused
|
|
10
|
+
*/
|
|
4
11
|
export declare function isSpotPositionAvailable(position: SpotPosition): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Result of simulating a spot position's collateral contribution, optionally after its resting
|
|
14
|
+
* open orders are assumed to fill. All quote-denominated fields are `PRICE_PRECISION` (1e6).
|
|
15
|
+
*/
|
|
5
16
|
export type OrderFillSimulation = {
|
|
17
|
+
/** Signed token amount (base for non-quote markets), the market's token decimals */
|
|
6
18
|
tokenAmount: BN;
|
|
19
|
+
/** Value of the open orders assumed to fill, at the worst-case (max) oracle price */
|
|
7
20
|
ordersValue: BN;
|
|
21
|
+
/** Strict-oracle value of `tokenAmount` before margin weighting */
|
|
8
22
|
tokenValue: BN;
|
|
23
|
+
/** Asset or liability weight applied to `tokenValue`, `SPOT_MARKET_WEIGHT_PRECISION` (1e4) */
|
|
9
24
|
weight: BN;
|
|
25
|
+
/** `tokenValue` after applying `weight` */
|
|
10
26
|
weightedTokenValue: BN;
|
|
27
|
+
/** Net contribution to free collateral: `weightedTokenValue` plus `ordersValue` where applicable */
|
|
11
28
|
freeCollateralContribution: BN;
|
|
12
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Calculates a spot position's worst-case token amount and margin contribution, accounting for
|
|
32
|
+
* the possibility that its resting open bids or asks could fill. Mirrors the program's
|
|
33
|
+
* worst-case spot balance logic used in margin/health checks: if both `openBids` and `openAsks`
|
|
34
|
+
* are zero (or `includeOpenOrders` is false), the position's current balance is valued as-is;
|
|
35
|
+
* otherwise the function separately simulates full fill of the bids and of the asks
|
|
36
|
+
* (`simulateOrderFill`) and returns whichever leaves the *lower* `freeCollateralContribution` —
|
|
37
|
+
* i.e. the more conservative (worse-case) scenario for margin purposes.
|
|
38
|
+
*
|
|
39
|
+
* @param {SpotPosition} spotPosition - The user's spot position
|
|
40
|
+
* @param {SpotMarketAccount} spotMarketAccount - The spot market account
|
|
41
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
42
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or
|
|
43
|
+
* `undefined` for an unweighted valuation
|
|
44
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio (`'Initial'` only); see
|
|
45
|
+
* `calculateWeightedTokenValue`
|
|
46
|
+
* @param {boolean} [includeOpenOrders] - Whether to simulate open order fills at all; defaults
|
|
47
|
+
* to `true`. When `false`, only the current balance is valued regardless of open orders.
|
|
48
|
+
* @return {OrderFillSimulation} The worst-case simulation result
|
|
49
|
+
*/
|
|
13
50
|
export declare function getWorstCaseTokenAmounts(spotPosition: SpotPosition, spotMarketAccount: SpotMarketAccount, strictOraclePrice: StrictOraclePrice, marginCategory: MarginCategory | undefined, customMarginRatio?: number, includeOpenOrders?: boolean): OrderFillSimulation;
|
|
51
|
+
/**
|
|
52
|
+
* Applies the appropriate asset or liability weight (based on the sign of `tokenValue`) to a
|
|
53
|
+
* token value, mirroring the program's `calculate_weighted_token_value` closure used in both
|
|
54
|
+
* plain and worst-case-fill spot margin calculations.
|
|
55
|
+
*
|
|
56
|
+
* @param {BN} tokenAmount - Signed token amount, used (as `abs()`) for the IMF size adjustment
|
|
57
|
+
* @param {BN} tokenValue - Signed strict-oracle value, `PRICE_PRECISION` (1e6); sign selects
|
|
58
|
+
* asset weight (`>= 0`) vs liability weight (`< 0`)
|
|
59
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6), passed through to
|
|
60
|
+
* `calculateAssetWeight` for the initial-weight deposit-value scaling lookup
|
|
61
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
62
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or `undefined`
|
|
63
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `SPOT_MARKET_WEIGHT_PRECISION`
|
|
64
|
+
* (1e4) units; only applied for `'Initial'` on non-quote markets, tightening (never loosening)
|
|
65
|
+
* the weight in the direction unfavorable to the user
|
|
66
|
+
* @return {{ weight: BN; weightedTokenValue: BN }} `weight` in `SPOT_MARKET_WEIGHT_PRECISION`
|
|
67
|
+
* (1e4); `weightedTokenValue` in `PRICE_PRECISION` (1e6)
|
|
68
|
+
*/
|
|
14
69
|
export declare function calculateWeightedTokenValue(tokenAmount: BN, tokenValue: BN, oraclePrice: BN, spotMarket: SpotMarketAccount, marginCategory: MarginCategory | undefined, customMarginRatio?: number): {
|
|
15
70
|
weight: BN;
|
|
16
71
|
weightedTokenValue: BN;
|
|
17
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* Simulates one side (bids or asks) of a spot position's open orders fully filling, and
|
|
75
|
+
* recomputes the resulting margin contribution. Mirrors the per-side branch of the program's
|
|
76
|
+
* `simulate_fills_both_sides`. The filled orders' value is valued at the *worst-case* price
|
|
77
|
+
* (`strictOraclePrice.max()`) regardless of side, since filling either bids or asks moves the
|
|
78
|
+
* position further from its current state in the direction that could hurt collateral value.
|
|
79
|
+
*
|
|
80
|
+
* @param {BN} tokenAmount - Current signed token amount before the simulated fill
|
|
81
|
+
* @param {BN} tokenValue - Current strict-oracle token value before the simulated fill, `PRICE_PRECISION` (1e6)
|
|
82
|
+
* @param {BN} openOrders - Signed open order base size for this side: `spotPosition.openBids`
|
|
83
|
+
* (stored positive) or `spotPosition.openAsks` (stored negative), the market's token decimals
|
|
84
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
85
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
86
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or `undefined`
|
|
87
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio; see `calculateWeightedTokenValue`
|
|
88
|
+
* @return {OrderFillSimulation} The post-fill simulation for this side
|
|
89
|
+
*/
|
|
18
90
|
export declare function simulateOrderFill(tokenAmount: BN, tokenValue: BN, openOrders: BN, strictOraclePrice: StrictOraclePrice, spotMarket: SpotMarketAccount, marginCategory: MarginCategory | undefined, customMarginRatio?: number): OrderFillSimulation;
|
|
@@ -4,10 +4,37 @@ exports.simulateOrderFill = exports.calculateWeightedTokenValue = exports.getWor
|
|
|
4
4
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
5
5
|
const anchor_1 = require("../isomorphic/anchor");
|
|
6
6
|
const spotBalance_1 = require("./spotBalance");
|
|
7
|
+
/**
|
|
8
|
+
* True if a `SpotPosition` slot has no balance and no open orders, meaning it is free to be
|
|
9
|
+
* reused (or shown as empty) rather than representing an active position.
|
|
10
|
+
*
|
|
11
|
+
* @param {SpotPosition} position - The spot position
|
|
12
|
+
* @return {boolean} Whether the slot is unused
|
|
13
|
+
*/
|
|
7
14
|
function isSpotPositionAvailable(position) {
|
|
8
15
|
return position.scaledBalance.eq(numericConstants_1.ZERO) && position.openOrders === 0;
|
|
9
16
|
}
|
|
10
17
|
exports.isSpotPositionAvailable = isSpotPositionAvailable;
|
|
18
|
+
/**
|
|
19
|
+
* Calculates a spot position's worst-case token amount and margin contribution, accounting for
|
|
20
|
+
* the possibility that its resting open bids or asks could fill. Mirrors the program's
|
|
21
|
+
* worst-case spot balance logic used in margin/health checks: if both `openBids` and `openAsks`
|
|
22
|
+
* are zero (or `includeOpenOrders` is false), the position's current balance is valued as-is;
|
|
23
|
+
* otherwise the function separately simulates full fill of the bids and of the asks
|
|
24
|
+
* (`simulateOrderFill`) and returns whichever leaves the *lower* `freeCollateralContribution` —
|
|
25
|
+
* i.e. the more conservative (worse-case) scenario for margin purposes.
|
|
26
|
+
*
|
|
27
|
+
* @param {SpotPosition} spotPosition - The user's spot position
|
|
28
|
+
* @param {SpotMarketAccount} spotMarketAccount - The spot market account
|
|
29
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
30
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or
|
|
31
|
+
* `undefined` for an unweighted valuation
|
|
32
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio (`'Initial'` only); see
|
|
33
|
+
* `calculateWeightedTokenValue`
|
|
34
|
+
* @param {boolean} [includeOpenOrders] - Whether to simulate open order fills at all; defaults
|
|
35
|
+
* to `true`. When `false`, only the current balance is valued regardless of open orders.
|
|
36
|
+
* @return {OrderFillSimulation} The worst-case simulation result
|
|
37
|
+
*/
|
|
11
38
|
function getWorstCaseTokenAmounts(spotPosition, spotMarketAccount, strictOraclePrice, marginCategory, customMarginRatio, includeOpenOrders = true) {
|
|
12
39
|
const tokenAmount = (0, spotBalance_1.getSignedTokenAmount)((0, spotBalance_1.getTokenAmount)(spotPosition.scaledBalance, spotMarketAccount, spotPosition.balanceType), spotPosition.balanceType);
|
|
13
40
|
const tokenValue = (0, spotBalance_1.getStrictTokenValue)(tokenAmount, spotMarketAccount.decimals, strictOraclePrice);
|
|
@@ -33,6 +60,24 @@ function getWorstCaseTokenAmounts(spotPosition, spotMarketAccount, strictOracleP
|
|
|
33
60
|
}
|
|
34
61
|
}
|
|
35
62
|
exports.getWorstCaseTokenAmounts = getWorstCaseTokenAmounts;
|
|
63
|
+
/**
|
|
64
|
+
* Applies the appropriate asset or liability weight (based on the sign of `tokenValue`) to a
|
|
65
|
+
* token value, mirroring the program's `calculate_weighted_token_value` closure used in both
|
|
66
|
+
* plain and worst-case-fill spot margin calculations.
|
|
67
|
+
*
|
|
68
|
+
* @param {BN} tokenAmount - Signed token amount, used (as `abs()`) for the IMF size adjustment
|
|
69
|
+
* @param {BN} tokenValue - Signed strict-oracle value, `PRICE_PRECISION` (1e6); sign selects
|
|
70
|
+
* asset weight (`>= 0`) vs liability weight (`< 0`)
|
|
71
|
+
* @param {BN} oraclePrice - The oracle price, PRICE_PRECISION (1e6), passed through to
|
|
72
|
+
* `calculateAssetWeight` for the initial-weight deposit-value scaling lookup
|
|
73
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
74
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or `undefined`
|
|
75
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio, `SPOT_MARKET_WEIGHT_PRECISION`
|
|
76
|
+
* (1e4) units; only applied for `'Initial'` on non-quote markets, tightening (never loosening)
|
|
77
|
+
* the weight in the direction unfavorable to the user
|
|
78
|
+
* @return {{ weight: BN; weightedTokenValue: BN }} `weight` in `SPOT_MARKET_WEIGHT_PRECISION`
|
|
79
|
+
* (1e4); `weightedTokenValue` in `PRICE_PRECISION` (1e6)
|
|
80
|
+
*/
|
|
36
81
|
function calculateWeightedTokenValue(tokenAmount, tokenValue, oraclePrice, spotMarket, marginCategory, customMarginRatio) {
|
|
37
82
|
let weight;
|
|
38
83
|
if (tokenValue.gte(numericConstants_1.ZERO)) {
|
|
@@ -59,6 +104,23 @@ function calculateWeightedTokenValue(tokenAmount, tokenValue, oraclePrice, spotM
|
|
|
59
104
|
};
|
|
60
105
|
}
|
|
61
106
|
exports.calculateWeightedTokenValue = calculateWeightedTokenValue;
|
|
107
|
+
/**
|
|
108
|
+
* Simulates one side (bids or asks) of a spot position's open orders fully filling, and
|
|
109
|
+
* recomputes the resulting margin contribution. Mirrors the per-side branch of the program's
|
|
110
|
+
* `simulate_fills_both_sides`. The filled orders' value is valued at the *worst-case* price
|
|
111
|
+
* (`strictOraclePrice.max()`) regardless of side, since filling either bids or asks moves the
|
|
112
|
+
* position further from its current state in the direction that could hurt collateral value.
|
|
113
|
+
*
|
|
114
|
+
* @param {BN} tokenAmount - Current signed token amount before the simulated fill
|
|
115
|
+
* @param {BN} tokenValue - Current strict-oracle token value before the simulated fill, `PRICE_PRECISION` (1e6)
|
|
116
|
+
* @param {BN} openOrders - Signed open order base size for this side: `spotPosition.openBids`
|
|
117
|
+
* (stored positive) or `spotPosition.openAsks` (stored negative), the market's token decimals
|
|
118
|
+
* @param {StrictOraclePrice} strictOraclePrice - Live oracle price + 5min TWAP, PRICE_PRECISION (1e6)
|
|
119
|
+
* @param {SpotMarketAccount} spotMarket - The spot market account
|
|
120
|
+
* @param {MarginCategory | undefined} marginCategory - `'Initial'`, `'Maintenance'`, or `undefined`
|
|
121
|
+
* @param {number} [customMarginRatio] - User's custom max margin ratio; see `calculateWeightedTokenValue`
|
|
122
|
+
* @return {OrderFillSimulation} The post-fill simulation for this side
|
|
123
|
+
*/
|
|
62
124
|
function simulateOrderFill(tokenAmount, tokenValue, openOrders, strictOraclePrice, spotMarket, marginCategory, customMarginRatio) {
|
|
63
125
|
const ordersValue = (0, spotBalance_1.getTokenValue)(openOrders.neg(), spotMarket.decimals, {
|
|
64
126
|
price: strictOraclePrice.max(),
|
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
import { BN } from '../isomorphic/anchor';
|
|
2
2
|
import { StateAccount } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the SOL fee that will be charged to initialize a new sub-account, mirroring
|
|
5
|
+
* `State::get_init_user_fee`'s account-space-utilization scaling: once sub-account utilization
|
|
6
|
+
* passes 80% of the max allowed, the fee ramps linearly from 0 up to `maxInitializeUserFee` at
|
|
7
|
+
* 100% utilization; below 80% it's free. `numberOfSubAccounts` is incremented by 1 before this
|
|
8
|
+
* ratio is computed because the on-chain handler bumps `state.numberOfSubAccounts` *before*
|
|
9
|
+
* calling `get_init_user_fee` — so a client reading pre-transaction state must simulate that
|
|
10
|
+
* increment itself to predict the fee the transaction will actually charge.
|
|
11
|
+
*
|
|
12
|
+
* @param {StateAccount} stateAccount - The global state account, read before submitting the
|
|
13
|
+
* `initializeUser` transaction
|
|
14
|
+
* @return {BN} The init fee in lamports, `LAMPORTS_PRECISION` (1e9)
|
|
15
|
+
*/
|
|
3
16
|
export declare function calculateInitUserFee(stateAccount: StateAccount): BN;
|
|
17
|
+
/**
|
|
18
|
+
* Calculates the effective max number of sub-accounts allowed per authority, mirroring
|
|
19
|
+
* `State::max_number_of_sub_accounts`. Values of 5 or below are used as-is (an explicit small
|
|
20
|
+
* cap); values above 5 are multiplied by 100, letting the admin store a compact "hundreds" unit
|
|
21
|
+
* for large caps.
|
|
22
|
+
*
|
|
23
|
+
* @param {StateAccount} stateAccount - The global state account
|
|
24
|
+
* @return {BN} The effective max sub-account count (unitless count, not a token amount)
|
|
25
|
+
*/
|
|
4
26
|
export declare function getMaxNumberOfSubAccounts(stateAccount: StateAccount): BN;
|
|
27
|
+
/**
|
|
28
|
+
* True if the protocol-wide feature flag for median-based trigger prices is enabled, mirroring
|
|
29
|
+
* `State::use_median_trigger_price`. When enabled, `getTriggerPrice` (in `market.ts`) uses the
|
|
30
|
+
* median of last-fill, funding-basis, and 5min-basis prices instead of the raw oracle price for
|
|
31
|
+
* trigger order evaluation.
|
|
32
|
+
*
|
|
33
|
+
* @param {StateAccount} stateAccount - The global state account
|
|
34
|
+
* @return {boolean} Whether `FeatureBitFlags.MEDIAN_TRIGGER_PRICE` is set
|
|
35
|
+
*/
|
|
5
36
|
export declare function useMedianTriggerPrice(stateAccount: StateAccount): boolean;
|
|
@@ -4,6 +4,19 @@ exports.useMedianTriggerPrice = exports.getMaxNumberOfSubAccounts = exports.calc
|
|
|
4
4
|
const anchor_1 = require("../isomorphic/anchor");
|
|
5
5
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
|
+
/**
|
|
8
|
+
* Calculates the SOL fee that will be charged to initialize a new sub-account, mirroring
|
|
9
|
+
* `State::get_init_user_fee`'s account-space-utilization scaling: once sub-account utilization
|
|
10
|
+
* passes 80% of the max allowed, the fee ramps linearly from 0 up to `maxInitializeUserFee` at
|
|
11
|
+
* 100% utilization; below 80% it's free. `numberOfSubAccounts` is incremented by 1 before this
|
|
12
|
+
* ratio is computed because the on-chain handler bumps `state.numberOfSubAccounts` *before*
|
|
13
|
+
* calling `get_init_user_fee` — so a client reading pre-transaction state must simulate that
|
|
14
|
+
* increment itself to predict the fee the transaction will actually charge.
|
|
15
|
+
*
|
|
16
|
+
* @param {StateAccount} stateAccount - The global state account, read before submitting the
|
|
17
|
+
* `initializeUser` transaction
|
|
18
|
+
* @return {BN} The init fee in lamports, `LAMPORTS_PRECISION` (1e9)
|
|
19
|
+
*/
|
|
7
20
|
function calculateInitUserFee(stateAccount) {
|
|
8
21
|
const maxInitFee = new anchor_1.BN(stateAccount.maxInitializeUserFee)
|
|
9
22
|
.mul(numericConstants_1.LAMPORTS_PRECISION)
|
|
@@ -12,7 +25,7 @@ function calculateInitUserFee(stateAccount) {
|
|
|
12
25
|
const accountSpaceUtilization = stateAccount.numberOfSubAccounts
|
|
13
26
|
.addn(1)
|
|
14
27
|
.mul(numericConstants_1.PERCENTAGE_PRECISION)
|
|
15
|
-
.div(getMaxNumberOfSubAccounts(stateAccount));
|
|
28
|
+
.div(anchor_1.BN.max(getMaxNumberOfSubAccounts(stateAccount), new anchor_1.BN(1)));
|
|
16
29
|
if (accountSpaceUtilization.gt(targetUtilization)) {
|
|
17
30
|
return maxInitFee
|
|
18
31
|
.mul(accountSpaceUtilization.sub(targetUtilization))
|
|
@@ -23,6 +36,15 @@ function calculateInitUserFee(stateAccount) {
|
|
|
23
36
|
}
|
|
24
37
|
}
|
|
25
38
|
exports.calculateInitUserFee = calculateInitUserFee;
|
|
39
|
+
/**
|
|
40
|
+
* Calculates the effective max number of sub-accounts allowed per authority, mirroring
|
|
41
|
+
* `State::max_number_of_sub_accounts`. Values of 5 or below are used as-is (an explicit small
|
|
42
|
+
* cap); values above 5 are multiplied by 100, letting the admin store a compact "hundreds" unit
|
|
43
|
+
* for large caps.
|
|
44
|
+
*
|
|
45
|
+
* @param {StateAccount} stateAccount - The global state account
|
|
46
|
+
* @return {BN} The effective max sub-account count (unitless count, not a token amount)
|
|
47
|
+
*/
|
|
26
48
|
function getMaxNumberOfSubAccounts(stateAccount) {
|
|
27
49
|
if (stateAccount.maxNumberOfSubAccounts <= 5) {
|
|
28
50
|
return new anchor_1.BN(stateAccount.maxNumberOfSubAccounts);
|
|
@@ -30,6 +52,15 @@ function getMaxNumberOfSubAccounts(stateAccount) {
|
|
|
30
52
|
return new anchor_1.BN(stateAccount.maxNumberOfSubAccounts).muln(100);
|
|
31
53
|
}
|
|
32
54
|
exports.getMaxNumberOfSubAccounts = getMaxNumberOfSubAccounts;
|
|
55
|
+
/**
|
|
56
|
+
* True if the protocol-wide feature flag for median-based trigger prices is enabled, mirroring
|
|
57
|
+
* `State::use_median_trigger_price`. When enabled, `getTriggerPrice` (in `market.ts`) uses the
|
|
58
|
+
* median of last-fill, funding-basis, and 5min-basis prices instead of the raw oracle price for
|
|
59
|
+
* trigger order evaluation.
|
|
60
|
+
*
|
|
61
|
+
* @param {StateAccount} stateAccount - The global state account
|
|
62
|
+
* @return {boolean} Whether `FeatureBitFlags.MEDIAN_TRIGGER_PRICE` is set
|
|
63
|
+
*/
|
|
33
64
|
function useMedianTriggerPrice(stateAccount) {
|
|
34
65
|
return ((stateAccount.featureBitFlags & types_1.FeatureBitFlags.MEDIAN_TRIGGER_PRICE) > 0);
|
|
35
66
|
}
|
|
@@ -5,6 +5,7 @@ import { BN } from '../isomorphic/anchor';
|
|
|
5
5
|
import { User } from '../user';
|
|
6
6
|
import { DepositRecord } from '../types';
|
|
7
7
|
import fetch from 'node-fetch';
|
|
8
|
+
/** Response shape of SolBlaze's `bsol/stats` endpoint (bSOL conversion ratio + APY breakdown). */
|
|
8
9
|
export type BSOL_STATS_API_RESPONSE = {
|
|
9
10
|
success: boolean;
|
|
10
11
|
stats?: {
|
|
@@ -21,14 +22,53 @@ export type BSOL_STATS_API_RESPONSE = {
|
|
|
21
22
|
};
|
|
22
23
|
};
|
|
23
24
|
};
|
|
25
|
+
/** Response shape of SolBlaze's Velocity-specific lending emissions endpoint. */
|
|
24
26
|
export type BSOL_EMISSIONS_API_RESPONSE = {
|
|
25
27
|
success: boolean;
|
|
26
28
|
emissions?: {
|
|
27
29
|
lend: number;
|
|
28
30
|
};
|
|
29
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Fetches bSOL conversion/APY stats from SolBlaze's public API.
|
|
34
|
+
*
|
|
35
|
+
* @return {Promise<Response>} The raw `fetch` response; caller must check `.status` and parse
|
|
36
|
+
* JSON as `BSOL_STATS_API_RESPONSE`
|
|
37
|
+
*/
|
|
30
38
|
export declare function fetchBSolMetrics(): Promise<fetch.Response>;
|
|
39
|
+
/**
|
|
40
|
+
* Fetches bSOL lending-emissions data specific to Velocity from SolBlaze's public API.
|
|
41
|
+
*
|
|
42
|
+
* @return {Promise<Response>} The raw `fetch` response; caller must check `.status` and parse
|
|
43
|
+
* JSON as `BSOL_EMISSIONS_API_RESPONSE`
|
|
44
|
+
*/
|
|
31
45
|
export declare function fetchBSolVelocityEmissions(): Promise<fetch.Response>;
|
|
46
|
+
/**
|
|
47
|
+
* Dispatches to the correct "super-stake" (deposit SOL, swap to an LST, deposit the LST as
|
|
48
|
+
* leveraged collateral) instruction builder for a given LST spot market, routing by the SDK's
|
|
49
|
+
* hardcoded market-index constants: `2` (mSOL) uses Marinade-or-Jupiter (`findBestMSolSuperStakeIxs`),
|
|
50
|
+
* `6` (JitoSOL) and `8` (a generic LST, e.g. bSOL) both use Jupiter-only routing.
|
|
51
|
+
*
|
|
52
|
+
* @param {object} params
|
|
53
|
+
* @param {number} params.marketIndex - The LST spot market index; must be `2`, `6`, or `8`
|
|
54
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
55
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client for swap routing
|
|
56
|
+
* @param {VelocityClient} params.velocityClient - Velocity client (for market accounts + instruction building)
|
|
57
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account; defaults to the
|
|
58
|
+
* client's active sub-account if omitted
|
|
59
|
+
* @param {number} [params.price] - Pre-fetched mSOL/SOL price (market index 2 only); fetched from
|
|
60
|
+
* Marinade if omitted
|
|
61
|
+
* @param {boolean} [params.forceMarinade] - Force the direct Marinade stake path over a Jupiter
|
|
62
|
+
* swap even if Jupiter would be cheaper (market index 2 only)
|
|
63
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
64
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse instead of
|
|
65
|
+
* fetching a fresh one
|
|
66
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
67
|
+
* method: 'jupiter' | 'marinade'; price?: number }>} The instructions to submit, any address
|
|
68
|
+
* lookup tables they require, which routing method was chosen, and (market index 2 only) the
|
|
69
|
+
* price used for the routing decision
|
|
70
|
+
* @throws {Error} If `marketIndex` is not one of the supported LST markets
|
|
71
|
+
*/
|
|
32
72
|
export declare function findBestSuperStakeIxs({ marketIndex, amount, jupiterClient, velocityClient, userAccountPublicKey, price, forceMarinade, onlyDirectRoutes, jupiterQuote, }: {
|
|
33
73
|
marketIndex: number;
|
|
34
74
|
amount: BN;
|
|
@@ -45,6 +85,26 @@ export declare function findBestSuperStakeIxs({ marketIndex, amount, jupiterClie
|
|
|
45
85
|
method: 'jupiter' | 'marinade';
|
|
46
86
|
price?: number;
|
|
47
87
|
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Chooses between staking SOL directly with Marinade (mint mSOL 1:1 at the protocol rate) or
|
|
90
|
+
* swapping SOL for mSOL via Jupiter, whichever is cheaper for the user, then returns the
|
|
91
|
+
* resulting deposit instructions. Marinade is chosen when its price is lower than (i.e. gives
|
|
92
|
+
* more mSOL per SOL than) the best Jupiter quote, when `forceMarinade` is set, or when a Jupiter
|
|
93
|
+
* quote couldn't be obtained.
|
|
94
|
+
*
|
|
95
|
+
* @param {object} params
|
|
96
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
97
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
|
|
98
|
+
* @param {VelocityClient} params.velocityClient - Velocity client
|
|
99
|
+
* @param {number} [params.price] - Pre-fetched mSOL/SOL Marinade rate; fetched live if omitted
|
|
100
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
|
|
101
|
+
* @param {boolean} [params.forceMarinade] - Force the Marinade path regardless of Jupiter pricing
|
|
102
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
103
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
|
|
104
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
105
|
+
* method: 'jupiter' | 'marinade'; price: number }>} The chosen route's instructions, required
|
|
106
|
+
* lookup tables, the method used, and the mSOL/SOL price used for the decision
|
|
107
|
+
*/
|
|
48
108
|
export declare function findBestMSolSuperStakeIxs({ amount, jupiterClient, velocityClient, userAccountPublicKey, price, forceMarinade, onlyDirectRoutes, jupiterQuote, }: {
|
|
49
109
|
amount: BN;
|
|
50
110
|
jupiterClient: JupiterClient;
|
|
@@ -60,6 +120,20 @@ export declare function findBestMSolSuperStakeIxs({ amount, jupiterClient, veloc
|
|
|
60
120
|
method: 'jupiter' | 'marinade';
|
|
61
121
|
price: number;
|
|
62
122
|
}>;
|
|
123
|
+
/**
|
|
124
|
+
* Builds instructions to super-stake into JitoSOL (spot market index `6`) by swapping SOL for
|
|
125
|
+
* JitoSOL via Jupiter. Thin wrapper around `findBestLstSuperStakeIxs`.
|
|
126
|
+
*
|
|
127
|
+
* @param {object} params
|
|
128
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
129
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
|
|
130
|
+
* @param {VelocityClient} params.velocityClient - Velocity client
|
|
131
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
|
|
132
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
133
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
|
|
134
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
135
|
+
* method: 'jupiter' | 'marinade'; price?: number }>} Always resolves with `method: 'jupiter'`
|
|
136
|
+
*/
|
|
63
137
|
export declare function findBestJitoSolSuperStakeIxs({ amount, jupiterClient, velocityClient, userAccountPublicKey, onlyDirectRoutes, jupiterQuote, }: {
|
|
64
138
|
amount: BN;
|
|
65
139
|
jupiterClient: JupiterClient;
|
|
@@ -74,9 +148,22 @@ export declare function findBestJitoSolSuperStakeIxs({ amount, jupiterClient, ve
|
|
|
74
148
|
price?: number;
|
|
75
149
|
}>;
|
|
76
150
|
/**
|
|
77
|
-
*
|
|
151
|
+
* Builds instructions to super-stake into an arbitrary LST via a Jupiter swap from SOL. Unlike
|
|
152
|
+
* `findBestMSolSuperStakeIxs`, this does not compare against a direct-stake rate with the LST's
|
|
153
|
+
* own protocol — it always routes through Jupiter.
|
|
78
154
|
*
|
|
79
|
-
*
|
|
155
|
+
* @param {object} params
|
|
156
|
+
* @param {BN} params.amount - SOL amount to stake, `LAMPORTS_PRECISION` (1e9)
|
|
157
|
+
* @param {PublicKey} params.lstMint - The target LST's mint (unused directly here; kept for
|
|
158
|
+
* caller symmetry with `lstMarketIndex`)
|
|
159
|
+
* @param {number} params.lstMarketIndex - The target LST's spot market index
|
|
160
|
+
* @param {JupiterClient} params.jupiterClient - Jupiter aggregator client
|
|
161
|
+
* @param {VelocityClient} params.velocityClient - Velocity client
|
|
162
|
+
* @param {PublicKey} [params.userAccountPublicKey] - The target sub-account
|
|
163
|
+
* @param {boolean} [params.onlyDirectRoutes] - Restrict Jupiter routing to direct swaps only
|
|
164
|
+
* @param {QuoteResponse} [params.jupiterQuote] - A pre-fetched Jupiter quote to reuse
|
|
165
|
+
* @return {Promise<{ ixs: TransactionInstruction[]; lookupTables: AddressLookupTableAccount[];
|
|
166
|
+
* method: 'jupiter' | 'marinade' }>} Always resolves with `method: 'jupiter'`
|
|
80
167
|
*/
|
|
81
168
|
export declare function findBestLstSuperStakeIxs({ amount, jupiterClient, velocityClient, userAccountPublicKey, onlyDirectRoutes, lstMarketIndex, jupiterQuote, }: {
|
|
82
169
|
amount: BN;
|
|
@@ -92,6 +179,7 @@ export declare function findBestLstSuperStakeIxs({ amount, jupiterClient, veloci
|
|
|
92
179
|
lookupTables: AddressLookupTableAccount[];
|
|
93
180
|
method: 'jupiter' | 'marinade';
|
|
94
181
|
}>;
|
|
182
|
+
/** Response shape of Jito's `stake_pool_stats` endpoint: daily TVL, jitoSOL supply, and APY series. */
|
|
95
183
|
export type JITO_SOL_METRICS_ENDPOINT_RESPONSE = {
|
|
96
184
|
tvl: {
|
|
97
185
|
data: number;
|
|
@@ -106,10 +194,46 @@ export type JITO_SOL_METRICS_ENDPOINT_RESPONSE = {
|
|
|
106
194
|
date: string;
|
|
107
195
|
}[];
|
|
108
196
|
};
|
|
197
|
+
/**
|
|
198
|
+
* Fetches daily jitoSOL TVL/supply/APY stats for the trailing 30 days from Jito's public API.
|
|
199
|
+
*
|
|
200
|
+
* @return {Promise<JITO_SOL_METRICS_ENDPOINT_RESPONSE>} The parsed JSON response
|
|
201
|
+
*/
|
|
109
202
|
export declare function fetchJitoSolMetrics(): Promise<JITO_SOL_METRICS_ENDPOINT_RESPONSE>;
|
|
203
|
+
/**
|
|
204
|
+
* Estimates net SOL earned (or lost) from super-staking a given LST market over the user's full
|
|
205
|
+
* deposit history, by converting every historical SOL and LST deposit/withdrawal record to a SOL
|
|
206
|
+
* value at the LST/SOL ratio effective at that record's timestamp, then adding back the current
|
|
207
|
+
* SOL-value of the user's present SOL and LST balances. Requires third-party price history APIs
|
|
208
|
+
* per LST (Marinade for mSOL, Jito's stake pool stats for JitoSOL, SolBlaze's current-only rate
|
|
209
|
+
* for bSOL — bSOL therefore uses one flat ratio for all historical records, not a true history).
|
|
210
|
+
*
|
|
211
|
+
* @param {object} params
|
|
212
|
+
* @param {number} params.marketIndex - The LST spot market index (`2` mSOL, `6` JitoSOL, `8` bSOL)
|
|
213
|
+
* @param {User} params.user - The user account to read current SOL/LST balances from
|
|
214
|
+
* @param {DepositRecord[]} params.depositRecords - The user's historical deposit/withdraw records
|
|
215
|
+
* across the SOL market (index `1`) and the LST market
|
|
216
|
+
* @return {Promise<BN>} Estimated net SOL earned, `LAMPORTS_PRECISION` (1e9); can be negative
|
|
217
|
+
* @throws {Error} If an LST/SOL ratio can't be resolved for a record's timestamp (or for "now")
|
|
218
|
+
*/
|
|
110
219
|
export declare function calculateSolEarned({ marketIndex, user, depositRecords, }: {
|
|
111
220
|
marketIndex: number;
|
|
112
221
|
user: User;
|
|
113
222
|
depositRecords: DepositRecord[];
|
|
114
223
|
}): Promise<BN>;
|
|
224
|
+
/**
|
|
225
|
+
* Estimates the LST/SOL price at which a super-staked (leveraged LST-collateral, SOL-borrow)
|
|
226
|
+
* position would hit maintenance margin and become liquidatable: the price where
|
|
227
|
+
* `lstMaintenanceAssetWeight * lstDepositAmount * price === solMaintenanceLiabilityWeight * solBorrowAmount`.
|
|
228
|
+
* All inputs are plain (unscaled) numbers, not `BN` — weights are expected as fractions (e.g.
|
|
229
|
+
* `0.8` for 80%, i.e. already divided by `SPOT_MARKET_WEIGHT_PRECISION`), and this is a
|
|
230
|
+
* float-precision estimate for UI display, not a program-exact calculation.
|
|
231
|
+
*
|
|
232
|
+
* @param {number} lstDepositAmount - LST collateral amount, in whole LST tokens
|
|
233
|
+
* @param {number} lstMaintenanceAssetWeight - The LST market's maintenance asset weight, as a fraction
|
|
234
|
+
* @param {number} solBorrowAmount - SOL borrow amount, in whole SOL
|
|
235
|
+
* @param {number} solMaintenanceLiabilityWeight - The SOL market's maintenance liability weight, as a fraction
|
|
236
|
+
* @param {number} lstPriceRatio - Current LST/SOL price ratio
|
|
237
|
+
* @return {number} Estimated liquidation LST/SOL price
|
|
238
|
+
*/
|
|
115
239
|
export declare function calculateEstimatedSuperStakeLiquidationPrice(lstDepositAmount: number, lstMaintenanceAssetWeight: number, solBorrowAmount: number, solMaintenanceLiabilityWeight: number, lstPriceRatio: number): number;
|