@velocity-exchange/sdk 0.2.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
package/src/oracles/types.ts
CHANGED
|
@@ -8,30 +8,75 @@ import { BN } from '../isomorphic/anchor';
|
|
|
8
8
|
import { PublicKey } from '@solana/web3.js';
|
|
9
9
|
import { OracleSource } from '../types';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* `OraclePriceData` variant for the market-maker (MM) oracle feed, which has no TWAP or
|
|
13
|
+
* pre-launch `maxPrice` fields but instead flags whether the MM oracle is currently trusted.
|
|
14
|
+
*/
|
|
11
15
|
export type MMOraclePriceData = Omit<
|
|
12
16
|
OraclePriceData,
|
|
13
17
|
'twap' | 'twapConfidence' | 'maxPrice'
|
|
14
18
|
> & {
|
|
19
|
+
/** Whether the MM oracle is currently considered active/valid and safe to use in place of the primary oracle. */
|
|
15
20
|
isMMOracleActive: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the MM oracle is enabled (has a non-zero price), mirroring `MMOraclePriceData::is_enabled`.
|
|
23
|
+
* Populated by `VelocityClient.getMMOracleDataForPerpMarket`; used by the AMM-fill volatility gate
|
|
24
|
+
* (`isFallbackAvailableLiquiditySource`). Optional because MM data is sometimes constructed without it.
|
|
25
|
+
*/
|
|
26
|
+
isMMOracleEnabled?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Whether the MM oracle is at least as recent as the exchange (safe) oracle, mirroring
|
|
29
|
+
* `MMOraclePriceData::is_mm_oracle_as_recent`. Used together with `isMMExchangeDiffBpsHigh` by the
|
|
30
|
+
* AMM-fill volatility gate.
|
|
31
|
+
*/
|
|
32
|
+
isMMOracleAsRecent?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the MM-vs-exchange oracle price difference exceeds the 1% fallback threshold
|
|
35
|
+
* (`MM_EXCHANGE_FALLBACK_THRESHOLD`), mirroring `MMOraclePriceData::is_mm_exchange_diff_bps_high`.
|
|
36
|
+
* When the MM oracle is enabled and as-recent, a high diff suppresses AMM fills (early volatility protection).
|
|
37
|
+
*/
|
|
38
|
+
isMMExchangeDiffBpsHigh?: boolean;
|
|
16
39
|
};
|
|
17
40
|
|
|
41
|
+
/** Normalized oracle price snapshot produced by every `OracleClient`, regardless of underlying source. */
|
|
18
42
|
export type OraclePriceData = {
|
|
43
|
+
/** Oracle price, PRICE_PRECISION (1e6). */
|
|
19
44
|
price: BN;
|
|
45
|
+
/** Slot at which this price was last updated on-chain. */
|
|
20
46
|
slot: BN;
|
|
47
|
+
/** Oracle confidence interval (± band around `price`), PRICE_PRECISION (1e6). */
|
|
21
48
|
confidence: BN;
|
|
49
|
+
/** Whether the source had enough independent publishers/quoters for the price to be trusted (Pyth-specific; always `true` for sources without a publisher-count concept). */
|
|
22
50
|
hasSufficientNumberOfDataPoints: boolean;
|
|
51
|
+
/** Time-weighted average price, PRICE_PRECISION (1e6). Absent for sources with no TWAP (e.g. Pyth Lazer echoes the live price here instead). */
|
|
23
52
|
twap?: BN;
|
|
53
|
+
/** Confidence interval of `twap`, PRICE_PRECISION (1e6). */
|
|
24
54
|
twapConfidence?: BN;
|
|
55
|
+
/** Upper price bound; only populated for prelaunch-market oracles, PRICE_PRECISION (1e6). */
|
|
25
56
|
maxPrice?: BN; // pre-launch markets only
|
|
57
|
+
/** Monotonic sequence/publish-time id used to detect out-of-order updates (Pyth Lazer only). */
|
|
26
58
|
sequenceId?: BN;
|
|
27
59
|
};
|
|
28
60
|
|
|
61
|
+
/** Identifies an oracle account and which `OracleSource` variant to decode it as. */
|
|
29
62
|
export type OracleInfo = {
|
|
30
63
|
publicKey: PublicKey;
|
|
31
64
|
source: OracleSource;
|
|
32
65
|
};
|
|
33
66
|
|
|
67
|
+
/** Common interface implemented by every per-source oracle adapter (Pyth, Pyth Lazer, prelaunch, quote-asset). */
|
|
34
68
|
export interface OracleClient {
|
|
69
|
+
/**
|
|
70
|
+
* Decodes raw oracle account bytes into normalized `OraclePriceData` without any RPC call.
|
|
71
|
+
* @param buffer - Raw account data as returned by `getAccountInfo`/`getMultipleAccounts`.
|
|
72
|
+
* @returns The decoded, normalized price data.
|
|
73
|
+
*/
|
|
35
74
|
getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData;
|
|
75
|
+
/**
|
|
76
|
+
* Fetches and decodes an oracle account's current price data.
|
|
77
|
+
* @param publicKey - The oracle account's address.
|
|
78
|
+
* @returns The decoded, normalized price data.
|
|
79
|
+
* @throws Error if the account does not exist.
|
|
80
|
+
*/
|
|
36
81
|
getOraclePriceData(publicKey: PublicKey): Promise<OraclePriceData>;
|
|
37
82
|
}
|
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,
|
|
@@ -19,6 +19,25 @@ import { grpcSubscription } from './grpcSubscription';
|
|
|
19
19
|
import { calculateOrderBaseAssetAmount } from '../math/orders';
|
|
20
20
|
import { ZERO } from '../constants/numericConstants';
|
|
21
21
|
|
|
22
|
+
/*
|
|
23
|
+
* Byte offset of `lastActiveSlot` (u64) in the `User` account, used here to
|
|
24
|
+
* cheaply detect stale updates without fully decoding the buffer. Must match
|
|
25
|
+
* the on-chain `User` layout (see `decode/user.ts`). The previous value (4328)
|
|
26
|
+
* was for the older 4376-byte layout; the current Velocity layout is 4496
|
|
27
|
+
* bytes, shifting this field +120 bytes. With the wrong offset this read 8
|
|
28
|
+
* zero-padding bytes, so the staleness guard rejected every post-load update.
|
|
29
|
+
*/
|
|
30
|
+
const USER_LAST_ACTIVE_SLOT_OFFSET = 4448;
|
|
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
|
+
*/
|
|
22
41
|
export class OrderSubscriber {
|
|
23
42
|
velocityClient: VelocityClient;
|
|
24
43
|
usersAccounts = new Map<string, { slot: number; userAccount: UserAccount }>();
|
|
@@ -35,6 +54,10 @@ export class OrderSubscriber {
|
|
|
35
54
|
|
|
36
55
|
fetchAllNonIdleUsers?: boolean;
|
|
37
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
|
+
*/
|
|
38
61
|
constructor(config: OrderSubscriberConfig) {
|
|
39
62
|
const velocityClient = config.velocityClient;
|
|
40
63
|
if (!velocityClient) {
|
|
@@ -85,10 +108,18 @@ export class OrderSubscriber {
|
|
|
85
108
|
this.fetchAllNonIdleUsers = config.fetchAllNonIdleUsers;
|
|
86
109
|
}
|
|
87
110
|
|
|
111
|
+
/** Starts the underlying transport (polling interval, websocket program-account subscription, or gRPC stream) chosen at construction time. */
|
|
88
112
|
public async subscribe(): Promise<void> {
|
|
89
113
|
await this.subscription.subscribe();
|
|
90
114
|
}
|
|
91
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
|
+
*/
|
|
92
123
|
async fetch(): Promise<void> {
|
|
93
124
|
if (this.fetchPromise) {
|
|
94
125
|
return this.fetchPromise;
|
|
@@ -150,6 +181,23 @@ export class OrderSubscriber {
|
|
|
150
181
|
}
|
|
151
182
|
}
|
|
152
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
|
+
*/
|
|
153
201
|
tryUpdateUserAccount(
|
|
154
202
|
key: string,
|
|
155
203
|
dataType: 'raw' | 'decoded' | 'buffer',
|
|
@@ -176,7 +224,10 @@ export class OrderSubscriber {
|
|
|
176
224
|
const buffer = Buffer.from(data[0], data[1]);
|
|
177
225
|
|
|
178
226
|
const newLastActiveSlot = new BN(
|
|
179
|
-
buffer.subarray(
|
|
227
|
+
buffer.subarray(
|
|
228
|
+
USER_LAST_ACTIVE_SLOT_OFFSET,
|
|
229
|
+
USER_LAST_ACTIVE_SLOT_OFFSET + 8
|
|
230
|
+
),
|
|
180
231
|
undefined,
|
|
181
232
|
'le'
|
|
182
233
|
);
|
|
@@ -191,7 +242,10 @@ export class OrderSubscriber {
|
|
|
191
242
|
} else if (dataType === 'buffer') {
|
|
192
243
|
const buffer: Buffer = data as Buffer;
|
|
193
244
|
const newLastActiveSlot = new BN(
|
|
194
|
-
buffer.subarray(
|
|
245
|
+
buffer.subarray(
|
|
246
|
+
USER_LAST_ACTIVE_SLOT_OFFSET,
|
|
247
|
+
USER_LAST_ACTIVE_SLOT_OFFSET + 8
|
|
248
|
+
),
|
|
195
249
|
undefined,
|
|
196
250
|
'le'
|
|
197
251
|
);
|
|
@@ -244,6 +298,15 @@ export class OrderSubscriber {
|
|
|
244
298
|
return new DLOB();
|
|
245
299
|
}
|
|
246
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
|
+
*/
|
|
247
310
|
public async getDLOB(slot: number): Promise<DLOB> {
|
|
248
311
|
const dlob = this.createDLOB();
|
|
249
312
|
for (const [key, { userAccount }] of this.usersAccounts.entries()) {
|
|
@@ -266,10 +329,12 @@ export class OrderSubscriber {
|
|
|
266
329
|
return dlob;
|
|
267
330
|
}
|
|
268
331
|
|
|
332
|
+
/** @returns The highest slot observed across all account updates so far, or 0 if none have arrived yet. */
|
|
269
333
|
public getSlot(): number {
|
|
270
334
|
return this.mostRecentSlot ?? 0;
|
|
271
335
|
}
|
|
272
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. */
|
|
273
338
|
public async addPubkey(userAccountPublicKey: PublicKey): Promise<void> {
|
|
274
339
|
const accountInfo =
|
|
275
340
|
await this.velocityClient.connection.getAccountInfoAndContext(
|
|
@@ -286,6 +351,12 @@ export class OrderSubscriber {
|
|
|
286
351
|
}
|
|
287
352
|
}
|
|
288
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
|
+
*/
|
|
289
360
|
public async mustGetUserAccount(key: string): Promise<UserAccount> {
|
|
290
361
|
if (!this.usersAccounts.has(key)) {
|
|
291
362
|
await this.addPubkey(new PublicKey(key));
|
|
@@ -299,6 +370,7 @@ export class OrderSubscriber {
|
|
|
299
370
|
return slotAndUserAccount.userAccount;
|
|
300
371
|
}
|
|
301
372
|
|
|
373
|
+
/** Stops the underlying transport and clears the entire cached `User` account map. */
|
|
302
374
|
public async unsubscribe(): Promise<void> {
|
|
303
375
|
this.usersAccounts.clear();
|
|
304
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));
|