@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/retryTxSender.ts
CHANGED
|
@@ -12,15 +12,38 @@ type ResolveReference = {
|
|
|
12
12
|
resolve?: () => void;
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Default `TxSender` for most clients: sends a transaction once, then keeps resending the exact
|
|
17
|
+
* same signed bytes (to `connection` and every `additionalConnections` entry) every `retrySleep`
|
|
18
|
+
* ms until it confirms or `timeout` elapses. This is client-side resend, independent of the RPC
|
|
19
|
+
* node's own forwarding — useful when relying on rebroadcast to improve inclusion odds under
|
|
20
|
+
* congestion, at the cost of extra RPC load compared to `FastSingleTxSender`.
|
|
21
|
+
*/
|
|
15
22
|
export class RetryTxSender extends BaseTxSender {
|
|
16
23
|
connection: Connection;
|
|
17
24
|
wallet: IWallet;
|
|
18
25
|
opts: ConfirmOptions;
|
|
19
26
|
timeout: number;
|
|
27
|
+
/** Interval (ms) between resend attempts of the same signed transaction. */
|
|
20
28
|
retrySleep: number;
|
|
21
29
|
additionalConnections: Connection[];
|
|
22
30
|
timoutCount = 0;
|
|
23
31
|
|
|
32
|
+
/**
|
|
33
|
+
* @param props.connection - RPC connection used for sending, resending, and confirming.
|
|
34
|
+
* @param props.wallet - Wallet used to sign transactions that aren't already `preSigned`.
|
|
35
|
+
* @param props.opts - Default `ConfirmOptions`; defaults to `DEFAULT_CONFIRMATION_OPTS` with `maxRetries: 0` (retries are handled by this sender's own resend loop, not the RPC node).
|
|
36
|
+
* @param props.timeout - Total time (ms) to keep resending and waiting for confirmation before giving up; defaults to 35000 (35s).
|
|
37
|
+
* @param props.retrySleep - Interval (ms) between resend attempts; defaults to 2000 (2s).
|
|
38
|
+
* @param props.additionalConnections - Extra connections to also (re)broadcast raw transactions to.
|
|
39
|
+
* @param props.confirmationStrategy - How to wait for confirmation; defaults to `ConfirmationStrategy.Combo`.
|
|
40
|
+
* @param props.additionalTxSenderCallbacks - Callbacks invoked with each (re)sent transaction's base58 encoding.
|
|
41
|
+
* @param props.txHandler - Custom `TxHandler` for signing/building transactions.
|
|
42
|
+
* @param props.trackTxLandRate - Enables land-rate tracking.
|
|
43
|
+
* @param props.txLandRateLookbackWindowMinutes - Rolling window, in minutes, for the land-rate calculation.
|
|
44
|
+
* @param props.landRateToFeeFunc - Custom mapping from land rate to priority-fee multiplier.
|
|
45
|
+
* @param props.throwOnTimeoutError - Whether confirmation timeouts throw `TxSendError`; defaults to `true`.
|
|
46
|
+
*/
|
|
24
47
|
public constructor({
|
|
25
48
|
connection,
|
|
26
49
|
wallet,
|
|
@@ -72,6 +95,12 @@ export class RetryTxSender extends BaseTxSender {
|
|
|
72
95
|
this.additionalConnections = additionalConnections;
|
|
73
96
|
}
|
|
74
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Waits `retrySleep` milliseconds, exposing an early-wake `resolve` via `reference` so the
|
|
100
|
+
* resend loop in `sendRawTransaction` can stop promptly once the transaction confirms or a
|
|
101
|
+
* resend fails.
|
|
102
|
+
* @param reference - Mutable holder `sendRawTransaction` uses to resolve this sleep early.
|
|
103
|
+
*/
|
|
75
104
|
async sleep(reference: ResolveReference): Promise<void> {
|
|
76
105
|
return new Promise((resolve) => {
|
|
77
106
|
reference.resolve = resolve;
|
|
@@ -79,6 +108,17 @@ export class RetryTxSender extends BaseTxSender {
|
|
|
79
108
|
});
|
|
80
109
|
}
|
|
81
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Sends a raw transaction, then repeatedly resends the identical signed bytes to `connection`
|
|
113
|
+
* (and broadcasts to `additionalConnections`/`additionalTxSenderCallbacks`) every `retrySleep`
|
|
114
|
+
* ms while concurrently waiting for confirmation. The resend loop stops as soon as
|
|
115
|
+
* confirmation resolves, a resend attempt itself throws, or `timeout` elapses.
|
|
116
|
+
* @param rawTransaction - Serialized, signed transaction bytes.
|
|
117
|
+
* @param opts - Options passed to each send/resend and to confirmation; `opts.commitment` selects confirmation level.
|
|
118
|
+
* @returns The signature and confirmation slot once confirmed.
|
|
119
|
+
* @throws Whatever `confirmTransaction` or `checkConfirmationResultForError` throw (e.g.
|
|
120
|
+
* `TxSendError` on timeout, or the resolved on-chain error for a failed transaction).
|
|
121
|
+
*/
|
|
82
122
|
async sendRawTransaction(
|
|
83
123
|
rawTransaction: Buffer | Uint8Array,
|
|
84
124
|
opts: ConfirmOptions
|
package/src/tx/txHandler.ts
CHANGED
|
@@ -63,32 +63,48 @@ const BLOCKHASH_FETCH_RETRY_COUNT = 3;
|
|
|
63
63
|
const BLOCKHASH_FETCH_RETRY_SLEEP = 200;
|
|
64
64
|
const RECENT_BLOCKHASH_STALE_TIME_MS = 2_000; // Reuse blockhashes within this timeframe during bursts of tx contruction
|
|
65
65
|
|
|
66
|
+
/** Inputs to `TxHandler.buildTransaction`/`buildBulkTransactions` describing what to build and how. */
|
|
66
67
|
export type TxBuildingProps = {
|
|
67
68
|
instructions: TransactionInstruction | TransactionInstruction[];
|
|
69
|
+
/** `'legacy'` for a legacy `Transaction`, or `0` for a v0 `VersionedTransaction`. */
|
|
68
70
|
txVersion: TransactionVersion;
|
|
69
71
|
connection: Connection;
|
|
72
|
+
/** Commitment used when building/signing multiple legacy transactions via `getPreparedAndSignedLegacyTransactionMap`. */
|
|
70
73
|
preFlightCommitment?: Commitment;
|
|
74
|
+
/** Supplies the market address lookup tables to merge with `lookupTables` for a v0 transaction. */
|
|
71
75
|
fetchAllMarketLookupTableAccounts: () => Promise<AddressLookupTableAccount[]>;
|
|
76
|
+
/** Extra address lookup tables to compile the message against, in addition to the market ones from `fetchAllMarketLookupTableAccounts`. */
|
|
72
77
|
lookupTables?: AddressLookupTableAccount[];
|
|
78
|
+
/** If `true`, return a `VersionedTransaction` even when `txVersion === 'legacy'` (wraps the legacy message in a versioned envelope). */
|
|
73
79
|
forceVersionedTransaction?: boolean;
|
|
80
|
+
/** Compute-unit limit/price and simulation-based sizing options for this transaction. */
|
|
74
81
|
txParams?: TxParams;
|
|
82
|
+
/** Blockhash to use; if omitted, one is resolved via `TxHandler`'s `BlockhashFetcher`. */
|
|
75
83
|
recentBlockhash?: BlockhashWithExpiryBlockHeight;
|
|
76
84
|
wallet?: IWallet;
|
|
77
85
|
optionalIxs?: TransactionInstruction[]; // additional instructions to add to the front of ixs if there's enough room, such as oracle cranks
|
|
78
86
|
simulatedTx?: SimulatedTransactionResponse; // we could have pre-simulated the tx and we can use this later to get compute units
|
|
79
87
|
};
|
|
80
88
|
|
|
89
|
+
/** Configuration for `TxHandler`'s blockhash-fetching strategy. */
|
|
81
90
|
export type TxHandlerConfig = {
|
|
91
|
+
/** If `true`, use a `CachedBlockhashFetcher` (reduces RPC calls during bursts of tx construction); otherwise fetch fresh every time via `BaseBlockhashFetcher`. */
|
|
82
92
|
blockhashCachingEnabled?: boolean;
|
|
93
|
+
/** Tuning for `CachedBlockhashFetcher` when `blockhashCachingEnabled` is `true`; each field defaults if omitted (see `BLOCKHASH_FETCH_RETRY_COUNT`/`BLOCKHASH_FETCH_RETRY_SLEEP`/`RECENT_BLOCKHASH_STALE_TIME_MS`). */
|
|
83
94
|
blockhashCachingConfig?: {
|
|
84
|
-
retryCount
|
|
85
|
-
retrySleepTimeMs
|
|
86
|
-
staleCacheTimeMs
|
|
95
|
+
retryCount?: number;
|
|
96
|
+
retrySleepTimeMs?: number;
|
|
97
|
+
staleCacheTimeMs?: number;
|
|
87
98
|
};
|
|
88
99
|
};
|
|
89
100
|
|
|
90
101
|
/**
|
|
91
102
|
* This class is responsible for creating and signing transactions.
|
|
103
|
+
*
|
|
104
|
+
* Owns blockhash resolution (via a `BlockhashFetcher`, optionally caching), compute-budget
|
|
105
|
+
* instruction injection, address-lookup-table compilation, and wallet signing for both legacy and
|
|
106
|
+
* v0 transactions, single or batched. `TxSender` implementations delegate to a `TxHandler`
|
|
107
|
+
* instance for all of this rather than duplicating it.
|
|
92
108
|
*/
|
|
93
109
|
export class TxHandler {
|
|
94
110
|
private blockHashToLastValidBlockHeightLookup: Record<string, number> = {};
|
|
@@ -107,6 +123,16 @@ export class TxHandler {
|
|
|
107
123
|
DEFAULT_CONFIRMATION_OPTS.commitment ?? 'confirmed';
|
|
108
124
|
private blockHashFetcher: BlockhashFetcher;
|
|
109
125
|
|
|
126
|
+
/**
|
|
127
|
+
* @param props.connection - RPC connection used for blockhash fetches and (indirectly) sends.
|
|
128
|
+
* @param props.wallet - Default wallet used to sign transactions when a call doesn't pass its own.
|
|
129
|
+
* @param props.confirmationOptions - Default confirm options; `preflightCommitment` (falling
|
|
130
|
+
* back to `connection.commitment`, then `'confirmed'`) sets the commitment used for blockhash fetches.
|
|
131
|
+
* @param props.opts.returnBlockHeightsWithSignedTxCallbackData - If `true`, `onSignedCb` receives each signed tx's `lastValidBlockHeight` alongside its signature/blockhash.
|
|
132
|
+
* @param props.opts.onSignedCb - Callback invoked with signed-transaction metadata whenever this handler signs one or more transactions.
|
|
133
|
+
* @param props.opts.preSignedCb - Callback invoked immediately before wallet signing occurs.
|
|
134
|
+
* @param props.config - Blockhash-fetching strategy/tuning; see `TxHandlerConfig`.
|
|
135
|
+
*/
|
|
110
136
|
constructor(props: {
|
|
111
137
|
connection: Connection;
|
|
112
138
|
wallet: IWallet;
|
|
@@ -147,6 +173,7 @@ export class TxHandler {
|
|
|
147
173
|
this.preSignedCb = props.opts?.preSignedCb;
|
|
148
174
|
}
|
|
149
175
|
|
|
176
|
+
/** @returns The wallet this handler currently uses to sign transactions when a call doesn't pass its own. */
|
|
150
177
|
public getWallet() {
|
|
151
178
|
return this.wallet;
|
|
152
179
|
}
|
|
@@ -166,6 +193,10 @@ export class TxHandler {
|
|
|
166
193
|
ConfirmOptions,
|
|
167
194
|
];
|
|
168
195
|
|
|
196
|
+
/**
|
|
197
|
+
* Swaps the default wallet used for subsequent signing calls that don't pass their own.
|
|
198
|
+
* @param wallet - New default wallet.
|
|
199
|
+
*/
|
|
169
200
|
public updateWallet(wallet: IWallet) {
|
|
170
201
|
this.wallet = wallet;
|
|
171
202
|
}
|
|
@@ -175,7 +206,8 @@ export class TxHandler {
|
|
|
175
206
|
*
|
|
176
207
|
* https://www.helius.dev/blog/how-to-deal-with-blockhash-errors-on-solana#why-do-blockhash-errors-occur
|
|
177
208
|
*
|
|
178
|
-
* @returns
|
|
209
|
+
* @returns The latest blockhash (via this handler's configured `BlockhashFetcher`) at the
|
|
210
|
+
* commitment level resolved in the constructor, or `undefined` if unavailable.
|
|
179
211
|
*/
|
|
180
212
|
public async getLatestBlockhashForTransaction() {
|
|
181
213
|
return this.blockHashFetcher.getLatestBlockhash();
|
|
@@ -198,14 +230,18 @@ export class TxHandler {
|
|
|
198
230
|
}
|
|
199
231
|
|
|
200
232
|
/**
|
|
201
|
-
* Applies recent blockhash and signs a given transaction
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
* @param
|
|
206
|
-
* @param
|
|
207
|
-
* @param
|
|
208
|
-
* @
|
|
233
|
+
* Applies recent blockhash and signs a given transaction. Attaches an internal
|
|
234
|
+
* `SIGNATURE_BLOCK_AND_EXPIRY` property (undocumented in the `Transaction` type, but read by
|
|
235
|
+
* `WhileValidTxSender`) recording the blockhash/expiry used, so confirmation logic can know
|
|
236
|
+
* when the transaction's blockhash has expired even for pre-built transactions.
|
|
237
|
+
* @param tx - Transaction to prepare; mutated in place (feePayer, recentBlockhash, signature).
|
|
238
|
+
* @param additionalSigners - Extra signers to co-sign alongside the wallet.
|
|
239
|
+
* @param wallet - Wallet to sign with; defaults to this handler's configured wallet.
|
|
240
|
+
* @param confirmationOpts - Unused directly here (present for interface symmetry with other overloads).
|
|
241
|
+
* @param preSigned - If `true`, return `tx` unchanged without touching blockhash/feePayer/signatures.
|
|
242
|
+
* @param recentBlockhash - Blockhash to use; if omitted, resolved via `getLatestBlockhashForTransaction`.
|
|
243
|
+
* @returns The prepared (and signed, unless `preSigned`) transaction.
|
|
244
|
+
* @throws Error if no blockhash could be resolved.
|
|
209
245
|
*/
|
|
210
246
|
public async prepareTx(
|
|
211
247
|
tx: Transaction,
|
|
@@ -310,6 +346,16 @@ export class TxHandler {
|
|
|
310
346
|
return signedTx;
|
|
311
347
|
}
|
|
312
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Signs a `VersionedTransaction`, optionally overwriting its blockhash first.
|
|
351
|
+
* @param tx - Transaction to sign; mutated in place.
|
|
352
|
+
* @param additionalSigners - Extra signers to co-sign alongside the wallet.
|
|
353
|
+
* @param recentBlockhash - If provided, overwrites `tx.message.recentBlockhash` before signing
|
|
354
|
+
* (and records it for `SIGNATURE_BLOCK_AND_EXPIRY` tracking); if omitted, the transaction's
|
|
355
|
+
* existing blockhash is used as-is.
|
|
356
|
+
* @param wallet - Wallet to sign with; defaults to this handler's configured wallet.
|
|
357
|
+
* @returns The signed transaction.
|
|
358
|
+
*/
|
|
313
359
|
public async signVersionedTx(
|
|
314
360
|
tx: VersionedTransaction,
|
|
315
361
|
additionalSigners: Array<Signer>,
|
|
@@ -430,6 +476,15 @@ export class TxHandler {
|
|
|
430
476
|
return new VersionedTransaction(message);
|
|
431
477
|
}
|
|
432
478
|
|
|
479
|
+
/**
|
|
480
|
+
* Builds an unsigned `VersionedTransaction` that wraps a *legacy* compiled message (no address
|
|
481
|
+
* lookup tables) — used when `forceVersionedTransaction` is requested for a `'legacy'`
|
|
482
|
+
* `txVersion`.
|
|
483
|
+
* @param recentBlockhash - Blockhash to build the message with.
|
|
484
|
+
* @param ixs - Instructions to include, in order.
|
|
485
|
+
* @param wallet - Wallet whose pubkey becomes the fee payer; defaults to this handler's configured wallet.
|
|
486
|
+
* @returns The unsigned `VersionedTransaction`.
|
|
487
|
+
*/
|
|
433
488
|
public generateLegacyVersionedTransaction(
|
|
434
489
|
recentBlockhash: BlockhashWithExpiryBlockHeight,
|
|
435
490
|
ixs: TransactionInstruction[],
|
|
@@ -451,6 +506,15 @@ export class TxHandler {
|
|
|
451
506
|
return tx;
|
|
452
507
|
}
|
|
453
508
|
|
|
509
|
+
/**
|
|
510
|
+
* Builds an unsigned v0 `VersionedTransaction`, compiling its message against the given
|
|
511
|
+
* address lookup tables.
|
|
512
|
+
* @param recentBlockhash - Blockhash to build the message with.
|
|
513
|
+
* @param ixs - Instructions to include, in order.
|
|
514
|
+
* @param lookupTableAccounts - Address lookup tables to compile the message against.
|
|
515
|
+
* @param wallet - Wallet whose pubkey becomes the fee payer; defaults to this handler's configured wallet.
|
|
516
|
+
* @returns The unsigned `VersionedTransaction`.
|
|
517
|
+
*/
|
|
454
518
|
public generateVersionedTransaction(
|
|
455
519
|
recentBlockhash: BlockhashWithExpiryBlockHeight,
|
|
456
520
|
ixs: TransactionInstruction[],
|
|
@@ -473,6 +537,13 @@ export class TxHandler {
|
|
|
473
537
|
return tx;
|
|
474
538
|
}
|
|
475
539
|
|
|
540
|
+
/**
|
|
541
|
+
* Builds an unsigned legacy `Transaction` from raw instructions. Unlike the other `generate*`
|
|
542
|
+
* methods, this does not set a fee payer.
|
|
543
|
+
* @param ixs - Instructions to include, in order.
|
|
544
|
+
* @param recentBlockhash - If provided, sets `tx.recentBlockhash`; otherwise left unset.
|
|
545
|
+
* @returns The unsigned `Transaction`.
|
|
546
|
+
*/
|
|
476
547
|
public generateLegacyTransaction(
|
|
477
548
|
ixs: TransactionInstruction[],
|
|
478
549
|
recentBlockhash?: BlockhashWithExpiryBlockHeight
|
|
@@ -486,8 +557,10 @@ export class TxHandler {
|
|
|
486
557
|
|
|
487
558
|
/**
|
|
488
559
|
* Accepts multiple instructions and builds a transaction for each. Prevents needing to spam RPC with requests for the same blockhash.
|
|
489
|
-
* @param props
|
|
490
|
-
*
|
|
560
|
+
* @param props - Shared `TxBuildingProps` (minus `instructions`) plus one instruction/array
|
|
561
|
+
* per output transaction; a falsy entry in `props.instructions` yields `undefined` at that
|
|
562
|
+
* position rather than being built.
|
|
563
|
+
* @returns One built transaction (or `undefined`) per entry in `props.instructions`, in the same order.
|
|
491
564
|
*/
|
|
492
565
|
public async buildBulkTransactions(
|
|
493
566
|
props: Omit<TxBuildingProps, 'instructions'> & {
|
|
@@ -511,13 +584,16 @@ export class TxHandler {
|
|
|
511
584
|
}
|
|
512
585
|
|
|
513
586
|
/**
|
|
514
|
-
*
|
|
515
|
-
*
|
|
516
|
-
*
|
|
517
|
-
*
|
|
518
|
-
*
|
|
519
|
-
*
|
|
520
|
-
* @returns
|
|
587
|
+
* Builds a full transaction from raw instructions: merges caller-supplied `lookupTables` with
|
|
588
|
+
* the market lookup tables from `fetchAllMarketLookupTableAccounts`, optionally appends as many
|
|
589
|
+
* `optionalIxs` (e.g. oracle cranks) as fit under `MAX_TX_BYTE_SIZE` (dropped one-by-one and
|
|
590
|
+
* re-simulated if the batch fails simulation), resolves compute-unit limit/price (via
|
|
591
|
+
* simulation if `txParams.useSimulatedComputeUnits`), and prepends the resulting
|
|
592
|
+
* `ComputeBudgetProgram` instructions unless the caller's instructions already include them.
|
|
593
|
+
* @param props - See `TxBuildingProps`. `props.forceVersionedTransaction` returns a
|
|
594
|
+
* `VersionedTransaction` instance even if `props.txVersion` is `'legacy'`.
|
|
595
|
+
* @returns The built transaction — a `Transaction` for `txVersion === 'legacy'` unless
|
|
596
|
+
* `forceVersionedTransaction` is set, otherwise a `VersionedTransaction`. Not yet signed.
|
|
521
597
|
*/
|
|
522
598
|
public async buildTransaction(
|
|
523
599
|
props: TxBuildingProps
|
|
@@ -648,6 +724,17 @@ export class TxHandler {
|
|
|
648
724
|
}
|
|
649
725
|
}
|
|
650
726
|
|
|
727
|
+
/**
|
|
728
|
+
* Wraps a single instruction in a legacy `Transaction`, prepending compute-budget instructions
|
|
729
|
+
* as needed. Does not set a blockhash or fee payer.
|
|
730
|
+
* @param instruction - Instruction to wrap.
|
|
731
|
+
* @param computeUnits - Compute unit limit; defaults to 600,000. A `setComputeUnitLimit`
|
|
732
|
+
* instruction is added unless this value equals `COMPUTE_UNITS_DEFAULT` (200,000) exactly —
|
|
733
|
+
* note the 600,000 default therefore *does* add one.
|
|
734
|
+
* @param computeUnitsPrice - Compute unit price in micro-lamports; defaults to 0, in which case
|
|
735
|
+
* no `setComputeUnitPrice` instruction is added.
|
|
736
|
+
* @returns The unsigned `Transaction`.
|
|
737
|
+
*/
|
|
651
738
|
public wrapInTx(
|
|
652
739
|
instruction: TransactionInstruction,
|
|
653
740
|
computeUnits = 600_000,
|
|
@@ -681,11 +768,12 @@ export class TxHandler {
|
|
|
681
768
|
|
|
682
769
|
/**
|
|
683
770
|
* Get a map of signed and prepared transactions from an array of legacy transactions
|
|
684
|
-
* @param
|
|
685
|
-
* @param
|
|
686
|
-
* @param
|
|
687
|
-
* @param
|
|
688
|
-
* @returns
|
|
771
|
+
* @param txsMap - Map of key to legacy `Transaction` (or `undefined`, passed through unset); each is mutated with blockhash/feePayer before signing.
|
|
772
|
+
* @param wallet - Wallet to sign with; defaults to this handler's configured wallet.
|
|
773
|
+
* @param commitment - Unused directly here (accepted for interface symmetry with `TxSender.send`-style callers).
|
|
774
|
+
* @param recentBlockhash - Blockhash to apply to every transaction in `txsMap`; if omitted, resolved via `getLatestBlockhashForTransaction`.
|
|
775
|
+
* @returns `{ signedTxMap, signedTxData }` — see `getSignedTransactionMap`.
|
|
776
|
+
* @throws Error if no blockhash could be resolved.
|
|
689
777
|
*/
|
|
690
778
|
public async getPreparedAndSignedLegacyTransactionMap<
|
|
691
779
|
T extends Record<string, Transaction | undefined>,
|
|
@@ -714,11 +802,16 @@ export class TxHandler {
|
|
|
714
802
|
}
|
|
715
803
|
|
|
716
804
|
/**
|
|
717
|
-
* Get a map of signed transactions from an array of transactions to sign.
|
|
718
|
-
*
|
|
719
|
-
*
|
|
720
|
-
* @param
|
|
721
|
-
*
|
|
805
|
+
* Get a map of signed transactions from an array of transactions to sign. Signs all non-`undefined`
|
|
806
|
+
* entries in a single `wallet.signAllTransactions` batch (one wallet approval for the whole map,
|
|
807
|
+
* where the wallet supports it) rather than one signature request per transaction.
|
|
808
|
+
* @param txsToSignMap - Map of key to `Transaction`/`VersionedTransaction` (or `undefined`,
|
|
809
|
+
* passed through as `undefined` in the result rather than being signed).
|
|
810
|
+
* @param wallet - Wallet to sign with; defaults to this handler's configured wallet.
|
|
811
|
+
* @returns `signedTxMap` — same keys as the input, with each defined entry replaced by its
|
|
812
|
+
* signed transaction; and `signedTxData` — the per-transaction signature/blockhash metadata
|
|
813
|
+
* (with `lastValidBlockHeight` if this handler was configured with
|
|
814
|
+
* `returnBlockHeightsWithSignedTxCallbackData`), also passed to `onSignedCb` if configured.
|
|
722
815
|
*/
|
|
723
816
|
public async getSignedTransactionMap<
|
|
724
817
|
T extends Record<string, Transaction | VersionedTransaction | undefined>,
|
|
@@ -788,8 +881,8 @@ export class TxHandler {
|
|
|
788
881
|
|
|
789
882
|
/**
|
|
790
883
|
* Accepts multiple instructions and builds a transaction for each. Prevents needing to spam RPC with requests for the same blockhash.
|
|
791
|
-
* @param props
|
|
792
|
-
* @returns
|
|
884
|
+
* @param props - Shared `TxBuildingProps` (minus `instructions`) plus a named map of instruction(s) per output transaction.
|
|
885
|
+
* @returns A map with the same keys as `props.instructionsMap`, each value the corresponding built transaction.
|
|
793
886
|
*/
|
|
794
887
|
public async buildTransactionsMap<
|
|
795
888
|
T extends Record<string, TransactionInstruction | TransactionInstruction[]>,
|
|
@@ -814,8 +907,11 @@ export class TxHandler {
|
|
|
814
907
|
|
|
815
908
|
/**
|
|
816
909
|
* Builds and signs transactions from a given array of instructions for multiple transactions.
|
|
817
|
-
*
|
|
818
|
-
*
|
|
910
|
+
* Builds every transaction first (`buildTransactionsMap`), then signs them all in one batch —
|
|
911
|
+
* via `getPreparedAndSignedLegacyTransactionMap` for `'legacy'` `txVersion`, otherwise
|
|
912
|
+
* `getSignedTransactionMap`.
|
|
913
|
+
* @param props - Shared `TxBuildingProps` (minus `instructions`) plus a named map of instruction(s) per output transaction.
|
|
914
|
+
* @returns `{ signedTxMap, signedTxData }` keyed the same as `props.instructionsMap`; see `getSignedTransactionMap`.
|
|
819
915
|
*/
|
|
820
916
|
public async buildAndSignTransactionMap<
|
|
821
917
|
T extends Record<string, TransactionInstruction | TransactionInstruction[]>,
|
|
@@ -837,6 +933,21 @@ export class TxHandler {
|
|
|
837
933
|
return preppedTransactions;
|
|
838
934
|
}
|
|
839
935
|
|
|
936
|
+
/**
|
|
937
|
+
* Greedily includes as many `optionalInstructions` (e.g. oracle-crank instructions) as fit
|
|
938
|
+
* alongside `txBuildingProps.instructions` under `MAX_TX_BYTE_SIZE`, then simulates the result;
|
|
939
|
+
* if simulation fails, falls back to simulating with only the base instructions (optional ones
|
|
940
|
+
* dropped entirely) rather than trying to isolate which optional instruction caused the failure.
|
|
941
|
+
* @param txBuildingProps - Build props whose `instructions` are the required (non-optional) instructions.
|
|
942
|
+
* @param optionalInstructions - Extra instructions to include only if they fit; prepended
|
|
943
|
+
* ahead of the base instructions and trimmed one-by-one from the front if the combined size
|
|
944
|
+
* exceeds `MAX_TX_BYTE_SIZE`. Defaults to none, in which case this is a no-op passthrough.
|
|
945
|
+
* @param versionedTransaction - Whether to size the candidate transaction as versioned (v0) or legacy; defaults to `true`.
|
|
946
|
+
* @param addressLookupTables - Lookup tables credited toward the size calculation; defaults to none.
|
|
947
|
+
* @returns A tuple of `[instructionsActuallyUsed, simulationResult]` — `instructionsActuallyUsed`
|
|
948
|
+
* includes the optional instructions only if the combined simulation succeeded; `simulationResult`
|
|
949
|
+
* is `undefined` only when `optionalInstructions` was empty (no simulation was needed).
|
|
950
|
+
*/
|
|
840
951
|
public async simulateAndCalculateInstructions(
|
|
841
952
|
txBuildingProps: TxBuildingProps,
|
|
842
953
|
optionalInstructions: TransactionInstruction[] = [],
|
|
@@ -17,6 +17,10 @@ type TransactionBuildingProps = {
|
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* This class is responsible for running through a "processing" pipeline for a base transaction, to adjust the standard transaction parameters based on a given configuration.
|
|
20
|
+
*
|
|
21
|
+
* Currently the only pipeline step is simulation-based compute unit resolution: build the
|
|
22
|
+
* transaction with a max compute-unit budget, simulate it, and replace the compute-unit limit
|
|
23
|
+
* (and optionally the compute-unit price) with values derived from actual simulated usage.
|
|
20
24
|
*/
|
|
21
25
|
export class TransactionParamProcessor {
|
|
22
26
|
private static async getComputeUnitsFromSim(
|
|
@@ -29,6 +33,24 @@ export class TransactionParamProcessor {
|
|
|
29
33
|
return undefined;
|
|
30
34
|
}
|
|
31
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Determines a compute-unit limit to use for a transaction by simulating it (or reusing a
|
|
38
|
+
* pre-supplied simulation), applying `bufferMultiplier` to the actually-consumed units, and
|
|
39
|
+
* clamping the result to at most `MAX_COMPUTE_UNITS` (1,400,000). Simulation runs with
|
|
40
|
+
* `replaceRecentBlockhash: true` to avoid spurious `blockHashNotFound` failures from an
|
|
41
|
+
* already-stale blockhash on the transaction being sized. Never throws: any error (including
|
|
42
|
+
* a simulation error result) is caught and reported via the `success: false` return.
|
|
43
|
+
* @param tx - Transaction to simulate (ignored if `simulatedTx` is supplied instead).
|
|
44
|
+
* @param connection - RPC connection used to simulate, if `simulatedTx` isn't provided.
|
|
45
|
+
* @param bufferMultiplier - Multiplier applied to the raw consumed compute units before
|
|
46
|
+
* clamping (e.g. `1.2` for a 20% buffer) — mandatory to force callers to account for
|
|
47
|
+
* simulated CU counts being an imperfect predictor of the real on-chain cost.
|
|
48
|
+
* @param lowerBoundCu - If provided, the result is floored at `min(lowerBoundCu, MAX_COMPUTE_UNITS)`.
|
|
49
|
+
* @param simulatedTx - A pre-computed simulation result to reuse instead of simulating `tx` again.
|
|
50
|
+
* @returns `{ success: true, computeUnits }` with the buffered/clamped compute-unit limit on
|
|
51
|
+
* success, or `{ success: false, computeUnits: undefined }` if simulation failed or returned no
|
|
52
|
+
* `unitsConsumed`.
|
|
53
|
+
*/
|
|
32
54
|
public static async getTxSimComputeUnits(
|
|
33
55
|
tx: VersionedTransaction,
|
|
34
56
|
connection: Connection,
|
|
@@ -93,6 +115,31 @@ export class TransactionParamProcessor {
|
|
|
93
115
|
}
|
|
94
116
|
}
|
|
95
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Runs the configured processing steps against a base set of tx params and returns the
|
|
120
|
+
* adjusted params. If `processConfig` is empty/absent, returns `baseTxParams` unchanged
|
|
121
|
+
* without building or simulating anything.
|
|
122
|
+
*
|
|
123
|
+
* When `processConfig.useSimulatedComputeUnits` is set: rebuilds the transaction (via
|
|
124
|
+
* `txBuilder`) with `computeUnits` forced to `MAX_COMPUTE_UNITS` so simulation isn't
|
|
125
|
+
* constrained by an under-sized limit, simulates it, and — on success — replaces
|
|
126
|
+
* `computeUnits` with the result of `getTxSimComputeUnits` (failure leaves the original
|
|
127
|
+
* `baseTxParams.computeUnits` untouched, it does not throw).
|
|
128
|
+
*
|
|
129
|
+
* When additionally `processConfig.useSimulatedComputeUnitsForCUPriceCalculation` is set:
|
|
130
|
+
* derives `computeUnitsPrice` from the simulated `computeUnits` via
|
|
131
|
+
* `processConfig.getCUPriceFromComputeUnits`.
|
|
132
|
+
* @param props.baseTxParams - Starting compute-unit limit/price to adjust.
|
|
133
|
+
* @param props.processConfig - Which processing steps to run (see `ProcessingTxParams`).
|
|
134
|
+
* @param props.processParams.connection - RPC connection used for simulation.
|
|
135
|
+
* @param props.processParams.simulatedTx - Pre-computed simulation result to reuse instead of simulating again.
|
|
136
|
+
* @param props.txBuilder - Builds a `VersionedTransaction` from a given `BaseTxParams`, used to
|
|
137
|
+
* produce the transaction that gets simulated.
|
|
138
|
+
* @returns The adjusted `BaseTxParams`.
|
|
139
|
+
* @throws Error if `useSimulatedComputeUnitsForCUPriceCalculation` is set without
|
|
140
|
+
* `useSimulatedComputeUnits`, without `getCUPriceFromComputeUnits`, or if the simulated compute
|
|
141
|
+
* units are unavailable (simulation failed).
|
|
142
|
+
*/
|
|
96
143
|
static async process(props: {
|
|
97
144
|
baseTxParams: BaseTxParams;
|
|
98
145
|
processConfig: ProcessingTxParams;
|
package/src/tx/types.ts
CHANGED
|
@@ -10,20 +10,34 @@ import {
|
|
|
10
10
|
} from '@solana/web3.js';
|
|
11
11
|
import { IWallet } from '../types';
|
|
12
12
|
|
|
13
|
+
/** How a `TxSender` implementation waits for a transaction to confirm. */
|
|
13
14
|
export enum ConfirmationStrategy {
|
|
15
|
+
/** Confirm via an RPC websocket `onSignature` subscription only. */
|
|
14
16
|
WebSocket = 'websocket',
|
|
17
|
+
/** Confirm by polling `getSignatureStatuses` only. */
|
|
15
18
|
Polling = 'polling',
|
|
19
|
+
/** Race a websocket subscription against polling and resolve on whichever confirms first. */
|
|
16
20
|
Combo = 'combo',
|
|
17
21
|
}
|
|
18
22
|
|
|
23
|
+
/** A landed transaction's signature plus the slot it was confirmed at (`undefined` if the slot wasn't available). */
|
|
19
24
|
export type TxSigAndSlot = {
|
|
20
25
|
txSig: TransactionSignature;
|
|
21
26
|
slot: number | undefined;
|
|
22
27
|
};
|
|
23
28
|
|
|
29
|
+
/** Common interface implemented by every transaction-sending strategy (`BaseTxSender` and its subclasses). */
|
|
24
30
|
export interface TxSender {
|
|
25
31
|
wallet: IWallet;
|
|
26
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Signs (unless `preSigned`), sends, and confirms a legacy `Transaction`.
|
|
35
|
+
* @param tx - Transaction to send.
|
|
36
|
+
* @param additionalSigners - Extra signers to co-sign alongside the wallet.
|
|
37
|
+
* @param opts - Confirmation options overriding the sender's defaults.
|
|
38
|
+
* @param preSigned - If `true`, skip wallet signing (the transaction is already fully signed).
|
|
39
|
+
* @returns The landed transaction's signature and confirmation slot.
|
|
40
|
+
*/
|
|
27
41
|
send(
|
|
28
42
|
tx: Transaction,
|
|
29
43
|
additionalSigners?: Array<Signer>,
|
|
@@ -31,6 +45,14 @@ export interface TxSender {
|
|
|
31
45
|
preSigned?: boolean
|
|
32
46
|
): Promise<TxSigAndSlot>;
|
|
33
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Signs (unless `preSigned`), sends, and confirms a `VersionedTransaction`.
|
|
50
|
+
* @param tx - Transaction to send.
|
|
51
|
+
* @param additionalSigners - Extra signers to co-sign alongside the wallet.
|
|
52
|
+
* @param opts - Confirmation options overriding the sender's defaults.
|
|
53
|
+
* @param preSigned - If `true`, skip wallet signing (the transaction is already fully signed).
|
|
54
|
+
* @returns The landed transaction's signature and confirmation slot.
|
|
55
|
+
*/
|
|
34
56
|
sendVersionedTransaction(
|
|
35
57
|
tx: VersionedTransaction,
|
|
36
58
|
additionalSigners?: Array<Signer>,
|
|
@@ -38,6 +60,15 @@ export interface TxSender {
|
|
|
38
60
|
preSigned?: boolean
|
|
39
61
|
): Promise<TxSigAndSlot>;
|
|
40
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Builds (but does not send or sign) an unsigned `VersionedTransaction` from raw instructions.
|
|
65
|
+
* @param ixs - Instructions to include, in order.
|
|
66
|
+
* @param lookupTableAccounts - Address lookup tables to compile the message against.
|
|
67
|
+
* @param additionalSigners - Unused by `BaseTxSender` (signing happens at send time, e.g. in `sendVersionedTransaction`).
|
|
68
|
+
* @param opts - Unused by `BaseTxSender`.
|
|
69
|
+
* @param blockhash - Blockhash to compile the message with; if omitted, the sender fetches a current one.
|
|
70
|
+
* @returns The compiled, unsigned `VersionedTransaction`, not yet sent.
|
|
71
|
+
*/
|
|
41
72
|
getVersionedTransaction(
|
|
42
73
|
ixs: TransactionInstruction[],
|
|
43
74
|
lookupTableAccounts: AddressLookupTableAccount[],
|
|
@@ -46,18 +77,33 @@ export interface TxSender {
|
|
|
46
77
|
blockhash?: BlockhashWithExpiryBlockHeight
|
|
47
78
|
): Promise<VersionedTransaction>;
|
|
48
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Sends an already-serialized, already-signed transaction and confirms it.
|
|
82
|
+
* @param rawTransaction - Wire-format serialized transaction bytes.
|
|
83
|
+
* @param opts - Confirmation options.
|
|
84
|
+
* @returns The landed transaction's signature and confirmation slot.
|
|
85
|
+
*/
|
|
49
86
|
sendRawTransaction(
|
|
50
87
|
rawTransaction: Buffer | Uint8Array,
|
|
51
88
|
opts: ConfirmOptions
|
|
52
89
|
): Promise<TxSigAndSlot>;
|
|
53
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Simulates a transaction against the cluster without sending it.
|
|
93
|
+
* @param tx - Transaction to simulate.
|
|
94
|
+
* @returns `true` if the simulation succeeded (no error), `false` otherwise.
|
|
95
|
+
*/
|
|
54
96
|
simulateTransaction(tx: VersionedTransaction): Promise<boolean>;
|
|
55
97
|
|
|
98
|
+
/** Number of transactions sent by this sender that timed out waiting for confirmation. */
|
|
56
99
|
getTimeoutCount(): number;
|
|
100
|
+
/** Multiplier this sender currently recommends applying to a base priority fee, derived from recent land/timeout behavior. */
|
|
57
101
|
getSuggestedPriorityFeeMultiplier(): number;
|
|
102
|
+
/** Fraction (0-1) of recently sent transactions that landed successfully. */
|
|
58
103
|
getTxLandRate(): number;
|
|
59
104
|
}
|
|
60
105
|
|
|
106
|
+
/** Error thrown by tx senders when a transaction fails to send or confirm, carrying a stable numeric `code` (see `constants/txConstants`) alongside the message. */
|
|
61
107
|
export class TxSendError extends Error {
|
|
62
108
|
constructor(
|
|
63
109
|
public message: string,
|
package/src/tx/utils.ts
CHANGED
|
@@ -5,9 +5,16 @@ import {
|
|
|
5
5
|
VersionedTransaction,
|
|
6
6
|
} from '@solana/web3.js';
|
|
7
7
|
|
|
8
|
+
/** Maximum serialized transaction size (bytes) Solana will accept over the wire — the 1232-byte MTU-derived limit shared by legacy and versioned transactions. */
|
|
8
9
|
export const MAX_TX_BYTE_SIZE = 1232;
|
|
10
|
+
/** 4-byte magic prefix identifying velocity's native (non-Anchor) entrypoint instructions, followed by a 1-byte opcode — see `createNativeInstructionDiscriminatorBuffer`. */
|
|
9
11
|
export const NATIVE_INSTRUCTION_MAGIC_BYTES = [0xff, 0xff, 0xff, 0xff];
|
|
10
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Checks whether a transaction is a `VersionedTransaction` (v0+) rather than a legacy `Transaction`.
|
|
15
|
+
* @param tx - Transaction to check.
|
|
16
|
+
* @returns `true` if `tx` is versioned.
|
|
17
|
+
*/
|
|
11
18
|
export const isVersionedTransaction = (
|
|
12
19
|
tx: Transaction | VersionedTransaction
|
|
13
20
|
): boolean => {
|
|
@@ -18,6 +25,18 @@ export const isVersionedTransaction = (
|
|
|
18
25
|
return isVersionedTx;
|
|
19
26
|
};
|
|
20
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Estimates the serialized wire size (bytes) a transaction built from `instructions` would have,
|
|
30
|
+
* without actually building/signing it — used to decide whether instructions still fit under
|
|
31
|
+
* `MAX_TX_BYTE_SIZE` before committing to a blockhash/signature. Accounts for account
|
|
32
|
+
* deduplication and, for versioned transactions, the byte savings from any accounts resolvable via
|
|
33
|
+
* `addressLookupTables`.
|
|
34
|
+
* @param instructions - Instructions the transaction would contain.
|
|
35
|
+
* @param versionedTransaction - Whether to size as a v0 `VersionedTransaction` (includes the
|
|
36
|
+
* version byte and lookup-table address/index overhead) or a legacy `Transaction`; defaults to `true`.
|
|
37
|
+
* @param addressLookupTables - Lookup tables to credit toward reducing the static account-keys list.
|
|
38
|
+
* @returns The estimated total transaction size in bytes.
|
|
39
|
+
*/
|
|
21
40
|
export const getSizeOfTransaction = (
|
|
22
41
|
instructions: TransactionInstruction[],
|
|
23
42
|
versionedTransaction = true,
|
|
@@ -97,6 +116,13 @@ function getSizeOfCompressedU16(n: number) {
|
|
|
97
116
|
return 1 + Number(n >= 128) + Number(n >= 16384);
|
|
98
117
|
}
|
|
99
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Builds the 5-byte instruction-data prefix for velocity's native (non-Anchor) entrypoint:
|
|
121
|
+
* `NATIVE_INSTRUCTION_MAGIC_BYTES` (`[0xFF, 0xFF, 0xFF, 0xFF]`) followed by a 1-byte opcode. Used
|
|
122
|
+
* for high-frequency keeper instructions that bypass Anchor's instruction-dispatch overhead.
|
|
123
|
+
* @param discriminator - The native instruction's opcode byte.
|
|
124
|
+
* @returns The 5-byte discriminator buffer to prepend to the instruction's data.
|
|
125
|
+
*/
|
|
100
126
|
export function createNativeInstructionDiscriminatorBuffer(
|
|
101
127
|
discriminator: number
|
|
102
128
|
): Uint8Array {
|