@velocity-exchange/sdk 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2136 -4
- package/lib/browser/adminClient.js +2150 -4
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +4 -4
- package/lib/browser/idl/velocity.json +4 -4
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +91 -0
- package/lib/browser/math/exchangeStatus.js +106 -3
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -10
- package/lib/browser/math/orders.js +130 -19
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +31 -0
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +103 -2
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +781 -13
- package/lib/browser/types.js +126 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3322 -215
- package/lib/browser/velocityClient.js +3412 -245
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2136 -4
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2150 -4
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +4 -4
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +4 -4
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +91 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +106 -3
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -10
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +130 -19
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +31 -0
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +103 -2
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +781 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +126 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3322 -215
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3412 -245
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2156 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +4 -4
- package/src/idl/velocity.ts +4 -4
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +117 -2
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +141 -19
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +31 -0
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +104 -2
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +56 -0
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +777 -24
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3439 -249
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
package/src/tx/baseTxSender.ts
CHANGED
|
@@ -32,27 +32,60 @@ const BASELINE_TX_LAND_RATE = 0.9;
|
|
|
32
32
|
const DEFAULT_TIMEOUT = 35000;
|
|
33
33
|
const DEFAULT_TX_LAND_RATE_LOOKBACK_WINDOW_MINUTES = 10;
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Shared base for all `TxSender` implementations (`RetryTxSender`, `WhileValidTxSender`,
|
|
37
|
+
* `FastSingleTxSender`, `ForwardOnlyTxSender`). Provides signing/serialization via `TxHandler`,
|
|
38
|
+
* confirmation via websocket subscription and/or polling (per `ConfirmationStrategy`),
|
|
39
|
+
* timeout/land-rate bookkeeping, and fan-out to `additionalConnections`. Subclasses are expected
|
|
40
|
+
* to implement `sendRawTransaction` with their specific retry/broadcast behavior — the base
|
|
41
|
+
* implementation always throws.
|
|
42
|
+
*/
|
|
35
43
|
export abstract class BaseTxSender implements TxSender {
|
|
36
44
|
connection: Connection;
|
|
37
45
|
wallet: IWallet;
|
|
38
46
|
opts: ConfirmOptions;
|
|
47
|
+
/** Confirmation timeout in milliseconds, applied to both websocket and polling confirmation. */
|
|
39
48
|
timeout: number;
|
|
49
|
+
/** Extra RPC connections a raw transaction is also broadcast to (best-effort, errors logged not thrown), for redundancy. */
|
|
40
50
|
additionalConnections: Connection[];
|
|
51
|
+
/** Count of `confirmTransactionWebSocket`/`confirmTransactionPolling` calls that hit `timeout` without a definitive result. */
|
|
41
52
|
timeoutCount = 0;
|
|
42
53
|
confirmationStrategy: ConfirmationStrategy;
|
|
54
|
+
/** Callbacks invoked with the base58-encoded raw transaction alongside `additionalConnections` broadcasts, e.g. for logging/mempool submission. */
|
|
43
55
|
additionalTxSenderCallbacks?: ((base58EncodedTx: string) => void)[];
|
|
44
56
|
txHandler: TxHandler;
|
|
57
|
+
/** Whether to record each sent signature (via `txSigCache`) to compute `getTxLandRate()`. */
|
|
45
58
|
trackTxLandRate?: boolean;
|
|
59
|
+
/** Whether `confirmTransactionWebSocket`/`confirmTransactionPolling` throw `TxSendError` on timeout (`true`) or return `undefined` (`false`). */
|
|
46
60
|
throwOnTimeoutError: boolean;
|
|
61
|
+
/** Whether `checkConfirmationResultForError` throws the resolved on-chain error, or is a no-op. */
|
|
47
62
|
throwOnTransactionError: boolean;
|
|
48
63
|
|
|
49
64
|
// For landing rate calcs
|
|
65
|
+
/** Lookback window, in seconds, over which `txSigCache` entries expire for the land-rate calculation. */
|
|
50
66
|
lookbackWindowMinutes: number;
|
|
67
|
+
/** TTL cache of `txSig -> landed?` used to compute `getTxLandRate()` when `trackTxLandRate` is set. */
|
|
51
68
|
txSigCache?: NodeCache;
|
|
52
69
|
txLandRate = 0;
|
|
53
70
|
lastPriorityFeeSuggestion = 1;
|
|
71
|
+
/** Maps a land rate (0-1) to a priority-fee multiplier; defaults to `defaultLandRateToFeeFunc`. */
|
|
54
72
|
landRateToFeeFunc: (landRate: number) => number;
|
|
55
73
|
|
|
74
|
+
/**
|
|
75
|
+
* @param props.connection - Primary RPC connection used for sending and confirming transactions.
|
|
76
|
+
* @param props.wallet - Wallet used to sign transactions that aren't already `preSigned`.
|
|
77
|
+
* @param props.opts - Default `ConfirmOptions` used when a call site doesn't pass its own; defaults to `DEFAULT_CONFIRMATION_OPTS` (`'confirmed'`).
|
|
78
|
+
* @param props.timeout - Confirmation timeout in milliseconds; defaults to 35000 (35s).
|
|
79
|
+
* @param props.additionalConnections - Extra connections to also broadcast raw transactions to.
|
|
80
|
+
* @param props.confirmationStrategy - How to wait for confirmation; defaults to `ConfirmationStrategy.Combo`.
|
|
81
|
+
* @param props.additionalTxSenderCallbacks - Callbacks invoked with each sent transaction's base58 encoding.
|
|
82
|
+
* @param props.trackTxLandRate - Enables land-rate tracking (backs `getTxLandRate()`/`getSuggestedPriorityFeeMultiplier()`).
|
|
83
|
+
* @param props.txHandler - Custom `TxHandler` for signing/building transactions; defaults to one constructed from `connection`/`wallet`/`opts`.
|
|
84
|
+
* @param props.txLandRateLookbackWindowMinutes - Rolling window, in minutes, of sent signatures kept for the land-rate calculation; defaults to 10.
|
|
85
|
+
* @param props.landRateToFeeFunc - Custom mapping from land rate to priority-fee multiplier; defaults to `defaultLandRateToFeeFunc`.
|
|
86
|
+
* @param props.throwOnTimeoutError - Whether confirmation timeouts throw `TxSendError` instead of returning `undefined`; defaults to `true`.
|
|
87
|
+
* @param props.throwOnTransactionError - Whether a failed on-chain result throws the resolved program error; defaults to `true`.
|
|
88
|
+
*/
|
|
56
89
|
public constructor({
|
|
57
90
|
connection,
|
|
58
91
|
wallet,
|
|
@@ -110,6 +143,14 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
110
143
|
this.throwOnTransactionError = throwOnTransactionError;
|
|
111
144
|
}
|
|
112
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Signs (via `prepareTx`, unless `preSigned`) and sends a legacy `Transaction`.
|
|
148
|
+
* @param tx - Transaction to send.
|
|
149
|
+
* @param additionalSigners - Extra signers to co-sign alongside the wallet; defaults to none.
|
|
150
|
+
* @param opts - Confirmation options; defaults to `this.opts`.
|
|
151
|
+
* @param preSigned - If `true`, skip wallet signing.
|
|
152
|
+
* @returns The result of `sendRawTransaction` on the serialized, signed transaction.
|
|
153
|
+
*/
|
|
113
154
|
async send(
|
|
114
155
|
tx: Transaction,
|
|
115
156
|
additionalSigners?: Array<Signer>,
|
|
@@ -133,6 +174,14 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
133
174
|
return this.sendRawTransaction(signedTx.serialize(), opts);
|
|
134
175
|
}
|
|
135
176
|
|
|
177
|
+
/**
|
|
178
|
+
* Delegates to `TxHandler.prepareTx` to attach a recent blockhash, fee payer, and signatures.
|
|
179
|
+
* @param tx - Transaction to prepare.
|
|
180
|
+
* @param additionalSigners - Extra signers to co-sign alongside the wallet.
|
|
181
|
+
* @param opts - Confirmation options (affects blockhash commitment).
|
|
182
|
+
* @param preSigned - If `true`, skip wallet signing.
|
|
183
|
+
* @returns The prepared (blockhash-populated, signed unless `preSigned`) transaction.
|
|
184
|
+
*/
|
|
136
185
|
async prepareTx(
|
|
137
186
|
tx: Transaction,
|
|
138
187
|
additionalSigners: Array<Signer>,
|
|
@@ -148,6 +197,16 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
148
197
|
);
|
|
149
198
|
}
|
|
150
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Builds (but does not send) a `VersionedTransaction` from raw instructions via
|
|
202
|
+
* `TxHandler.generateVersionedTransaction`.
|
|
203
|
+
* @param ixs - Instructions to include, in order.
|
|
204
|
+
* @param lookupTableAccounts - Address lookup tables to compile the message against.
|
|
205
|
+
* @param _additionalSigners - Unused by this implementation.
|
|
206
|
+
* @param opts - Unused by this implementation (present for `TxSender` interface compatibility).
|
|
207
|
+
* @param blockhash - Blockhash to use; if omitted, fetched fresh via `connection.getLatestBlockhash()`.
|
|
208
|
+
* @returns The compiled `VersionedTransaction` (not yet signed by additional signers beyond the wallet).
|
|
209
|
+
*/
|
|
151
210
|
async getVersionedTransaction(
|
|
152
211
|
ixs: TransactionInstruction[],
|
|
153
212
|
lookupTableAccounts: AddressLookupTableAccount[],
|
|
@@ -163,6 +222,16 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
163
222
|
);
|
|
164
223
|
}
|
|
165
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Signs (unless `preSigned`) and sends a `VersionedTransaction`. When the wallet exposes a
|
|
227
|
+
* `payer` `Keypair` directly, signs in-place with `tx.sign(...)`; otherwise delegates to
|
|
228
|
+
* `TxHandler.signVersionedTx` (needed for wallet adapters without direct keypair access).
|
|
229
|
+
* @param tx - Transaction to send.
|
|
230
|
+
* @param additionalSigners - Extra signers to co-sign alongside the wallet.
|
|
231
|
+
* @param opts - Confirmation options; defaults to `this.opts`.
|
|
232
|
+
* @param preSigned - If `true`, skip signing entirely.
|
|
233
|
+
* @returns The result of `sendRawTransaction` on the serialized, signed transaction.
|
|
234
|
+
*/
|
|
166
235
|
async sendVersionedTransaction(
|
|
167
236
|
tx: VersionedTransaction,
|
|
168
237
|
additionalSigners?: Array<Signer>,
|
|
@@ -194,6 +263,12 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
194
263
|
return this.sendRawTransaction(signedTx.serialize(), opts);
|
|
195
264
|
}
|
|
196
265
|
|
|
266
|
+
/**
|
|
267
|
+
* Sends and confirms an already-serialized, already-signed transaction. `BaseTxSender` itself
|
|
268
|
+
* has no broadcast/retry strategy — every concrete sender (`RetryTxSender`,
|
|
269
|
+
* `WhileValidTxSender`, `FastSingleTxSender`, `ForwardOnlyTxSender`) must override this.
|
|
270
|
+
* @throws Error always, if not overridden by a subclass.
|
|
271
|
+
*/
|
|
197
272
|
async sendRawTransaction(
|
|
198
273
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
199
274
|
rawTransaction: Buffer | Uint8Array,
|
|
@@ -203,7 +278,12 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
203
278
|
throw new Error('Must be implemented by subclass');
|
|
204
279
|
}
|
|
205
280
|
|
|
206
|
-
|
|
281
|
+
/**
|
|
282
|
+
* Simulates a transaction via `connection.simulateTransaction` without sending it, swallowing
|
|
283
|
+
* both simulation errors and RPC-call failures into a `false` result (logged to `console.error`).
|
|
284
|
+
* @param tx - Transaction to simulate.
|
|
285
|
+
* @returns `true` if simulation succeeded with no error, `false` otherwise.
|
|
286
|
+
*/
|
|
207
287
|
async simulateTransaction(tx: VersionedTransaction): Promise<boolean> {
|
|
208
288
|
try {
|
|
209
289
|
const result = await this.connection.simulateTransaction(tx);
|
|
@@ -218,6 +298,18 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
218
298
|
}
|
|
219
299
|
}
|
|
220
300
|
|
|
301
|
+
/**
|
|
302
|
+
* Waits for a transaction to confirm by subscribing to `onSignature` on `connection` and every
|
|
303
|
+
* `additionalConnections` entry simultaneously, resolving on whichever responds first. If no
|
|
304
|
+
* connection confirms within `this.timeout` and `confirmationStrategy` is `Combo`, falls back
|
|
305
|
+
* to a one-shot `getSignatureStatuses` check before giving up.
|
|
306
|
+
* @param signature - Base58-encoded transaction signature to confirm.
|
|
307
|
+
* @param commitment - Commitment level for the subscription; defaults to `this.opts.commitment`.
|
|
308
|
+
* @returns The confirmation result, or `undefined` if it timed out and `throwOnTimeoutError` is `false`.
|
|
309
|
+
* @throws Error if `signature` isn't valid base58 or isn't 64 bytes decoded. `TxSendError`
|
|
310
|
+
* (code `NOT_CONFIRMED_ERROR_CODE`) on timeout if `throwOnTimeoutError` is `true` (the default) —
|
|
311
|
+
* in that case the transaction's actual outcome is unknown, not necessarily failed.
|
|
312
|
+
*/
|
|
221
313
|
async confirmTransactionWebSocket(
|
|
222
314
|
signature: TransactionSignature,
|
|
223
315
|
commitment?: Commitment
|
|
@@ -239,7 +331,10 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
239
331
|
let response: RpcResponseAndContext<SignatureResult> | null = null;
|
|
240
332
|
const promises = connections.map((connection, i) => {
|
|
241
333
|
let subscriptionId: number | undefined;
|
|
242
|
-
|
|
334
|
+
// a failed subscription setup on one connection is best-effort: log and
|
|
335
|
+
// leave its promise pending so the race keeps waiting on the others
|
|
336
|
+
// (if every subscription fails, the timeout/Combo fallback still applies)
|
|
337
|
+
const confirmPromise = new Promise((resolve) => {
|
|
243
338
|
try {
|
|
244
339
|
subscriptionId = connection.onSignature(
|
|
245
340
|
signature,
|
|
@@ -254,7 +349,10 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
254
349
|
subscriptionCommitment
|
|
255
350
|
);
|
|
256
351
|
} catch (err) {
|
|
257
|
-
|
|
352
|
+
console.error(
|
|
353
|
+
'confirmTransactionWebSocket: failed to set up onSignature listener',
|
|
354
|
+
err
|
|
355
|
+
);
|
|
258
356
|
}
|
|
259
357
|
});
|
|
260
358
|
subscriptionIds.push(subscriptionId);
|
|
@@ -304,6 +402,17 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
304
402
|
return response ?? undefined;
|
|
305
403
|
}
|
|
306
404
|
|
|
405
|
+
/**
|
|
406
|
+
* Waits for a transaction to confirm by polling `getSignatureStatuses` with exponential
|
|
407
|
+
* backoff, starting at 400ms and capping at 5000ms, until `commitment` is reached or
|
|
408
|
+
* `this.timeout` elapses.
|
|
409
|
+
* @param signature - Base58-encoded transaction signature to confirm.
|
|
410
|
+
* @param commitment - Commitment level to wait for; defaults to `'finalized'`.
|
|
411
|
+
* @returns The confirmation result (`{ err: null }` on success), or `undefined` if it timed out and `throwOnTimeoutError` is `false`.
|
|
412
|
+
* @throws TxSendError (code `NOT_CONFIRMED_ERROR_CODE`) on timeout if `throwOnTimeoutError` is
|
|
413
|
+
* `true` (the default) — in that case the transaction's actual outcome is unknown, not
|
|
414
|
+
* necessarily failed.
|
|
415
|
+
*/
|
|
307
416
|
async confirmTransactionPolling(
|
|
308
417
|
signature: TransactionSignature,
|
|
309
418
|
commitment: Commitment = 'finalized'
|
|
@@ -321,12 +430,24 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
321
430
|
|
|
322
431
|
const signatureResult = rpcResponse && rpcResponse.value?.[0];
|
|
323
432
|
|
|
433
|
+
// a stronger status satisfies a weaker commitment (processed < confirmed < finalized),
|
|
434
|
+
// e.g. a tx already finalized must not keep a 'confirmed' wait polling until timeout
|
|
435
|
+
const statusRank: Record<string, number> = {
|
|
436
|
+
processed: 0,
|
|
437
|
+
confirmed: 1,
|
|
438
|
+
finalized: 2,
|
|
439
|
+
};
|
|
324
440
|
if (
|
|
325
441
|
rpcResponse &&
|
|
326
442
|
signatureResult &&
|
|
327
|
-
signatureResult.confirmationStatus
|
|
443
|
+
signatureResult.confirmationStatus &&
|
|
444
|
+
statusRank[signatureResult.confirmationStatus] >=
|
|
445
|
+
(statusRank[commitment] ?? 2)
|
|
328
446
|
) {
|
|
329
|
-
return {
|
|
447
|
+
return {
|
|
448
|
+
context: rpcResponse.context,
|
|
449
|
+
value: { err: signatureResult.err },
|
|
450
|
+
};
|
|
330
451
|
}
|
|
331
452
|
|
|
332
453
|
totalTime += backoffTime;
|
|
@@ -346,6 +467,14 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
346
467
|
}
|
|
347
468
|
}
|
|
348
469
|
|
|
470
|
+
/**
|
|
471
|
+
* Confirms a transaction using whichever strategy `this.confirmationStrategy` selects:
|
|
472
|
+
* `WebSocket`/`Combo` route to `confirmTransactionWebSocket`, `Polling` to `confirmTransactionPolling`.
|
|
473
|
+
* @param signature - Base58-encoded transaction signature to confirm.
|
|
474
|
+
* @param commitment - Commitment level to wait for.
|
|
475
|
+
* @returns The confirmation result, or `undefined` on timeout if `throwOnTimeoutError` is `false`.
|
|
476
|
+
* @throws TxSendError on timeout if `throwOnTimeoutError` is `true` (see `confirmTransactionWebSocket`/`confirmTransactionPolling`).
|
|
477
|
+
*/
|
|
349
478
|
async confirmTransaction(
|
|
350
479
|
signature: TransactionSignature,
|
|
351
480
|
commitment?: Commitment
|
|
@@ -360,10 +489,19 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
360
489
|
}
|
|
361
490
|
}
|
|
362
491
|
|
|
492
|
+
/** Current time in milliseconds since epoch (thin wrapper over `Date.now()`, overridable in tests). */
|
|
363
493
|
getTimestamp(): number {
|
|
364
494
|
return new Date().getTime();
|
|
365
495
|
}
|
|
366
496
|
|
|
497
|
+
/**
|
|
498
|
+
* Races an array of promises against a timeout, resolving to `null` (rather than rejecting) if
|
|
499
|
+
* none settle in time. Unlike `../util/promiseTimeout`, this accepts multiple promises (used to
|
|
500
|
+
* race confirmation across `connection` plus every `additionalConnections` entry).
|
|
501
|
+
* @param promises - Promises to race.
|
|
502
|
+
* @param timeoutMs - Timeout in milliseconds.
|
|
503
|
+
* @returns The first promise's resolved value, or `null` if none settled before `timeoutMs`.
|
|
504
|
+
*/
|
|
367
505
|
promiseTimeout<T>(
|
|
368
506
|
promises: Promise<T>[],
|
|
369
507
|
timeoutMs: number
|
|
@@ -381,6 +519,13 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
381
519
|
);
|
|
382
520
|
}
|
|
383
521
|
|
|
522
|
+
/**
|
|
523
|
+
* Best-effort broadcasts a raw transaction to every `additionalConnections` entry and invokes
|
|
524
|
+
* `additionalTxSenderCallbacks` with its base58 encoding. Failures are logged, not thrown or
|
|
525
|
+
* awaited by the caller — this never affects whether the primary send/confirm succeeds.
|
|
526
|
+
* @param rawTx - Serialized, signed transaction bytes.
|
|
527
|
+
* @param opts - Options passed through to each connection's `sendRawTransaction`.
|
|
528
|
+
*/
|
|
384
529
|
sendToAdditionalConnections(
|
|
385
530
|
rawTx: Buffer | Uint8Array,
|
|
386
531
|
opts: ConfirmOptions
|
|
@@ -399,6 +544,11 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
399
544
|
});
|
|
400
545
|
}
|
|
401
546
|
|
|
547
|
+
/**
|
|
548
|
+
* Adds an extra RPC connection to broadcast future transactions to, unless a connection with
|
|
549
|
+
* the same RPC endpoint is already registered.
|
|
550
|
+
* @param newConnection - Connection to add to `additionalConnections`.
|
|
551
|
+
*/
|
|
402
552
|
public addAdditionalConnection(newConnection: Connection): void {
|
|
403
553
|
const alreadyUsingConnection =
|
|
404
554
|
this.additionalConnections.filter((connection) => {
|
|
@@ -411,10 +561,21 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
411
561
|
}
|
|
412
562
|
}
|
|
413
563
|
|
|
564
|
+
/** @returns The number of confirmation attempts that have timed out so far. */
|
|
414
565
|
public getTimeoutCount(): number {
|
|
415
566
|
return this.timeoutCount;
|
|
416
567
|
}
|
|
417
568
|
|
|
569
|
+
/**
|
|
570
|
+
* Inspects a confirmed signature's result and, if it recorded an on-chain error, resolves the
|
|
571
|
+
* detailed program error via `throwTransactionError` and throws it. Note this check runs
|
|
572
|
+
* whenever `result.err` is set, independent of the `throwOnTransactionError` field — callers
|
|
573
|
+
* that want to suppress transaction-error throwing should avoid calling this method rather
|
|
574
|
+
* than rely on that flag here.
|
|
575
|
+
* @param txSig - Transaction signature to look up the detailed error for.
|
|
576
|
+
* @param result - The `SignatureResult` returned by confirmation.
|
|
577
|
+
* @throws Error the resolved on-chain program error, if `result.err` is set.
|
|
578
|
+
*/
|
|
418
579
|
public async checkConfirmationResultForError(
|
|
419
580
|
txSig: string,
|
|
420
581
|
result: SignatureResult
|
|
@@ -430,6 +591,12 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
430
591
|
return;
|
|
431
592
|
}
|
|
432
593
|
|
|
594
|
+
/**
|
|
595
|
+
* Computes the fraction of recently sent transactions (within `lookbackWindowMinutes`) that
|
|
596
|
+
* landed, from `txSigCache`'s current entries. Returns the last computed `txLandRate` (default
|
|
597
|
+
* 0) if `trackTxLandRate` is disabled or the cache is empty, rather than recomputing.
|
|
598
|
+
* @returns The land rate as a fraction between 0 and 1.
|
|
599
|
+
*/
|
|
433
600
|
public getTxLandRate(): number {
|
|
434
601
|
if (!this.trackTxLandRate || !this.txSigCache) {
|
|
435
602
|
return this.txLandRate;
|
|
@@ -450,6 +617,14 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
450
617
|
return this.txLandRate;
|
|
451
618
|
}
|
|
452
619
|
|
|
620
|
+
/**
|
|
621
|
+
* Default `landRateToFeeFunc`: returns `1` (no boost) if the land rate is already at/above
|
|
622
|
+
* `BASELINE_TX_LAND_RATE` (0.9) or fewer than 3 samples have been recorded yet (too little data
|
|
623
|
+
* to react); otherwise returns a multiplier that grows logarithmically as the land rate falls
|
|
624
|
+
* further below baseline, capped at `10`.
|
|
625
|
+
* @param txLandRate - Recent land rate, 0-1 (see `getTxLandRate`).
|
|
626
|
+
* @returns A priority-fee multiplier between 1 and 10.
|
|
627
|
+
*/
|
|
453
628
|
private defaultLandRateToFeeFunc(txLandRate: number) {
|
|
454
629
|
if (
|
|
455
630
|
txLandRate >= BASELINE_TX_LAND_RATE ||
|
|
@@ -462,6 +637,11 @@ export abstract class BaseTxSender implements TxSender {
|
|
|
462
637
|
return Math.min(multiplier, 10);
|
|
463
638
|
}
|
|
464
639
|
|
|
640
|
+
/**
|
|
641
|
+
* Suggests a multiplier to apply to a base priority fee, based on recent land rate — intended
|
|
642
|
+
* for callers to scale up their compute-unit price when transactions have been landing poorly.
|
|
643
|
+
* @returns `1` (no change) if `trackTxLandRate` is disabled; otherwise `landRateToFeeFunc(getTxLandRate())`.
|
|
644
|
+
*/
|
|
465
645
|
public getSuggestedPriorityFeeMultiplier(): number {
|
|
466
646
|
if (!this.trackTxLandRate) {
|
|
467
647
|
return 1;
|
|
@@ -5,12 +5,24 @@ import {
|
|
|
5
5
|
} from '@solana/web3.js';
|
|
6
6
|
import { BlockhashFetcher } from './types';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Simplest `BlockhashFetcher`: makes a fresh `getLatestBlockhash` RPC call on every request, no
|
|
10
|
+
* caching or retry. Prefer `CachedBlockhashFetcher` for senders issuing many transactions in quick
|
|
11
|
+
* succession to avoid RPC rate limits.
|
|
12
|
+
*/
|
|
8
13
|
export class BaseBlockhashFetcher implements BlockhashFetcher {
|
|
14
|
+
/**
|
|
15
|
+
* @param connection - RPC connection to fetch the blockhash from.
|
|
16
|
+
* @param blockhashCommitment - Commitment level to request the blockhash at.
|
|
17
|
+
*/
|
|
9
18
|
constructor(
|
|
10
19
|
private connection: Connection,
|
|
11
20
|
private blockhashCommitment: Commitment
|
|
12
21
|
) {}
|
|
13
22
|
|
|
23
|
+
/**
|
|
24
|
+
* @returns The latest blockhash and its expiry block height, fetched fresh from `connection`.
|
|
25
|
+
*/
|
|
14
26
|
public async getLatestBlockhash(): Promise<
|
|
15
27
|
BlockhashWithExpiryBlockHeight | undefined
|
|
16
28
|
> {
|
|
@@ -20,6 +20,13 @@ export class CachedBlockhashFetcher implements BlockhashFetcher {
|
|
|
20
20
|
|
|
21
21
|
private blockhashFetchingPromise: Promise<void> | null = null;
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* @param connection - RPC connection to fetch the blockhash from.
|
|
25
|
+
* @param blockhashCommitment - Commitment level to request the blockhash at.
|
|
26
|
+
* @param retryCount - Maximum fetch attempts before giving up and throwing.
|
|
27
|
+
* @param retrySleepTimeMs - Base backoff delay (ms) between retries; doubles each attempt (`retrySleepTimeMs * 2^i`).
|
|
28
|
+
* @param staleCacheTimeMs - How long (ms) a cached blockhash is served before a refresh is triggered.
|
|
29
|
+
*/
|
|
23
30
|
constructor(
|
|
24
31
|
private connection: Connection,
|
|
25
32
|
private blockhashCommitment: Commitment,
|
|
@@ -56,6 +63,14 @@ export class CachedBlockhashFetcher implements BlockhashFetcher {
|
|
|
56
63
|
};
|
|
57
64
|
}
|
|
58
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Returns the cached blockhash, refreshing it first if the cache is older than
|
|
68
|
+
* `staleCacheTimeMs`. Concurrent calls during a refresh all await the same in-flight fetch
|
|
69
|
+
* rather than issuing duplicate RPC requests.
|
|
70
|
+
* @returns The latest (possibly cached) blockhash and its expiry block height.
|
|
71
|
+
* @throws If no cached value exists yet and the initial fetch fails after exhausting
|
|
72
|
+
* `retryCount` retries.
|
|
73
|
+
*/
|
|
59
74
|
public async getLatestBlockhash(): Promise<
|
|
60
75
|
BlockhashWithExpiryBlockHeight | undefined
|
|
61
76
|
> {
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { BlockhashWithExpiryBlockHeight } from '@solana/web3.js';
|
|
2
2
|
|
|
3
|
+
/** Strategy interface for obtaining a recent blockhash, abstracting whether it's fetched fresh every call or cached (see `BaseBlockhashFetcher`/`CachedBlockhashFetcher`). */
|
|
3
4
|
export interface BlockhashFetcher {
|
|
5
|
+
/**
|
|
6
|
+
* @returns The latest blockhash and its expiry block height, or `undefined` if unavailable.
|
|
7
|
+
*/
|
|
4
8
|
getLatestBlockhash(): Promise<BlockhashWithExpiryBlockHeight | undefined>;
|
|
5
9
|
}
|
|
@@ -14,20 +14,52 @@ import { DEFAULT_CONFIRMATION_OPTS } from '../config';
|
|
|
14
14
|
const DEFAULT_TIMEOUT = 35000;
|
|
15
15
|
const DEFAULT_BLOCKHASH_REFRESH = 10000;
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* `TxSender` optimized for low latency: sends a transaction exactly once (no resend/retry loop —
|
|
19
|
+
* relies on the RPC node's own forwarding), and can skip confirmation entirely or confirm
|
|
20
|
+
* asynchronously in the background so `sendRawTransaction` returns as soon as the send lands.
|
|
21
|
+
* Maintains its own periodically-refreshed blockhash cache (independent of `TxHandler`'s) purely
|
|
22
|
+
* for that background-refresh convenience; it is not actually consumed by `sendRawTransaction`
|
|
23
|
+
* here. Suited to latency-sensitive keeper bots that would rather fire-and-forget than pay for
|
|
24
|
+
* `RetryTxSender`'s resend loop.
|
|
25
|
+
*/
|
|
17
26
|
export class FastSingleTxSender extends BaseTxSender {
|
|
18
27
|
connection: Connection;
|
|
19
28
|
wallet: IWallet;
|
|
20
29
|
opts: ConfirmOptions;
|
|
21
30
|
timeout: number;
|
|
31
|
+
/** How often (ms) `startBlockhashRefreshLoop` refreshes `recentBlockhash`; `0` disables the refresh loop. */
|
|
22
32
|
blockhashRefreshInterval: number;
|
|
23
33
|
additionalConnections: Connection[];
|
|
24
34
|
timoutCount = 0;
|
|
35
|
+
/** Periodically refreshed blockhash cache (see `startBlockhashRefreshLoop`); informational only — `sendRawTransaction` does not currently read this field. */
|
|
25
36
|
recentBlockhash?: BlockhashWithExpiryBlockHeight;
|
|
37
|
+
/** If `true`, `sendRawTransaction` returns immediately after sending, without waiting for or checking confirmation. */
|
|
26
38
|
skipConfirmation: boolean;
|
|
39
|
+
/** If `true` (and `skipConfirmation` is `false`), confirmation runs without being awaited — `sendRawTransaction` returns before the transaction is confirmed. */
|
|
27
40
|
confirmInBackground: boolean;
|
|
41
|
+
/** Commitment level used when refreshing `recentBlockhash`. */
|
|
28
42
|
blockhashCommitment: Commitment;
|
|
43
|
+
/** Handle for the interval timer started by `startBlockhashRefreshLoop`. */
|
|
29
44
|
blockhashIntervalId?: NodeJS.Timer;
|
|
30
45
|
|
|
46
|
+
/**
|
|
47
|
+
* @param props.connection - RPC connection used for sending, confirming, and blockhash refresh.
|
|
48
|
+
* @param props.wallet - Wallet used to sign transactions that aren't already `preSigned`.
|
|
49
|
+
* @param props.opts - Default `ConfirmOptions`; defaults to `DEFAULT_CONFIRMATION_OPTS` with `maxRetries: 0` (this sender does not retry sends itself).
|
|
50
|
+
* @param props.timeout - Confirmation timeout in milliseconds; defaults to 35000 (35s).
|
|
51
|
+
* @param props.blockhashRefreshInterval - Interval (ms) for the background blockhash refresh; defaults to 10000 (10s). `0` disables it.
|
|
52
|
+
* @param props.additionalConnections - Extra connections to also broadcast raw transactions to.
|
|
53
|
+
* @param props.skipConfirmation - Skip confirmation entirely after sending; defaults to `false`.
|
|
54
|
+
* @param props.confirmInBackground - Confirm without awaiting, so `sendRawTransaction` resolves right after send; defaults to `false`.
|
|
55
|
+
* @param props.blockhashCommitment - Commitment for the background blockhash refresh; defaults to `'finalized'`.
|
|
56
|
+
* @param props.confirmationStrategy - How to wait for confirmation; defaults to `ConfirmationStrategy.Combo`.
|
|
57
|
+
* @param props.trackTxLandRate - Enables land-rate tracking.
|
|
58
|
+
* @param props.txHandler - Custom `TxHandler` for signing/building transactions.
|
|
59
|
+
* @param props.txLandRateLookbackWindowMinutes - Rolling window, in minutes, for the land-rate calculation.
|
|
60
|
+
* @param props.landRateToFeeFunc - Custom mapping from land rate to priority-fee multiplier.
|
|
61
|
+
* @param props.throwOnTimeoutError - Whether confirmation timeouts throw `TxSendError`; defaults to `true`.
|
|
62
|
+
*/
|
|
31
63
|
public constructor({
|
|
32
64
|
connection,
|
|
33
65
|
wallet,
|
|
@@ -86,6 +118,11 @@ export class FastSingleTxSender extends BaseTxSender {
|
|
|
86
118
|
this.startBlockhashRefreshLoop();
|
|
87
119
|
}
|
|
88
120
|
|
|
121
|
+
/**
|
|
122
|
+
* Starts a `setInterval` loop (if `blockhashRefreshInterval > 0`) that refreshes
|
|
123
|
+
* `this.recentBlockhash` every `blockhashRefreshInterval` ms. Fetch errors are logged and
|
|
124
|
+
* otherwise ignored (the loop keeps running with the stale cached value).
|
|
125
|
+
*/
|
|
89
126
|
startBlockhashRefreshLoop(): void {
|
|
90
127
|
if (this.blockhashRefreshInterval > 0) {
|
|
91
128
|
this.blockhashIntervalId = setInterval(async () => {
|
|
@@ -100,6 +137,16 @@ export class FastSingleTxSender extends BaseTxSender {
|
|
|
100
137
|
}
|
|
101
138
|
}
|
|
102
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Sends a raw transaction exactly once via `connection.sendRawTransaction` (plus a best-effort
|
|
142
|
+
* broadcast to `additionalConnections`), then confirms it unless `skipConfirmation` is set —
|
|
143
|
+
* awaited normally, or fired without awaiting if `confirmInBackground` is set (in which case
|
|
144
|
+
* the returned `slot` will be `undefined`, since it isn't known yet at return time).
|
|
145
|
+
* @param rawTransaction - Serialized, signed transaction bytes.
|
|
146
|
+
* @param opts - Options passed to `sendRawTransaction`/`confirmTransaction`; `opts.commitment` selects confirmation level.
|
|
147
|
+
* @returns The signature, and the confirmation slot if confirmation completed synchronously (`undefined` if `skipConfirmation` or `confirmInBackground` is set).
|
|
148
|
+
* @throws Whatever `connection.sendRawTransaction` or (if awaited) `confirmTransaction`/`checkConfirmationResultForError` throw.
|
|
149
|
+
*/
|
|
103
150
|
async sendRawTransaction(
|
|
104
151
|
rawTransaction: Buffer | Uint8Array,
|
|
105
152
|
opts: ConfirmOptions
|
|
@@ -118,15 +165,22 @@ export class FastSingleTxSender extends BaseTxSender {
|
|
|
118
165
|
if (!this.skipConfirmation) {
|
|
119
166
|
try {
|
|
120
167
|
if (this.confirmInBackground) {
|
|
121
|
-
this.confirmTransaction(txid, opts.commitment)
|
|
122
|
-
async (result) => {
|
|
168
|
+
this.confirmTransaction(txid, opts.commitment)
|
|
169
|
+
.then(async (result) => {
|
|
123
170
|
this.txSigCache?.set(txid, true);
|
|
124
171
|
if (result) {
|
|
125
172
|
await this.checkConfirmationResultForError(txid, result.value);
|
|
126
173
|
slot = result.context.slot;
|
|
127
174
|
}
|
|
128
|
-
}
|
|
129
|
-
|
|
175
|
+
})
|
|
176
|
+
.catch((err) => {
|
|
177
|
+
// background confirmation is fire-and-forget; surface failures
|
|
178
|
+
// in logs instead of as unhandled promise rejections
|
|
179
|
+
console.error(
|
|
180
|
+
`Error confirming transaction ${txid} in background:`,
|
|
181
|
+
err
|
|
182
|
+
);
|
|
183
|
+
});
|
|
130
184
|
} else {
|
|
131
185
|
const result = await this.confirmTransaction(txid, opts.commitment);
|
|
132
186
|
this.txSigCache?.set(txid, true);
|
|
@@ -17,6 +17,18 @@ type ResolveReference = {
|
|
|
17
17
|
resolve?: () => void;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* `TxSender` that never calls `connection.sendRawTransaction` itself — instead it hands the raw
|
|
22
|
+
* transaction to `additionalTxSenderCallbacks` (e.g. a Jito/third-party bundle submitter) and
|
|
23
|
+
* re-invokes those callbacks on a `retrySleep` interval until the transaction confirms or
|
|
24
|
+
* `timeout` elapses. `connection` is used only to *confirm* the transaction (via
|
|
25
|
+
* `BaseTxSender.confirmTransaction`), never to broadcast it. `additionalConnections` is always
|
|
26
|
+
* empty for this sender (the constructor doesn't accept it) since forwarding goes exclusively
|
|
27
|
+
* through the callbacks.
|
|
28
|
+
*
|
|
29
|
+
* Use this when transaction submission is delegated to an external forwarder/relay rather than
|
|
30
|
+
* this RPC connection, but you still want this SDK's confirmation/retry/land-rate machinery.
|
|
31
|
+
*/
|
|
20
32
|
export class ForwardOnlyTxSender extends BaseTxSender {
|
|
21
33
|
connection: Connection;
|
|
22
34
|
wallet: IWallet;
|
|
@@ -26,6 +38,20 @@ export class ForwardOnlyTxSender extends BaseTxSender {
|
|
|
26
38
|
additionalConnections: Connection[];
|
|
27
39
|
timoutCount = 0;
|
|
28
40
|
|
|
41
|
+
/**
|
|
42
|
+
* @param props.connection - RPC connection used only for confirmation, never for sending.
|
|
43
|
+
* @param props.wallet - Wallet used to sign transactions that aren't already `preSigned`.
|
|
44
|
+
* @param props.opts - Default `ConfirmOptions`; defaults to `DEFAULT_CONFIRMATION_OPTS` with `maxRetries: 0` (retries are handled by this sender's own re-forward loop, not the RPC node).
|
|
45
|
+
* @param props.timeout - Total time (ms) to keep re-forwarding and waiting for confirmation before giving up; defaults to 35000 (35s).
|
|
46
|
+
* @param props.retrySleep - Interval (ms) between re-invocations of `additionalTxSenderCallbacks`; defaults to 5000 (5s).
|
|
47
|
+
* @param props.confirmationStrategy - How to wait for confirmation; defaults to `ConfirmationStrategy.Combo`.
|
|
48
|
+
* @param props.additionalTxSenderCallbacks - Callbacks that actually submit the transaction (e.g. to a relay/bundler); required for this sender to do anything, since it never calls `sendRawTransaction` on `connection` itself. Defaults to an empty array (transaction is never actually broadcast anywhere).
|
|
49
|
+
* @param props.txHandler - Custom `TxHandler` for signing/building transactions.
|
|
50
|
+
* @param props.trackTxLandRate - Enables land-rate tracking.
|
|
51
|
+
* @param props.txLandRateLookbackWindowMinutes - Rolling window, in minutes, for the land-rate calculation.
|
|
52
|
+
* @param props.landRateToFeeFunc - Custom mapping from land rate to priority-fee multiplier.
|
|
53
|
+
* @param props.throwOnTimeoutError - Whether confirmation timeouts throw `TxSendError`; defaults to `true`.
|
|
54
|
+
*/
|
|
29
55
|
public constructor({
|
|
30
56
|
connection,
|
|
31
57
|
wallet,
|
|
@@ -75,6 +101,11 @@ export class ForwardOnlyTxSender extends BaseTxSender {
|
|
|
75
101
|
this.additionalConnections = [];
|
|
76
102
|
}
|
|
77
103
|
|
|
104
|
+
/**
|
|
105
|
+
* Waits `retrySleep` milliseconds, exposing an early-wake `resolve` via `reference` so
|
|
106
|
+
* `sendRawTransaction`'s stop condition can cut the wait short once the transaction confirms.
|
|
107
|
+
* @param reference - Mutable holder `sendRawTransaction` uses to resolve this sleep early.
|
|
108
|
+
*/
|
|
78
109
|
async sleep(reference: ResolveReference): Promise<void> {
|
|
79
110
|
return new Promise((resolve) => {
|
|
80
111
|
reference.resolve = resolve;
|
|
@@ -82,6 +113,13 @@ export class ForwardOnlyTxSender extends BaseTxSender {
|
|
|
82
113
|
});
|
|
83
114
|
}
|
|
84
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Overrides `BaseTxSender.sendToAdditionalConnections` to skip `additionalConnections`
|
|
118
|
+
* entirely (always empty for this sender) and only invoke `additionalTxSenderCallbacks` with
|
|
119
|
+
* the base58-encoded transaction — this is this sender's *only* transaction submission path.
|
|
120
|
+
* @param rawTx - Serialized, signed transaction bytes.
|
|
121
|
+
* @param _opts - Unused (kept for `BaseTxSender` override compatibility).
|
|
122
|
+
*/
|
|
85
123
|
sendToAdditionalConnections(
|
|
86
124
|
rawTx: Buffer | Uint8Array,
|
|
87
125
|
_opts: ConfirmOptions
|
|
@@ -91,6 +129,16 @@ export class ForwardOnlyTxSender extends BaseTxSender {
|
|
|
91
129
|
});
|
|
92
130
|
}
|
|
93
131
|
|
|
132
|
+
/**
|
|
133
|
+
* "Sends" a raw transaction by repeatedly invoking `additionalTxSenderCallbacks` with it every
|
|
134
|
+
* `retrySleep` ms (never calling `connection.sendRawTransaction`) while concurrently waiting
|
|
135
|
+
* for confirmation via `confirmTransaction`. Re-forwarding stops as soon as confirmation
|
|
136
|
+
* resolves (successfully or by throwing) or `timeout` elapses.
|
|
137
|
+
* @param rawTransaction - Serialized, signed transaction bytes (must deserialize as a `VersionedTransaction`).
|
|
138
|
+
* @param opts - Confirmation options; `opts.commitment` is used for confirmation.
|
|
139
|
+
* @returns The signature and confirmation slot once confirmed.
|
|
140
|
+
* @throws Whatever `confirmTransaction` throws (e.g. `TxSendError` on timeout, or the resolved on-chain error).
|
|
141
|
+
*/
|
|
94
142
|
async sendRawTransaction(
|
|
95
143
|
rawTransaction: Buffer | Uint8Array,
|
|
96
144
|
opts: ConfirmOptions
|
|
@@ -86,9 +86,11 @@ const getTransactionResultWithRetry = async (
|
|
|
86
86
|
* THROWS if there is an error
|
|
87
87
|
*
|
|
88
88
|
* Should only be used for a txSig that is confirmed has an error. There is a race-condition where sometimes the transaction is not instantly available to fetch after the confirmation has already failed with an error, so this method has retry logic which we don't want to do wastefully. This method will throw a generic error if it can't get the transaction result after a retry period.
|
|
89
|
-
* @param txSig
|
|
90
|
-
* @param connection
|
|
91
|
-
* @
|
|
89
|
+
* @param txSig - Signature of the transaction already known/confirmed to have failed.
|
|
90
|
+
* @param connection - RPC connection used to fetch the transaction (retried up to 3 times over ~3s).
|
|
91
|
+
* @param commitment - Commitment to fetch at; defaults to `connection.commitment`, then `DEFAULT_CONFIRMATION_OPTS.commitment`. Must resolve to `'confirmed'` or `'finalized'`.
|
|
92
|
+
* @returns Resolves with no value if no error could be extracted (should not normally happen for a known-failed signature).
|
|
93
|
+
* @throws SendTransactionError with the resolved on-chain error/logs — or a generic "Transaction Failed" error if the transaction result couldn't be fetched after retrying.
|
|
92
94
|
*/
|
|
93
95
|
export const throwTransactionError = async (
|
|
94
96
|
txSig: string,
|
|
@@ -108,9 +110,12 @@ export const throwTransactionError = async (
|
|
|
108
110
|
* RETURNS an error if there is one
|
|
109
111
|
*
|
|
110
112
|
* Should only be used for a txSig that is confirmed has an error. There is a race-condition where sometimes the transaction is not instantly available to fetch after the confirmation has already failed with an error, so this method has retry logic which we don't want to do wastefully. This method will throw a generic error if it can't get the transaction result after a retry period.
|
|
111
|
-
* @param txSig
|
|
112
|
-
* @param connection
|
|
113
|
-
* @
|
|
113
|
+
* @param txSig - Signature of the transaction already known/confirmed to have failed.
|
|
114
|
+
* @param connection - RPC connection used to fetch the transaction (retried up to 3 times over ~3s).
|
|
115
|
+
* @param commitment - Commitment to fetch at; defaults to `connection.commitment`, then `DEFAULT_CONFIRMATION_OPTS.commitment`. Must resolve to `'confirmed'` or `'finalized'`.
|
|
116
|
+
* @returns The resolved `SendTransactionError` (with parsed logs/friendly message), a generic
|
|
117
|
+
* "Transaction Failed" `SendTransactionError` if the transaction couldn't be fetched after
|
|
118
|
+
* retrying, or `undefined` if the fetched transaction unexpectedly has no recorded error.
|
|
114
119
|
*/
|
|
115
120
|
export const getTransactionErrorFromTxSig = async (
|
|
116
121
|
txSig: string,
|
|
@@ -140,6 +145,13 @@ export const getTransactionErrorFromTxSig = async (
|
|
|
140
145
|
return getTransactionError(transactionResult);
|
|
141
146
|
};
|
|
142
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Builds a `SendTransactionError` from an already-fetched transaction response, extracting a
|
|
150
|
+
* "friendly" message from the last log line (matching `failed: <message>`) when present.
|
|
151
|
+
* @param transactionResult - A fetched `VersionedTransactionResponse`.
|
|
152
|
+
* @returns A `SendTransactionError` populated with the signature, logs, and (if parseable) a
|
|
153
|
+
* friendly failure message, or `undefined` if `transactionResult.meta.err` is not set.
|
|
154
|
+
*/
|
|
143
155
|
export const getTransactionError = (
|
|
144
156
|
transactionResult: VersionedTransactionResponse
|
|
145
157
|
): SendTransactionError | undefined => {
|