@velocity-exchange/sdk 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2136 -4
- package/lib/browser/adminClient.js +2150 -4
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +4 -4
- package/lib/browser/idl/velocity.json +4 -4
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +91 -0
- package/lib/browser/math/exchangeStatus.js +106 -3
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -10
- package/lib/browser/math/orders.js +130 -19
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +31 -0
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +103 -2
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +781 -13
- package/lib/browser/types.js +126 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3322 -215
- package/lib/browser/velocityClient.js +3412 -245
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2136 -4
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2150 -4
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +4 -4
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +4 -4
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +91 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +106 -3
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -10
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +130 -19
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +31 -0
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +103 -2
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +781 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +126 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3322 -215
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3412 -245
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2156 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +4 -4
- package/src/idl/velocity.ts +4 -4
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +117 -2
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +141 -19
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +31 -0
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +104 -2
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +56 -0
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +777 -24
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3439 -249
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
package/src/oracles/utils.ts
CHANGED
|
@@ -2,6 +2,16 @@ import { Connection, PublicKey } from '@solana/web3.js';
|
|
|
2
2
|
import { BN } from '../isomorphic/anchor';
|
|
3
3
|
import { OraclePriceData } from './types';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Fetches an account's raw data, throwing if the account does not exist. Shared by every
|
|
7
|
+
* `OracleClient.getOraclePriceData` implementation so a missing oracle account fails loudly rather
|
|
8
|
+
* than silently decoding garbage/zeroed data.
|
|
9
|
+
* @param connection - RPC connection to fetch from.
|
|
10
|
+
* @param pricePublicKey - The oracle account's address.
|
|
11
|
+
* @param oracleName - Human-readable oracle name used only in the thrown error message (e.g. `"Pyth oracle"`).
|
|
12
|
+
* @returns The account's raw data buffer.
|
|
13
|
+
* @throws Error if the account does not exist.
|
|
14
|
+
*/
|
|
5
15
|
export async function getOracleAccountDataOrThrow(
|
|
6
16
|
connection: Connection,
|
|
7
17
|
pricePublicKey: PublicKey,
|
|
@@ -16,6 +26,16 @@ export async function getOracleAccountDataOrThrow(
|
|
|
16
26
|
return accountInfo.data;
|
|
17
27
|
}
|
|
18
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Derives an effective confidence interval for the market-maker (MM) oracle price by widening the
|
|
31
|
+
* primary oracle's confidence by however far the MM price has diverged from it. Used when
|
|
32
|
+
* validating the MM oracle (via `getOracleValidity`) so a large MM/primary-oracle divergence
|
|
33
|
+
* degrades MM-oracle validity the same way low primary-oracle confidence would, rather than
|
|
34
|
+
* evaluating MM price divergence with an artificially tight confidence band.
|
|
35
|
+
* @param mmOraclePrice - The perp market's cached MM oracle price, PRICE_PRECISION (1e6).
|
|
36
|
+
* @param oraclePriceData - The primary oracle's current price data (`price`/`confidence` in PRICE_PRECISION, 1e6).
|
|
37
|
+
* @returns `oraclePriceData.confidence + |mmOraclePrice - oraclePriceData.price|`, PRICE_PRECISION (1e6).
|
|
38
|
+
*/
|
|
19
39
|
export function getOracleConfidenceFromMMOracleData(
|
|
20
40
|
mmOraclePrice: BN,
|
|
21
41
|
oraclePriceData: OraclePriceData
|
package/src/orderParams.ts
CHANGED
|
@@ -7,6 +7,15 @@ import {
|
|
|
7
7
|
} from './types';
|
|
8
8
|
import { BN } from './isomorphic/anchor';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Builds `OptionalOrderParams` for a resting limit order (`OrderType.LIMIT`).
|
|
12
|
+
* Unlike a market order, a limit order has no auction and rests on the book at `price` until
|
|
13
|
+
* filled, cancelled, or expired.
|
|
14
|
+
* @param params - Order fields (see `OrderParams`); `baseAssetAmount` is in BASE_PRECISION
|
|
15
|
+
* (1e9), `price` is in PRICE_PRECISION (1e6). `orderType` is set automatically and must not be
|
|
16
|
+
* passed in.
|
|
17
|
+
* @returns Params merged onto `DefaultOrderParams`, ready to pass to `placeOrder`/`placePerpOrder`.
|
|
18
|
+
*/
|
|
10
19
|
export function getLimitOrderParams(
|
|
11
20
|
params: Omit<OptionalOrderParams, 'orderType'> & { price: BN }
|
|
12
21
|
): OptionalOrderParams {
|
|
@@ -17,6 +26,14 @@ export function getLimitOrderParams(
|
|
|
17
26
|
);
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Builds `OptionalOrderParams` for a trigger market order (`OrderType.TRIGGER_MARKET`) — a
|
|
31
|
+
* conditional order (e.g. stop-loss/take-profit) that becomes an auctioned market order once the
|
|
32
|
+
* oracle price crosses `triggerPrice` per `triggerCondition`.
|
|
33
|
+
* @param params - Order fields (see `OrderParams`); `baseAssetAmount` and `triggerPrice` use
|
|
34
|
+
* BASE_PRECISION (1e9) and PRICE_PRECISION (1e6) respectively. `orderType` is set automatically.
|
|
35
|
+
* @returns Params merged onto `DefaultOrderParams`, ready to pass to `placeOrder`/`placePerpOrder`.
|
|
36
|
+
*/
|
|
20
37
|
export function getTriggerMarketOrderParams(
|
|
21
38
|
params: Omit<OptionalOrderParams, 'orderType'> & {
|
|
22
39
|
triggerCondition: OrderTriggerCondition;
|
|
@@ -30,6 +47,14 @@ export function getTriggerMarketOrderParams(
|
|
|
30
47
|
);
|
|
31
48
|
}
|
|
32
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Builds `OptionalOrderParams` for a trigger limit order (`OrderType.TRIGGER_LIMIT`) — a
|
|
52
|
+
* conditional order that becomes a resting limit order at `price` once the oracle price crosses
|
|
53
|
+
* `triggerPrice` per `triggerCondition`.
|
|
54
|
+
* @param params - Order fields (see `OrderParams`); `baseAssetAmount`, `triggerPrice`, and `price`
|
|
55
|
+
* use BASE_PRECISION (1e9) and PRICE_PRECISION (1e6) respectively. `orderType` is set automatically.
|
|
56
|
+
* @returns Params merged onto `DefaultOrderParams`, ready to pass to `placeOrder`/`placePerpOrder`.
|
|
57
|
+
*/
|
|
33
58
|
export function getTriggerLimitOrderParams(
|
|
34
59
|
params: Omit<OptionalOrderParams, 'orderType'> & {
|
|
35
60
|
triggerCondition: OrderTriggerCondition;
|
|
@@ -44,6 +69,15 @@ export function getTriggerLimitOrderParams(
|
|
|
44
69
|
);
|
|
45
70
|
}
|
|
46
71
|
|
|
72
|
+
/**
|
|
73
|
+
* Builds `OptionalOrderParams` for a market order (`OrderType.MARKET`), filled immediately via a
|
|
74
|
+
* Dutch auction between `auctionStartPrice` and `auctionEndPrice` (defaults derived on-chain from
|
|
75
|
+
* the oracle price if omitted) over `auctionDuration` slots.
|
|
76
|
+
* @param params - Order fields (see `OrderParams`); `baseAssetAmount` is in BASE_PRECISION (1e9),
|
|
77
|
+
* any price fields are in PRICE_PRECISION (1e6). `orderType` is set automatically and must not be
|
|
78
|
+
* passed in.
|
|
79
|
+
* @returns Params merged onto `DefaultOrderParams`, ready to pass to `placeOrder`/`placePerpOrder`.
|
|
80
|
+
*/
|
|
47
81
|
export function getMarketOrderParams(
|
|
48
82
|
params: Omit<OptionalOrderParams, 'orderType'>
|
|
49
83
|
): OptionalOrderParams {
|
|
@@ -55,16 +89,20 @@ export function getMarketOrderParams(
|
|
|
55
89
|
}
|
|
56
90
|
|
|
57
91
|
/**
|
|
58
|
-
*
|
|
92
|
+
* Merges `optionalOrderParams` onto `DefaultOrderParams` (filling in any field the caller omitted,
|
|
93
|
+
* e.g. `marketType: MarketType.PERP`, `reduceOnly: false`, no trigger/oracle-offset), then applies
|
|
94
|
+
* `overridingParams` on top of that. Used internally by the `get*OrderParams` factories; call it
|
|
95
|
+
* directly only if you need to force a field that a factory doesn't expose.
|
|
59
96
|
*
|
|
60
97
|
* example:
|
|
61
98
|
* ```
|
|
62
99
|
* const orderParams = getOrderParams(optionalOrderParams, { marketType: MarketType.PERP });
|
|
63
100
|
* ```
|
|
64
101
|
*
|
|
65
|
-
* @param optionalOrderParams
|
|
66
|
-
* @param overridingParams
|
|
67
|
-
*
|
|
102
|
+
* @param optionalOrderParams - Required order fields plus any optional `OrderParams` overrides.
|
|
103
|
+
* @param overridingParams - Fields applied last, taking precedence over both the defaults and
|
|
104
|
+
* `optionalOrderParams`.
|
|
105
|
+
* @returns A fully-populated `OrderParams` object.
|
|
68
106
|
*/
|
|
69
107
|
export function getOrderParams(
|
|
70
108
|
optionalOrderParams: OptionalOrderParams,
|
|
@@ -29,6 +29,15 @@ import { ZERO } from '../constants/numericConstants';
|
|
|
29
29
|
*/
|
|
30
30
|
const USER_LAST_ACTIVE_SLOT_OFFSET = 4448;
|
|
31
31
|
|
|
32
|
+
/**
|
|
33
|
+
* OrderSubscriber — maintains a live, in-memory map of every `User` account
|
|
34
|
+
* (and therefore every open order) on the program, refreshed via polling,
|
|
35
|
+
* websocket program-account subscription, or gRPC/Laserstream, depending on
|
|
36
|
+
* `config.subscriptionConfig.type`. Used by keeper bots and `DLOBSubscriber`
|
|
37
|
+
* to build a full DLOB without individually subscribing to each trader's
|
|
38
|
+
* `User` account. Emits `orderCreated`/`userUpdated`/`updateReceived` on
|
|
39
|
+
* `eventEmitter` as updates arrive; see `OrderSubscriberEvents`.
|
|
40
|
+
*/
|
|
32
41
|
export class OrderSubscriber {
|
|
33
42
|
velocityClient: VelocityClient;
|
|
34
43
|
usersAccounts = new Map<string, { slot: number; userAccount: UserAccount }>();
|
|
@@ -45,6 +54,10 @@ export class OrderSubscriber {
|
|
|
45
54
|
|
|
46
55
|
fetchAllNonIdleUsers?: boolean;
|
|
47
56
|
|
|
57
|
+
/**
|
|
58
|
+
* @param config Subscription config. `subscriptionConfig.type` selects the transport (`'polling'`, `'websocket'`, or `'grpc'`); `fastDecode` (default `true`) uses the hand-written `decodeUser` fast path instead of the Anchor coder; `fetchAllNonIdleUsers` (default `false`) widens the account filter from "has at least one order" to "any non-idle user", useful for consumers that need idle-but-active accounts too.
|
|
59
|
+
* @throws If `config.velocityClient` is not provided.
|
|
60
|
+
*/
|
|
48
61
|
constructor(config: OrderSubscriberConfig) {
|
|
49
62
|
const velocityClient = config.velocityClient;
|
|
50
63
|
if (!velocityClient) {
|
|
@@ -95,10 +108,18 @@ export class OrderSubscriber {
|
|
|
95
108
|
this.fetchAllNonIdleUsers = config.fetchAllNonIdleUsers;
|
|
96
109
|
}
|
|
97
110
|
|
|
111
|
+
/** Starts the underlying transport (polling interval, websocket program-account subscription, or gRPC stream) chosen at construction time. */
|
|
98
112
|
public async subscribe(): Promise<void> {
|
|
99
113
|
await this.subscription.subscribe();
|
|
100
114
|
}
|
|
101
115
|
|
|
116
|
+
/**
|
|
117
|
+
* One-shot full refresh: fetches every `User` account matching the
|
|
118
|
+
* configured filters via `getProgramAccounts` and feeds each through
|
|
119
|
+
* `tryUpdateUserAccount`. Concurrent calls share the in-flight promise
|
|
120
|
+
* rather than issuing a second `getProgramAccounts` request. Errors are
|
|
121
|
+
* caught and logged, not thrown — the promise still resolves.
|
|
122
|
+
*/
|
|
102
123
|
async fetch(): Promise<void> {
|
|
103
124
|
if (this.fetchPromise) {
|
|
104
125
|
return this.fetchPromise;
|
|
@@ -160,6 +181,23 @@ export class OrderSubscriber {
|
|
|
160
181
|
}
|
|
161
182
|
}
|
|
162
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Applies an incoming update for the `User` account `key`, called by
|
|
186
|
+
* `fetch`, `addPubkey`, and each subscription transport
|
|
187
|
+
* (`PollingSubscription`/`WebsocketSubscription`/`grpcSubscription`).
|
|
188
|
+
* Advances `mostRecentSlot` and always emits `updateReceived`. The stored
|
|
189
|
+
* account is only replaced if `slot` is >= the currently cached slot for
|
|
190
|
+
* that key; for `'raw'`/`'buffer'` inputs, before decoding it also cheaply
|
|
191
|
+
* peeks the account's `lastActiveSlot` field at a fixed byte offset and
|
|
192
|
+
* discards the update if that's older than what's cached, without paying
|
|
193
|
+
* the cost of a full decode. On acceptance, emits `userUpdated`, and
|
|
194
|
+
* `orderCreated` for any orders in the account whose `order.slot` falls in
|
|
195
|
+
* `(previousSlot, slot]`.
|
|
196
|
+
* @param key Base58 pubkey of the `User` account.
|
|
197
|
+
* @param dataType `'raw'` (base64/base58 tuple from `getProgramAccounts`), `'decoded'` (already an Anchor-decoded `UserAccount`), or `'buffer'` (raw account bytes) — determines how `data` is interpreted/decoded.
|
|
198
|
+
* @param data The account payload, shaped per `dataType`.
|
|
199
|
+
* @param slot Slot the update was observed at.
|
|
200
|
+
*/
|
|
163
201
|
tryUpdateUserAccount(
|
|
164
202
|
key: string,
|
|
165
203
|
dataType: 'raw' | 'decoded' | 'buffer',
|
|
@@ -260,6 +298,15 @@ export class OrderSubscriber {
|
|
|
260
298
|
return new DLOB();
|
|
261
299
|
}
|
|
262
300
|
|
|
301
|
+
/**
|
|
302
|
+
* Builds a fresh `DLOB` from the currently cached `User` accounts. For
|
|
303
|
+
* reduce-only orders, resolves the base asset amount against the trader's
|
|
304
|
+
* existing perp position (via `calculateOrderBaseAssetAmount`, `BASE_PRECISION`,
|
|
305
|
+
* 1e9) rather than trusting the order's own `baseAssetAmount` field, since a
|
|
306
|
+
* reduce-only order's fillable size is capped by the position it reduces.
|
|
307
|
+
* @param slot Slot to stamp onto inserted orders (used by the DLOB for auction/expiry timing, not for filtering which accounts are included).
|
|
308
|
+
* @returns A new `DLOB` populated with every order across all cached users.
|
|
309
|
+
*/
|
|
263
310
|
public async getDLOB(slot: number): Promise<DLOB> {
|
|
264
311
|
const dlob = this.createDLOB();
|
|
265
312
|
for (const [key, { userAccount }] of this.usersAccounts.entries()) {
|
|
@@ -282,10 +329,12 @@ export class OrderSubscriber {
|
|
|
282
329
|
return dlob;
|
|
283
330
|
}
|
|
284
331
|
|
|
332
|
+
/** @returns The highest slot observed across all account updates so far, or 0 if none have arrived yet. */
|
|
285
333
|
public getSlot(): number {
|
|
286
334
|
return this.mostRecentSlot ?? 0;
|
|
287
335
|
}
|
|
288
336
|
|
|
337
|
+
/** Fetches a single `User` account directly (bypassing the subscription's filters) and applies it via `tryUpdateUserAccount`. Useful to backfill an account this subscriber's filters would otherwise exclude (e.g. an idle user with no orders). No-ops if the account doesn't exist. */
|
|
289
338
|
public async addPubkey(userAccountPublicKey: PublicKey): Promise<void> {
|
|
290
339
|
const accountInfo =
|
|
291
340
|
await this.velocityClient.connection.getAccountInfoAndContext(
|
|
@@ -302,6 +351,12 @@ export class OrderSubscriber {
|
|
|
302
351
|
}
|
|
303
352
|
}
|
|
304
353
|
|
|
354
|
+
/**
|
|
355
|
+
* Returns the cached `UserAccount` for `key`, fetching it on demand via
|
|
356
|
+
* `addPubkey` if not already cached.
|
|
357
|
+
* @param key Base58 pubkey of the `User` account.
|
|
358
|
+
* @throws If the account still isn't present after `addPubkey` (e.g. it doesn't exist on-chain).
|
|
359
|
+
*/
|
|
305
360
|
public async mustGetUserAccount(key: string): Promise<UserAccount> {
|
|
306
361
|
if (!this.usersAccounts.has(key)) {
|
|
307
362
|
await this.addPubkey(new PublicKey(key));
|
|
@@ -315,6 +370,7 @@ export class OrderSubscriber {
|
|
|
315
370
|
return slotAndUserAccount.userAccount;
|
|
316
371
|
}
|
|
317
372
|
|
|
373
|
+
/** Stops the underlying transport and clears the entire cached `User` account map. */
|
|
318
374
|
public async unsubscribe(): Promise<void> {
|
|
319
375
|
this.usersAccounts.clear();
|
|
320
376
|
await this.subscription.unsubscribe();
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import { OrderSubscriber } from './OrderSubscriber';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* `OrderSubscriber` transport that repeatedly calls `OrderSubscriber.fetch()`
|
|
5
|
+
* (a full `getProgramAccounts` snapshot) on a fixed interval. Simplest and
|
|
6
|
+
* most RPC-expensive transport; prefer websocket or grpc for large user sets.
|
|
7
|
+
*/
|
|
3
8
|
export class PollingSubscription {
|
|
4
9
|
private orderSubscriber: OrderSubscriber;
|
|
5
10
|
private frequency: number;
|
|
6
11
|
|
|
7
12
|
intervalId?: ReturnType<typeof setTimeout>;
|
|
8
13
|
|
|
14
|
+
/**
|
|
15
|
+
* @param orderSubscriber The `OrderSubscriber` to feed with each poll.
|
|
16
|
+
* @param frequency Poll interval in milliseconds.
|
|
17
|
+
*/
|
|
9
18
|
constructor({
|
|
10
19
|
orderSubscriber,
|
|
11
20
|
frequency,
|
|
@@ -17,6 +26,7 @@ export class PollingSubscription {
|
|
|
17
26
|
this.frequency = frequency;
|
|
18
27
|
}
|
|
19
28
|
|
|
29
|
+
/** Starts the polling interval and performs one immediate `fetch()` before returning. Idempotent while already subscribed. */
|
|
20
30
|
public async subscribe(): Promise<void> {
|
|
21
31
|
if (this.intervalId) {
|
|
22
32
|
return;
|
|
@@ -30,6 +40,7 @@ export class PollingSubscription {
|
|
|
30
40
|
await this.orderSubscriber.fetch();
|
|
31
41
|
}
|
|
32
42
|
|
|
43
|
+
/** Stops the polling interval. */
|
|
33
44
|
public async unsubscribe(): Promise<void> {
|
|
34
45
|
if (this.intervalId) {
|
|
35
46
|
clearInterval(this.intervalId);
|
|
@@ -5,6 +5,14 @@ import { Commitment, Context, PublicKey } from '@solana/web3.js';
|
|
|
5
5
|
import { ResubOpts } from '../accounts/types';
|
|
6
6
|
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* `OrderSubscriber` transport backed by a websocket `WebSocketProgramAccountSubscriber`
|
|
10
|
+
* filtered to non-idle `User` accounts. On subscribe, optionally performs an
|
|
11
|
+
* initial full `fetch()` snapshot (unless `skipInitialLoad`), then applies
|
|
12
|
+
* live updates as they arrive; if `resyncIntervalMs` is set, also runs a
|
|
13
|
+
* periodic full `fetch()` resync alongside the subscription to self-heal any
|
|
14
|
+
* missed program-account notifications.
|
|
15
|
+
*/
|
|
8
16
|
export class WebsocketSubscription {
|
|
9
17
|
private orderSubscriber: OrderSubscriber;
|
|
10
18
|
private commitment: Commitment;
|
|
@@ -17,6 +25,14 @@ export class WebsocketSubscription {
|
|
|
17
25
|
|
|
18
26
|
private decoded?: boolean;
|
|
19
27
|
|
|
28
|
+
/**
|
|
29
|
+
* @param orderSubscriber The `OrderSubscriber` to feed with updates.
|
|
30
|
+
* @param commitment Commitment level for the program-account subscription.
|
|
31
|
+
* @param skipInitialLoad Skip the initial full `fetch()` snapshot after subscribing; defaults to `false`.
|
|
32
|
+
* @param resubOpts Reconnect behavior for the underlying `WebSocketProgramAccountSubscriber`.
|
|
33
|
+
* @param resyncIntervalMs If set, runs a periodic full `fetch()` resync at this interval.
|
|
34
|
+
* @param decoded Whether updates are delivered already Anchor-decoded (`true`, default) or as raw buffers for `OrderSubscriber` to decode itself.
|
|
35
|
+
*/
|
|
20
36
|
constructor({
|
|
21
37
|
orderSubscriber,
|
|
22
38
|
commitment,
|
|
@@ -40,6 +56,7 @@ export class WebsocketSubscription {
|
|
|
40
56
|
this.decoded = decoded;
|
|
41
57
|
}
|
|
42
58
|
|
|
59
|
+
/** Establishes the websocket program-account subscription (idempotent — no-op if already subscribed), optionally backfills with `fetch()`, and starts the resync timer if configured. */
|
|
43
60
|
public async subscribe(): Promise<void> {
|
|
44
61
|
if (this.subscriber) {
|
|
45
62
|
return;
|
|
@@ -107,6 +124,7 @@ export class WebsocketSubscription {
|
|
|
107
124
|
}
|
|
108
125
|
}
|
|
109
126
|
|
|
127
|
+
/** Tears down the program-account subscription and cancels the resync timer, if any. No-op if not subscribed. */
|
|
110
128
|
public async unsubscribe(): Promise<void> {
|
|
111
129
|
if (!this.subscriber) return;
|
|
112
130
|
await this.subscriber.unsubscribe();
|
|
@@ -7,6 +7,12 @@ import { UserAccount } from '../types';
|
|
|
7
7
|
import { getUserFilter, getNonIdleUserFilter } from '../memcmp';
|
|
8
8
|
import { LaserstreamProgramAccountSubscriber } from '../accounts/laserProgramAccountSubscriber';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* `OrderSubscriber` transport backed by a gRPC Geyser stream — either the
|
|
12
|
+
* standard `grpcProgramAccountSubscriber` or, when `grpcConfigs.client ===
|
|
13
|
+
* 'laser'`, `LaserstreamProgramAccountSubscriber` — filtered to non-idle
|
|
14
|
+
* `User` accounts. Same initial-load/resync semantics as `WebsocketSubscription`.
|
|
15
|
+
*/
|
|
10
16
|
export class grpcSubscription {
|
|
11
17
|
private orderSubscriber: OrderSubscriber;
|
|
12
18
|
private skipInitialLoad: boolean;
|
|
@@ -22,6 +28,14 @@ export class grpcSubscription {
|
|
|
22
28
|
|
|
23
29
|
private grpcConfigs: GrpcConfigs;
|
|
24
30
|
|
|
31
|
+
/**
|
|
32
|
+
* @param grpcConfigs gRPC/Geyser endpoint config; `client: 'laser'` selects the Laserstream implementation, otherwise the standard gRPC subscriber is used.
|
|
33
|
+
* @param orderSubscriber The `OrderSubscriber` to feed with updates.
|
|
34
|
+
* @param skipInitialLoad Skip the initial full `fetch()` snapshot after subscribing; defaults to `false`.
|
|
35
|
+
* @param resubOpts Reconnect behavior for the underlying gRPC subscriber.
|
|
36
|
+
* @param resyncIntervalMs If set, runs a periodic full `fetch()` resync at this interval.
|
|
37
|
+
* @param decoded Whether updates are delivered already Anchor-decoded (`true`, default) or as raw buffers for `OrderSubscriber` to decode itself.
|
|
38
|
+
*/
|
|
25
39
|
constructor({
|
|
26
40
|
grpcConfigs,
|
|
27
41
|
orderSubscriber,
|
|
@@ -45,6 +59,7 @@ export class grpcSubscription {
|
|
|
45
59
|
this.grpcConfigs = grpcConfigs;
|
|
46
60
|
}
|
|
47
61
|
|
|
62
|
+
/** Establishes the gRPC/Laserstream program-account subscription (idempotent), optionally backfills with `fetch()`, and starts the resync timer if configured. */
|
|
48
63
|
public async subscribe(): Promise<void> {
|
|
49
64
|
if (this.subscriber) {
|
|
50
65
|
return;
|
|
@@ -127,6 +142,7 @@ export class grpcSubscription {
|
|
|
127
142
|
}
|
|
128
143
|
}
|
|
129
144
|
|
|
145
|
+
/** Tears down the gRPC subscription and cancels the resync timer, if any. No-op if not subscribed. */
|
|
130
146
|
public async unsubscribe(): Promise<void> {
|
|
131
147
|
if (!this.subscriber) return;
|
|
132
148
|
await this.subscriber.unsubscribe();
|
|
@@ -3,8 +3,10 @@ import { Order, UserAccount } from '../types';
|
|
|
3
3
|
import { VelocityClient } from '../velocityClient';
|
|
4
4
|
import { GrpcConfigs } from '../accounts/types';
|
|
5
5
|
|
|
6
|
+
/** Configuration for `OrderSubscriber`. */
|
|
6
7
|
export type OrderSubscriberConfig = {
|
|
7
8
|
velocityClient?: VelocityClient;
|
|
9
|
+
/** Selects the update transport: `'polling'` (interval `getProgramAccounts`), `'websocket'` (program-account subscription), or `'grpc'` (Geyser/Laserstream). `commitment` defaults to `'processed'` if unset; `skipInitialLoad` (websocket/grpc only) skips the initial `fetch()` full snapshot; `resubTimeoutMs`/`logResubMessages` control websocket/grpc reconnect behavior; `resyncIntervalMs` (websocket/grpc only) triggers a periodic full `fetch()` resync on top of the live subscription. */
|
|
8
10
|
subscriptionConfig:
|
|
9
11
|
| {
|
|
10
12
|
type: 'polling';
|
|
@@ -28,12 +30,17 @@ export type OrderSubscriberConfig = {
|
|
|
28
30
|
resyncIntervalMs?: number;
|
|
29
31
|
commitment?: Commitment;
|
|
30
32
|
};
|
|
33
|
+
/** Use the hand-written `decodeUser` fast-path decoder instead of the Anchor account coder. Defaults to `true`. */
|
|
31
34
|
fastDecode?: boolean;
|
|
35
|
+
/** For websocket/grpc transports, whether the subscriber's own subscription decodes accounts itself (`true`, default) or passes raw buffers for the caller to decode. */
|
|
32
36
|
decodeData?: boolean;
|
|
37
|
+
/** Widen the account filter from "has at least one order" to "any non-idle user", so idle-but-non-empty accounts are also tracked. Defaults to `false`. */
|
|
33
38
|
fetchAllNonIdleUsers?: boolean;
|
|
34
39
|
};
|
|
35
40
|
|
|
41
|
+
/** Events emitted on `OrderSubscriber.eventEmitter`. */
|
|
36
42
|
export interface OrderSubscriberEvents {
|
|
43
|
+
/** Fired when a `User` account update introduces one or more orders newly placed in `(previousObservedSlot, slot]`. */
|
|
37
44
|
orderCreated: (
|
|
38
45
|
account: UserAccount,
|
|
39
46
|
updatedOrders: Order[],
|
|
@@ -41,12 +48,14 @@ export interface OrderSubscriberEvents {
|
|
|
41
48
|
slot: number,
|
|
42
49
|
dataType: 'raw' | 'decoded' | 'buffer'
|
|
43
50
|
) => void;
|
|
51
|
+
/** Fired whenever a `User` account update is accepted (i.e. not rejected by the staleness/slot check). */
|
|
44
52
|
userUpdated: (
|
|
45
53
|
account: UserAccount,
|
|
46
54
|
pubkey: PublicKey,
|
|
47
55
|
slot: number,
|
|
48
56
|
dataType: 'raw' | 'decoded' | 'buffer'
|
|
49
57
|
) => void;
|
|
58
|
+
/** Fired for every incoming update, even ones ultimately rejected as stale. */
|
|
50
59
|
updateReceived: (
|
|
51
60
|
pubkey: PublicKey,
|
|
52
61
|
slot: number,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SolanaPriorityFeeResponse } from './solanaPriorityFeeMethod';
|
|
2
2
|
import { PriorityFeeStrategy } from './types';
|
|
3
3
|
|
|
4
|
+
/** `PriorityFeeStrategy` that averages `prioritizationFee` across all samples in the lookback window. Returns `0` for an empty sample set. */
|
|
4
5
|
export class AverageOverSlotsStrategy implements PriorityFeeStrategy {
|
|
5
6
|
calculate(samples: SolanaPriorityFeeResponse[]): number {
|
|
6
7
|
if (samples.length === 0) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SolanaPriorityFeeResponse } from './solanaPriorityFeeMethod';
|
|
2
2
|
import { PriorityFeeStrategy } from './types';
|
|
3
3
|
|
|
4
|
+
/** `PriorityFeeStrategy` that averages `prioritizationFee` across all samples. Unlike `AverageOverSlotsStrategy`, does not guard the empty-sample case — calling with `samples.length === 0` returns `NaN`. */
|
|
4
5
|
export class AverageStrategy implements PriorityFeeStrategy {
|
|
5
6
|
calculate(samples: SolanaPriorityFeeResponse[]): number {
|
|
6
7
|
return (
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { SolanaPriorityFeeResponse } from './solanaPriorityFeeMethod';
|
|
2
2
|
import { PriorityFeeStrategy } from './types';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* `PriorityFeeStrategy` that computes an exponentially-weighted moving
|
|
6
|
+
* average of `prioritizationFee` over slots, so more recent samples are
|
|
7
|
+
* weighted more heavily and larger slot gaps decay the older sample's
|
|
8
|
+
* influence faster.
|
|
9
|
+
*/
|
|
4
10
|
class EwmaStrategy implements PriorityFeeStrategy {
|
|
5
11
|
private halfLife: number;
|
|
6
12
|
|
|
@@ -12,6 +18,10 @@ class EwmaStrategy implements PriorityFeeStrategy {
|
|
|
12
18
|
}
|
|
13
19
|
|
|
14
20
|
// samples provided in desc slot order
|
|
21
|
+
/**
|
|
22
|
+
* @param samples Fee samples sorted descending by slot (as returned by `fetchSolanaPriorityFee`). Reversed internally to process oldest-first.
|
|
23
|
+
* @returns `0` for an empty sample set; the single sample's fee if only one is provided; otherwise the EWMA, decayed per-step by `1 - exp(ln(0.5) / halfLife * slotGap)`.
|
|
24
|
+
*/
|
|
15
25
|
calculate(samples: SolanaPriorityFeeResponse[]): number {
|
|
16
26
|
if (samples.length === 0) {
|
|
17
27
|
return 0;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fetch from 'node-fetch';
|
|
2
2
|
|
|
3
|
+
/** Percentile buckets returned by Helius's `getPriorityFeeEstimate` (`includeAllPriorityFeeLevels`). */
|
|
3
4
|
export enum HeliusPriorityLevel {
|
|
4
5
|
MIN = 'min', // 25th percentile
|
|
5
6
|
LOW = 'low', // 25th percentile
|
|
@@ -9,21 +10,31 @@ export enum HeliusPriorityLevel {
|
|
|
9
10
|
UNSAFE_MAX = 'unsafeMax', // 100th percentile
|
|
10
11
|
}
|
|
11
12
|
|
|
13
|
+
/** Priority fee (micro-lamports/CU) at each `HeliusPriorityLevel` percentile. */
|
|
12
14
|
export type HeliusPriorityFeeLevels = {
|
|
13
15
|
[key in HeliusPriorityLevel]: number;
|
|
14
16
|
};
|
|
15
17
|
|
|
18
|
+
/** Raw JSON-RPC response from Helius's `getPriorityFeeEstimate`. */
|
|
16
19
|
export type HeliusPriorityFeeResponse = {
|
|
17
20
|
jsonrpc: string;
|
|
18
21
|
result: {
|
|
22
|
+
/** Single-value estimate; only populated when `includeAllPriorityFeeLevels` was not requested. */
|
|
19
23
|
priorityFeeEstimate?: number;
|
|
24
|
+
/** Per-percentile estimates; populated when `includeAllPriorityFeeLevels: true` is requested (as `fetchHeliusPriorityFee` does). */
|
|
20
25
|
priorityFeeLevels?: HeliusPriorityFeeLevels;
|
|
21
26
|
};
|
|
22
27
|
id: string;
|
|
23
28
|
};
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Fetches priority fee estimates from the Helius `getPriorityFeeEstimate` API
|
|
32
|
+
* (https://docs.helius.dev/solana-rpc-nodes/alpha-priority-fee-api).
|
|
33
|
+
* @param heliusRpcUrl Helius RPC URL to POST the `getPriorityFeeEstimate` request to.
|
|
34
|
+
* @param lookbackDistance Number of recent slots to consider (`lookbackSlots` option).
|
|
35
|
+
* @param addresses Account keys to scope the estimate to (accounts the transaction will write-lock).
|
|
36
|
+
* @returns The full Helius response (with `includeAllPriorityFeeLevels: true`), or `undefined` if the request failed (error is logged, not thrown).
|
|
37
|
+
*/
|
|
27
38
|
export async function fetchHeliusPriorityFee(
|
|
28
39
|
heliusRpcUrl: string,
|
|
29
40
|
lookbackDistance: number,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SolanaPriorityFeeResponse } from './solanaPriorityFeeMethod';
|
|
2
2
|
import { PriorityFeeStrategy } from './types';
|
|
3
3
|
|
|
4
|
+
/** `PriorityFeeStrategy` that takes the max `prioritizationFee` across all samples in the lookback window. Returns `0` for an empty sample set. */
|
|
4
5
|
export class MaxOverSlotsStrategy implements PriorityFeeStrategy {
|
|
5
6
|
calculate(samples: SolanaPriorityFeeResponse[]): number {
|
|
6
7
|
if (samples.length === 0) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PriorityFeeStrategy } from './types';
|
|
2
2
|
|
|
3
|
+
/** `PriorityFeeStrategy` that takes the max `prioritizationFee` across all samples. Unlike `MaxOverSlotsStrategy`, does not guard the empty-sample case — calling with an empty array returns `-Infinity`. */
|
|
3
4
|
export class MaxStrategy implements PriorityFeeStrategy {
|
|
4
5
|
calculate(samples: { slot: number; prioritizationFee: number }[]): number {
|
|
5
6
|
return Math.max(...samples.map((result) => result.prioritizationFee));
|
|
@@ -18,6 +18,17 @@ import {
|
|
|
18
18
|
VelocityMarketInfo,
|
|
19
19
|
} from './velocityPriorityFeeMethod';
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* PriorityFeeSubscriber — polls one of three sources (Solana RPC, Helius, or
|
|
23
|
+
* the Velocity-hosted priority fee cache — see `PriorityFeeMethod`) on an
|
|
24
|
+
* interval and exposes several aggregations over the resulting samples: a
|
|
25
|
+
* simple average, a max, and a caller-supplied `customStrategy`. All
|
|
26
|
+
* `get*StrategyResult` accessors return `0` until the first successful poll,
|
|
27
|
+
* and are clamped to `maxFeeMicroLamports` (if set) after applying
|
|
28
|
+
* `priorityFeeMultiplier`. All returned fee values are in micro-lamports per
|
|
29
|
+
* compute unit, the unit Solana's `ComputeBudgetProgram.setComputeUnitPrice`
|
|
30
|
+
* expects.
|
|
31
|
+
*/
|
|
21
32
|
export class PriorityFeeSubscriber {
|
|
22
33
|
connection?: Connection;
|
|
23
34
|
frequencyMs: number;
|
|
@@ -43,6 +54,10 @@ export class PriorityFeeSubscriber {
|
|
|
43
54
|
lastMaxStrategyResult = 0;
|
|
44
55
|
lastSlotSeen = 0;
|
|
45
56
|
|
|
57
|
+
/**
|
|
58
|
+
* @param config See `PriorityFeeSubscriberConfig`. Required fields depend on `priorityFeeMethod` (default `SOLANA`): SOLANA needs `connection`; HELIUS needs `heliusRpcUrl` or a Helius `connection`; VELOCITY needs `velocityPriorityFeeEndpoint`.
|
|
59
|
+
* @throws If `priorityFeeMethod` is `HELIUS` without a resolvable Helius RPC URL, or `SOLANA` without a `connection`.
|
|
60
|
+
*/
|
|
46
61
|
public constructor(config: PriorityFeeSubscriberConfig) {
|
|
47
62
|
this.connection = config.connection;
|
|
48
63
|
this.frequencyMs =
|
|
@@ -93,6 +108,7 @@ export class PriorityFeeSubscriber {
|
|
|
93
108
|
this.priorityFeeMultiplier = config.priorityFeeMultiplier ?? 1.0;
|
|
94
109
|
}
|
|
95
110
|
|
|
111
|
+
/** Starts polling at `frequencyMs` and performs one immediate `load()`. Idempotent while already subscribed. */
|
|
96
112
|
public async subscribe(): Promise<void> {
|
|
97
113
|
if (this.intervalId) {
|
|
98
114
|
return;
|
|
@@ -193,26 +209,36 @@ export class PriorityFeeSubscriber {
|
|
|
193
209
|
}
|
|
194
210
|
}
|
|
195
211
|
|
|
212
|
+
/** @returns The current clamp on returned fee values (micro-lamports/CU), or `undefined` if unclamped. */
|
|
196
213
|
public getMaxPriorityFee(): number | undefined {
|
|
197
214
|
return this.maxFeeMicroLamports;
|
|
198
215
|
}
|
|
199
216
|
|
|
217
|
+
/** Updates the clamp applied to all `get*StrategyResult`/`getHeliusPriorityFeeLevel` results. Pass `undefined` to remove the clamp. */
|
|
200
218
|
public updateMaxPriorityFee(newMaxFee: number | undefined) {
|
|
201
219
|
this.maxFeeMicroLamports = newMaxFee;
|
|
202
220
|
}
|
|
203
221
|
|
|
222
|
+
/** @returns The multiplier applied to strategy results before clamping; defaults to `1.0`. */
|
|
204
223
|
public getPriorityFeeMultiplier(): number {
|
|
205
224
|
return this.priorityFeeMultiplier ?? 1.0;
|
|
206
225
|
}
|
|
207
226
|
|
|
227
|
+
/** Updates the multiplier applied to `getCustomStrategyResult`/`getAvgStrategyResult`/`getMaxStrategyResult` before clamping. */
|
|
208
228
|
public updatePriorityFeeMultiplier(newPriorityFeeMultiplier: number) {
|
|
209
229
|
this.priorityFeeMultiplier = newPriorityFeeMultiplier;
|
|
210
230
|
}
|
|
211
231
|
|
|
232
|
+
/** Swaps the `PriorityFeeStrategy` used to compute `getCustomStrategyResult`; takes effect on the next `load()`. */
|
|
212
233
|
public updateCustomStrategy(newStrategy: PriorityFeeStrategy) {
|
|
213
234
|
this.customStrategy = newStrategy;
|
|
214
235
|
}
|
|
215
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Only meaningful with `priorityFeeMethod: HELIUS`.
|
|
239
|
+
* @param level Helius percentile level to read; defaults to `MEDIUM`.
|
|
240
|
+
* @returns That level's fee (micro-lamports/CU) from the most recent Helius sample, clamped to `maxFeeMicroLamports` if set, or `0` if no sample has been loaded yet.
|
|
241
|
+
*/
|
|
216
242
|
public getHeliusPriorityFeeLevel(
|
|
217
243
|
level: HeliusPriorityLevel = HeliusPriorityLevel.MEDIUM
|
|
218
244
|
): number {
|
|
@@ -225,6 +251,7 @@ export class PriorityFeeSubscriber {
|
|
|
225
251
|
return this.lastHeliusSample[level];
|
|
226
252
|
}
|
|
227
253
|
|
|
254
|
+
/** @returns The configured `customStrategy`'s result from the most recent poll (micro-lamports/CU), scaled by `priorityFeeMultiplier` and clamped to `maxFeeMicroLamports` if set. `0` before the first successful `load()`. */
|
|
228
255
|
public getCustomStrategyResult(): number {
|
|
229
256
|
const result =
|
|
230
257
|
this.lastCustomStrategyResult * this.getPriorityFeeMultiplier();
|
|
@@ -234,6 +261,7 @@ export class PriorityFeeSubscriber {
|
|
|
234
261
|
return result;
|
|
235
262
|
}
|
|
236
263
|
|
|
264
|
+
/** @returns The average-over-samples fee from the most recent poll (micro-lamports/CU) — for HELIUS this is the MEDIUM level, for VELOCITY the max MEDIUM level across configured markets — scaled by `priorityFeeMultiplier` and clamped to `maxFeeMicroLamports` if set. `0` before the first successful `load()`. */
|
|
237
265
|
public getAvgStrategyResult(): number {
|
|
238
266
|
const result = this.lastAvgStrategyResult * this.getPriorityFeeMultiplier();
|
|
239
267
|
if (this.maxFeeMicroLamports !== undefined) {
|
|
@@ -242,6 +270,7 @@ export class PriorityFeeSubscriber {
|
|
|
242
270
|
return result;
|
|
243
271
|
}
|
|
244
272
|
|
|
273
|
+
/** @returns The max-over-samples fee from the most recent poll (micro-lamports/CU) — for HELIUS this is the UNSAFE_MAX level, for VELOCITY the max UNSAFE_MAX level across configured markets — scaled by `priorityFeeMultiplier` and clamped to `maxFeeMicroLamports` if set. `0` before the first successful `load()`. */
|
|
245
274
|
public getMaxStrategyResult(): number {
|
|
246
275
|
const result = this.lastMaxStrategyResult * this.getPriorityFeeMultiplier();
|
|
247
276
|
if (this.maxFeeMicroLamports !== undefined) {
|
|
@@ -250,6 +279,13 @@ export class PriorityFeeSubscriber {
|
|
|
250
279
|
return result;
|
|
251
280
|
}
|
|
252
281
|
|
|
282
|
+
/**
|
|
283
|
+
* Fetches one round of samples from the configured `priorityFeeMethod`
|
|
284
|
+
* and recomputes `latestPriorityFee`/`lastAvgStrategyResult`/
|
|
285
|
+
* `lastMaxStrategyResult`/`lastCustomStrategyResult`. Errors are caught
|
|
286
|
+
* and logged, not thrown, so a transient failure just leaves the previous
|
|
287
|
+
* values in place until the next poll.
|
|
288
|
+
*/
|
|
253
289
|
public async load(): Promise<void> {
|
|
254
290
|
try {
|
|
255
291
|
if (this.priorityFeeMethod === PriorityFeeMethod.SOLANA) {
|
|
@@ -272,6 +308,7 @@ export class PriorityFeeSubscriber {
|
|
|
272
308
|
}
|
|
273
309
|
}
|
|
274
310
|
|
|
311
|
+
/** Stops polling. */
|
|
275
312
|
public async unsubscribe(): Promise<void> {
|
|
276
313
|
if (this.intervalId) {
|
|
277
314
|
clearInterval(this.intervalId);
|
|
@@ -279,10 +316,12 @@ export class PriorityFeeSubscriber {
|
|
|
279
316
|
}
|
|
280
317
|
}
|
|
281
318
|
|
|
319
|
+
/** Replaces the set of write-locked addresses used for SOLANA/HELIUS fee sampling; takes effect on the next `load()`. */
|
|
282
320
|
public updateAddresses(addresses: PublicKey[]) {
|
|
283
321
|
this.addresses = addresses.map((k) => k.toBase58());
|
|
284
322
|
}
|
|
285
323
|
|
|
324
|
+
/** Replaces the set of markets queried when `priorityFeeMethod` is VELOCITY; takes effect on the next `load()`. */
|
|
286
325
|
public updateMarketTypeAndIndex(velocityMarkets: VelocityMarketInfo[]) {
|
|
287
326
|
this.velocityMarkets = velocityMarkets;
|
|
288
327
|
}
|