@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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
# @velocity-exchange/sdk
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#197](https://github.com/velocity-exchange/velocity-v1/pull/197) [`900c07d`](https://github.com/velocity-exchange/velocity-v1/commit/900c07d9da7e106c82fbe65b3d92226d090bdee9) Thanks [@jordy25519](https://github.com/jordy25519)! - Attach the taker's `RevenueShareEscrow` on perp fills for referred takers. `getFillPerpOrderIx` gains an optional `takerIsReferred` flag; when set (or when the order carries a builder code) the deterministic escrow PDA is added to the fill. This mirrors the on-chain fill gate, which reads `UserStats.referrerStatus` (the `BuilderReferral` bit), so referred takers' fills no longer revert with `UnableToLoadRevenueShareAccount`. `ReferrerMap` gains `isBuilderReferral(authority)` and `mustGetIsBuilderReferral(authority)`, sourcing the bit from the UserStats fetch it already performs.
|
|
8
|
+
|
|
9
|
+
- [#189](https://github.com/velocity-exchange/velocity-v1/pull/189) [`8df28ac`](https://github.com/velocity-exchange/velocity-v1/commit/8df28ac6d113760ae4a8cdff4ad438cb25efce2c) Thanks [@ChesterSim](https://github.com/ChesterSim)! - Program↔SDK parity fixes from the 2026-07-02 audit: renamed deprecated Switchboard
|
|
10
|
+
OracleSource keys to match the IDL (fixes a decode crash on affected markets), applied
|
|
11
|
+
the $100 initial-margin unrealized-PnL cap, standardized auction/limit prices to order
|
|
12
|
+
tick size across the DLOB, isolated-position handling in bankruptcy/liquidation math,
|
|
13
|
+
corrected MM-oracle validity gating, referrer_status memcmp offset, PerpOperation and
|
|
14
|
+
OrderBitFlag bit values, wired five missing event records into EventSubscriber, fixed
|
|
15
|
+
withdraw-limit divisors, multi-pool margin segregation, referee/builder fee estimation,
|
|
16
|
+
and added AdminClient.updatePauseAdmin plus admin CLI commands for pause-admin rotation
|
|
17
|
+
and fee-pool transfers. Also fixed withdrawFromIsolatedPerpPosition's withdraw-all path:
|
|
18
|
+
it substituted the MIN_I64 sentinel into the instruction's unsigned u64 amount (serializing
|
|
19
|
+
as 2^63, so full withdrawals always failed on-chain with InsufficientCollateral); it now
|
|
20
|
+
clamps the request to the position's deposit plus claimable PnL.
|
|
21
|
+
|
|
22
|
+
Follow-up completeness fixes: DLOBSubscriber.getL2/getL3 (and the dlob-server publisher) now
|
|
23
|
+
thread orderTickSize so the public book view is tick-standardized like on-chain; added
|
|
24
|
+
hasIsolatedMarginBankrupt and wired isolated-only bankruptcy detection into keeper resolution
|
|
25
|
+
(isIsolatedPositionBankrupt now guards against non-isolated indices); getMarketFees applies the
|
|
26
|
+
referee discount and calculateFeeForQuoteAmount accepts builder params so both public fee-prediction
|
|
27
|
+
entry points match on-chain; and isFallbackAvailableLiquiditySource now fully mirrors
|
|
28
|
+
amm_fill_gates_ok, adding the market-drawdown and MM-vs-exchange oracle volatility gates.
|
|
29
|
+
|
|
30
|
+
Low-risk parity follow-ups: MarginCategory now includes 'Fill' as a single shared type, handled
|
|
31
|
+
across perp margin ratio / unrealized-asset-weight and spot asset/liability weights (the
|
|
32
|
+
integer-averaged midpoint of initial and maintenance, mirroring get_margin_ratio /
|
|
33
|
+
get_asset_weight / get_liability_weight) instead of throwing or returning undefined; the
|
|
34
|
+
worst-tier taker-fee estimate in calculateEntriesEffectOnFreeCollateral now ceil-divides to match
|
|
35
|
+
calculate_taker_fee; MM-oracle validity is computed with the raw exchange confidence (matching
|
|
36
|
+
get_mm_oracle_price_data) while the returned MM price keeps its diff-adjusted confidence; and
|
|
37
|
+
corrected the OracleSourceNum doc (it is an SDK-internal oracle-id encoding, not the on-chain
|
|
38
|
+
Borsh discriminant).
|
|
39
|
+
|
|
40
|
+
Visible/breaking API changes in this release: `OracleSource.SWITCHBOARD` /
|
|
41
|
+
`OracleSource.SWITCHBOARD_ON_DEMAND` (and the corresponding `OracleSourceNum` entries) are renamed
|
|
42
|
+
to `DEPRECATED_SWITCHBOARD` / `DEPRECATED_SWITCHBOARD_ON_DEMAND` with no aliases kept for the old
|
|
43
|
+
names; `ContractType.FUTURE` is renamed to `DEPRECATED_FUTURE`; and `FeatureBitFlags.BUILDER_REFERRAL`
|
|
44
|
+
is removed outright, since no such on-chain flag exists. Separately, `getLimitPrice` gained a new
|
|
45
|
+
optional trailing `tickSize` parameter — the existing `fallbackPrice` parameter stays in its original
|
|
46
|
+
4th position, so old 4-argument call sites keep working unchanged.
|
|
47
|
+
|
|
48
|
+
### Patch Changes
|
|
49
|
+
|
|
50
|
+
- [#199](https://github.com/velocity-exchange/velocity-v1/pull/199) [`dff8a47`](https://github.com/velocity-exchange/velocity-v1/commit/dff8a4754f6b736fed330b2ab4fa5685db4f8159) Thanks [@jordy25519](https://github.com/jordy25519)! - Add BTC-PERP (index 1) and ETH-PERP (index 2) to `DevnetPerpMarkets`, reflecting the two Pyth-Lazer perp markets re-created on devnet. ETH-PERP uses lazer feed 2 (real ETH price feed).
|
|
51
|
+
|
|
52
|
+
- [#193](https://github.com/velocity-exchange/velocity-v1/pull/193) [`bafd699`](https://github.com/velocity-exchange/velocity-v1/commit/bafd6990f8322f232d2f0d17042beb0e9c567164) Thanks [@jordy25519](https://github.com/jordy25519)! - Remove the stale `FettyRIP` (marketIndex 2) entry from `DevnetPerpMarkets`. That perp market was deleted on-chain, but the hand-maintained devnet config still listed it, so consumers that enumerate all perp markets (keeper-bots-v2, dlob-server) crashed with `Perp market config for 2 not found` when resolving the nonexistent market. The devnet config now mirrors on-chain state (SOL-PERP at index 0 only).
|
|
53
|
+
|
|
3
54
|
## 0.3.0
|
|
4
55
|
|
|
5
56
|
### Minor Changes
|
|
@@ -15,15 +15,33 @@ export declare class BasicUserAccountSubscriber implements UserAccountSubscriber
|
|
|
15
15
|
callbackId?: string;
|
|
16
16
|
errorCallbackId?: string;
|
|
17
17
|
user?: DataAndSlot<UserAccount>;
|
|
18
|
+
/**
|
|
19
|
+
* @param userAccountPublicKey Address of the `UserAccount` this subscriber represents (not fetched — used only for identity).
|
|
20
|
+
* @param data Optional decoded account data to seed with; if omitted, `getUserAccountAndSlot()` returns undefined until `updateData` is called.
|
|
21
|
+
* @param slot Slot `data` was observed at; defaults to 0 (the seeded sentinel) if omitted.
|
|
22
|
+
*/
|
|
18
23
|
constructor(userAccountPublicKey: PublicKey, data?: UserAccount, slot?: number);
|
|
24
|
+
/** No-op; this subscriber never performs network I/O. Always resolves `true` since `isSubscribed` is already `true` from construction. */
|
|
19
25
|
subscribe(_userAccount?: UserAccount): Promise<boolean>;
|
|
20
26
|
addToAccountLoader(): Promise<void>;
|
|
27
|
+
/** No-op; this subscriber never fetches. Data only changes via `updateData`. */
|
|
21
28
|
fetch(): Promise<void>;
|
|
29
|
+
/** Type predicate: true once `user` has been seeded or set via `updateData`, narrowing `this.user` to non-undefined. */
|
|
22
30
|
doesAccountExist(): this is {
|
|
23
31
|
user: DataAndSlot<UserAccount>;
|
|
24
32
|
};
|
|
33
|
+
/** No-op; there is no live subscription to tear down. */
|
|
25
34
|
unsubscribe(): Promise<void>;
|
|
35
|
+
/** No-op; this subscriber is always considered subscribed and never throws `NotSubscribedError`. */
|
|
26
36
|
assertIsSubscribed(): void;
|
|
37
|
+
/** Returns the currently cached data/slot, or undefined if never seeded/updated. Never throws (unlike other implementations, this subscriber has no "not subscribed" state). */
|
|
27
38
|
getUserAccountAndSlot(): DataAndSlot<UserAccount> | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Applies an externally-obtained account update if `slot` is not older than the currently
|
|
41
|
+
* cached slot, emitting `userAccountUpdate`/`update` on acceptance. This is the only way this
|
|
42
|
+
* subscriber's data changes after construction.
|
|
43
|
+
* @param userAccount Decoded account data to apply.
|
|
44
|
+
* @param slot Slot the data was observed at.
|
|
45
|
+
*/
|
|
28
46
|
updateData(userAccount: UserAccount, slot: number): void;
|
|
29
47
|
}
|
|
@@ -7,6 +7,11 @@ const events_1 = require("events");
|
|
|
7
7
|
* data during initialization and will not fetch or subscribe to updates.
|
|
8
8
|
*/
|
|
9
9
|
class BasicUserAccountSubscriber {
|
|
10
|
+
/**
|
|
11
|
+
* @param userAccountPublicKey Address of the `UserAccount` this subscriber represents (not fetched — used only for identity).
|
|
12
|
+
* @param data Optional decoded account data to seed with; if omitted, `getUserAccountAndSlot()` returns undefined until `updateData` is called.
|
|
13
|
+
* @param slot Slot `data` was observed at; defaults to 0 (the seeded sentinel) if omitted.
|
|
14
|
+
*/
|
|
10
15
|
constructor(userAccountPublicKey, data, slot) {
|
|
11
16
|
this.isSubscribed = true;
|
|
12
17
|
this.eventEmitter = new events_1.EventEmitter();
|
|
@@ -15,19 +20,32 @@ class BasicUserAccountSubscriber {
|
|
|
15
20
|
// slot (0 = oldest-possible sentinel, overwritten by the first real fetch).
|
|
16
21
|
this.user = data ? { data, slot: slot !== null && slot !== void 0 ? slot : 0 } : undefined;
|
|
17
22
|
}
|
|
23
|
+
/** No-op; this subscriber never performs network I/O. Always resolves `true` since `isSubscribed` is already `true` from construction. */
|
|
18
24
|
async subscribe(_userAccount) {
|
|
19
25
|
return true;
|
|
20
26
|
}
|
|
21
27
|
async addToAccountLoader() { }
|
|
28
|
+
/** No-op; this subscriber never fetches. Data only changes via `updateData`. */
|
|
22
29
|
async fetch() { }
|
|
30
|
+
/** Type predicate: true once `user` has been seeded or set via `updateData`, narrowing `this.user` to non-undefined. */
|
|
23
31
|
doesAccountExist() {
|
|
24
32
|
return this.user !== undefined;
|
|
25
33
|
}
|
|
34
|
+
/** No-op; there is no live subscription to tear down. */
|
|
26
35
|
async unsubscribe() { }
|
|
36
|
+
/** No-op; this subscriber is always considered subscribed and never throws `NotSubscribedError`. */
|
|
27
37
|
assertIsSubscribed() { }
|
|
38
|
+
/** Returns the currently cached data/slot, or undefined if never seeded/updated. Never throws (unlike other implementations, this subscriber has no "not subscribed" state). */
|
|
28
39
|
getUserAccountAndSlot() {
|
|
29
40
|
return this.user;
|
|
30
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Applies an externally-obtained account update if `slot` is not older than the currently
|
|
44
|
+
* cached slot, emitting `userAccountUpdate`/`update` on acceptance. This is the only way this
|
|
45
|
+
* subscriber's data changes after construction.
|
|
46
|
+
* @param userAccount Decoded account data to apply.
|
|
47
|
+
* @param slot Slot the data was observed at.
|
|
48
|
+
*/
|
|
31
49
|
updateData(userAccount, slot) {
|
|
32
50
|
if (!this.user || slot >= this.user.slot) {
|
|
33
51
|
this.user = { data: userAccount, slot };
|
|
@@ -15,15 +15,33 @@ export declare class BasicUserStatsAccountSubscriber implements UserStatsAccount
|
|
|
15
15
|
callbackId?: string;
|
|
16
16
|
errorCallbackId?: string;
|
|
17
17
|
userStats?: DataAndSlot<UserStatsAccount>;
|
|
18
|
+
/**
|
|
19
|
+
* @param userStatsAccountPublicKey Address of the `UserStatsAccount` this subscriber represents (not fetched — used only for identity).
|
|
20
|
+
* @param data Optional decoded account data to seed with; if omitted, `getUserStatsAccountAndSlot()` returns undefined until `updateData` is called.
|
|
21
|
+
* @param slot Slot `data` was observed at; defaults to 0 (the seeded sentinel) if omitted.
|
|
22
|
+
*/
|
|
18
23
|
constructor(userStatsAccountPublicKey: PublicKey, data?: UserStatsAccount, slot?: number);
|
|
24
|
+
/** No-op; this subscriber never performs network I/O. Always resolves `true` since `isSubscribed` is already `true` from construction. */
|
|
19
25
|
subscribe(_userStatsAccount?: UserStatsAccount): Promise<boolean>;
|
|
20
26
|
addToAccountLoader(): Promise<void>;
|
|
27
|
+
/** No-op; this subscriber never fetches. Data only changes via `updateData`. */
|
|
21
28
|
fetch(): Promise<void>;
|
|
29
|
+
/** Type predicate: true once `userStats` has been seeded or set via `updateData`, narrowing `this.userStats` to non-undefined. */
|
|
22
30
|
doesAccountExist(): this is {
|
|
23
31
|
userStats: DataAndSlot<UserStatsAccount>;
|
|
24
32
|
};
|
|
33
|
+
/** No-op; there is no live subscription to tear down. */
|
|
25
34
|
unsubscribe(): Promise<void>;
|
|
35
|
+
/** No-op; this subscriber is always considered subscribed and never throws `NotSubscribedError`. */
|
|
26
36
|
assertIsSubscribed(): void;
|
|
37
|
+
/** Returns the currently cached data/slot, or undefined if never seeded/updated. Never throws (unlike other implementations, this subscriber has no "not subscribed" state). */
|
|
27
38
|
getUserStatsAccountAndSlot(): DataAndSlot<UserStatsAccount> | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Applies an externally-obtained account update if `slot` is not older than the currently
|
|
41
|
+
* cached slot, emitting `userStatsAccountUpdate`/`update` on acceptance. This is the only way
|
|
42
|
+
* this subscriber's data changes after construction.
|
|
43
|
+
* @param userStatsAccount Decoded account data to apply.
|
|
44
|
+
* @param slot Slot the data was observed at.
|
|
45
|
+
*/
|
|
28
46
|
updateData(userStatsAccount: UserStatsAccount, slot: number): void;
|
|
29
47
|
}
|
|
@@ -7,6 +7,11 @@ const events_1 = require("events");
|
|
|
7
7
|
* data during initialization and will not fetch or subscribe to updates.
|
|
8
8
|
*/
|
|
9
9
|
class BasicUserStatsAccountSubscriber {
|
|
10
|
+
/**
|
|
11
|
+
* @param userStatsAccountPublicKey Address of the `UserStatsAccount` this subscriber represents (not fetched — used only for identity).
|
|
12
|
+
* @param data Optional decoded account data to seed with; if omitted, `getUserStatsAccountAndSlot()` returns undefined until `updateData` is called.
|
|
13
|
+
* @param slot Slot `data` was observed at; defaults to 0 (the seeded sentinel) if omitted.
|
|
14
|
+
*/
|
|
10
15
|
constructor(userStatsAccountPublicKey, data, slot) {
|
|
11
16
|
this.isSubscribed = true;
|
|
12
17
|
this.eventEmitter = new events_1.EventEmitter();
|
|
@@ -15,19 +20,32 @@ class BasicUserStatsAccountSubscriber {
|
|
|
15
20
|
// slot (0 = oldest-possible sentinel, overwritten by the first real fetch).
|
|
16
21
|
this.userStats = data ? { data, slot: slot !== null && slot !== void 0 ? slot : 0 } : undefined;
|
|
17
22
|
}
|
|
23
|
+
/** No-op; this subscriber never performs network I/O. Always resolves `true` since `isSubscribed` is already `true` from construction. */
|
|
18
24
|
async subscribe(_userStatsAccount) {
|
|
19
25
|
return true;
|
|
20
26
|
}
|
|
21
27
|
async addToAccountLoader() { }
|
|
28
|
+
/** No-op; this subscriber never fetches. Data only changes via `updateData`. */
|
|
22
29
|
async fetch() { }
|
|
30
|
+
/** Type predicate: true once `userStats` has been seeded or set via `updateData`, narrowing `this.userStats` to non-undefined. */
|
|
23
31
|
doesAccountExist() {
|
|
24
32
|
return this.userStats !== undefined;
|
|
25
33
|
}
|
|
34
|
+
/** No-op; there is no live subscription to tear down. */
|
|
26
35
|
async unsubscribe() { }
|
|
36
|
+
/** No-op; this subscriber is always considered subscribed and never throws `NotSubscribedError`. */
|
|
27
37
|
assertIsSubscribed() { }
|
|
38
|
+
/** Returns the currently cached data/slot, or undefined if never seeded/updated. Never throws (unlike other implementations, this subscriber has no "not subscribed" state). */
|
|
28
39
|
getUserStatsAccountAndSlot() {
|
|
29
40
|
return this.userStats;
|
|
30
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Applies an externally-obtained account update if `slot` is not older than the currently
|
|
44
|
+
* cached slot, emitting `userStatsAccountUpdate`/`update` on acceptance. This is the only way
|
|
45
|
+
* this subscriber's data changes after construction.
|
|
46
|
+
* @param userStatsAccount Decoded account data to apply.
|
|
47
|
+
* @param slot Slot the data was observed at.
|
|
48
|
+
*/
|
|
31
49
|
updateData(userStatsAccount, slot) {
|
|
32
50
|
if (!this.userStats || slot >= this.userStats.slot) {
|
|
33
51
|
this.userStats = { data: userStatsAccount, slot };
|
|
@@ -3,10 +3,22 @@
|
|
|
3
3
|
import { Commitment, PublicKey } from '@solana/web3.js';
|
|
4
4
|
import { BufferAndSlot } from './types';
|
|
5
5
|
import { Connection } from '../bankrun/bankrunConnection';
|
|
6
|
+
/** An account registered with a `BulkAccountLoader`, along with every callback subscribed to its updates (keyed by callback id). */
|
|
6
7
|
export type AccountToLoad = {
|
|
7
8
|
publicKey: PublicKey;
|
|
8
9
|
callbacks: Map<string, (buffer: Buffer, slot: number) => void>;
|
|
9
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Batches many accounts behind a single periodic `getMultipleAccounts` RPC poll instead of one
|
|
13
|
+
* WebSocket subscription per account. Multiple independent callbacks (e.g. from different
|
|
14
|
+
* `PollingUserAccountSubscriber`/`PollingVelocityClientAccountSubscriber` instances) can register
|
|
15
|
+
* against the same `publicKey`; polling starts automatically on the first `addAccount` and stops
|
|
16
|
+
* when the last callback for the last account is removed. A buffer is only re-delivered to
|
|
17
|
+
* callbacks when its slot is not older than the last-seen slot for that account and its bytes
|
|
18
|
+
* actually changed, so a callback never observes a stale or duplicate update. `load()` calls are
|
|
19
|
+
* coalesced: concurrent callers share one in-flight RPC batch rather than issuing redundant
|
|
20
|
+
* requests.
|
|
21
|
+
*/
|
|
10
22
|
export declare class BulkAccountLoader {
|
|
11
23
|
connection: Connection;
|
|
12
24
|
commitment: Commitment;
|
|
@@ -19,19 +31,59 @@ export declare class BulkAccountLoader {
|
|
|
19
31
|
private loadPromiseResolver;
|
|
20
32
|
lastTimeLoadingPromiseCleared: number;
|
|
21
33
|
mostRecentSlot: number;
|
|
34
|
+
/**
|
|
35
|
+
* @param connection Connection (or bankrun-compatible shim) used for the batched `getMultipleAccounts` polls.
|
|
36
|
+
* @param commitment Commitment level applied to every poll.
|
|
37
|
+
* @param pollingFrequency Poll interval in ms; `0` disables automatic polling (`startPolling` becomes a no-op), useful when the loader is driven manually via `load()`.
|
|
38
|
+
*/
|
|
22
39
|
constructor(connection: Connection, commitment: Commitment, pollingFrequency: number);
|
|
40
|
+
/**
|
|
41
|
+
* Registers a callback to be invoked whenever `publicKey`'s account data changes on a poll.
|
|
42
|
+
* Multiple callbacks may be registered for the same account. Starts polling automatically if
|
|
43
|
+
* this is the loader's first account. Awaits any in-flight `load()` before returning so a
|
|
44
|
+
* caller can immediately follow with its own `load()` without racing the poll interval.
|
|
45
|
+
* @param publicKey Account to track.
|
|
46
|
+
* @param callback Invoked with the raw account buffer and the slot it was fetched at whenever the buffer changes at a non-decreasing slot.
|
|
47
|
+
* @returns A callback id to pass to `removeAccount` later.
|
|
48
|
+
*/
|
|
23
49
|
addAccount(publicKey: PublicKey, callback: (buffer: Buffer, slot: number) => void): Promise<string>;
|
|
50
|
+
/**
|
|
51
|
+
* Unregisters a callback previously returned by `addAccount`. Once an account has no
|
|
52
|
+
* remaining callbacks, its cached buffer/slot is dropped and it stops being polled; if no
|
|
53
|
+
* accounts remain at all, polling stops entirely. A no-op if `callbackId` is undefined.
|
|
54
|
+
* @param publicKey Account the callback was registered against.
|
|
55
|
+
* @param callbackId Id returned by `addAccount`.
|
|
56
|
+
*/
|
|
24
57
|
removeAccount(publicKey: PublicKey, callbackId: string | undefined): void;
|
|
58
|
+
/**
|
|
59
|
+
* Registers a callback invoked whenever a `load()` batch throws (e.g. RPC failure or timeout).
|
|
60
|
+
* The loader continues polling afterward; errors do not stop the interval.
|
|
61
|
+
* @returns A callback id to pass to `removeErrorCallbacks` later.
|
|
62
|
+
*/
|
|
25
63
|
addErrorCallbacks(callback: (error: Error) => void): string;
|
|
64
|
+
/** Unregisters an error callback previously returned by `addErrorCallbacks`. A no-op if `callbackId` is undefined. */
|
|
26
65
|
removeErrorCallbacks(callbackId: string | undefined): void;
|
|
27
66
|
chunks<T>(array: readonly T[], size: number): T[][];
|
|
67
|
+
/**
|
|
68
|
+
* Fetches every registered account in one or more chunked, concurrent `getMultipleAccounts`
|
|
69
|
+
* batches (via `loadChunk`) and dispatches changed accounts to their callbacks. Concurrent
|
|
70
|
+
* calls while a load is already in flight share that same in-flight promise rather than
|
|
71
|
+
* issuing a duplicate RPC batch, unless the previous load has been running for over a minute
|
|
72
|
+
* (treated as stuck and restarted). On failure, invokes every registered error callback
|
|
73
|
+
* instead of throwing.
|
|
74
|
+
*/
|
|
28
75
|
load(): Promise<void>;
|
|
29
76
|
loadChunk(accountsToLoadChunks: AccountToLoad[][]): Promise<void>;
|
|
30
77
|
handleAccountCallbacks(accountToLoad: AccountToLoad, buffer: Buffer | undefined, slot: number): void;
|
|
78
|
+
/** Returns the last-fetched raw buffer/slot for `publicKey`, or undefined if it has never been loaded. */
|
|
31
79
|
getBufferAndSlot(publicKey: PublicKey): BufferAndSlot | undefined;
|
|
80
|
+
/** Returns the highest slot number observed across any account fetched by this loader so far. */
|
|
32
81
|
getSlot(): number;
|
|
82
|
+
/** Starts the polling interval if not already running and `pollingFrequency !== 0`. Called automatically by `addAccount`. */
|
|
33
83
|
startPolling(): void;
|
|
84
|
+
/** Stops the polling interval, if running. Called automatically by `removeAccount` once no accounts remain. */
|
|
34
85
|
stopPolling(): void;
|
|
35
86
|
log(msg: string): void;
|
|
87
|
+
/** Restarts polling at a new interval (ms), preserving all registered accounts and callbacks. */
|
|
36
88
|
updatePollingFrequency(pollingFrequency: number): void;
|
|
37
89
|
}
|
|
@@ -5,7 +5,23 @@ const uuid_1 = require("uuid");
|
|
|
5
5
|
const promiseTimeout_1 = require("../util/promiseTimeout");
|
|
6
6
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
7
7
|
const oneMinute = 60 * 1000;
|
|
8
|
+
/**
|
|
9
|
+
* Batches many accounts behind a single periodic `getMultipleAccounts` RPC poll instead of one
|
|
10
|
+
* WebSocket subscription per account. Multiple independent callbacks (e.g. from different
|
|
11
|
+
* `PollingUserAccountSubscriber`/`PollingVelocityClientAccountSubscriber` instances) can register
|
|
12
|
+
* against the same `publicKey`; polling starts automatically on the first `addAccount` and stops
|
|
13
|
+
* when the last callback for the last account is removed. A buffer is only re-delivered to
|
|
14
|
+
* callbacks when its slot is not older than the last-seen slot for that account and its bytes
|
|
15
|
+
* actually changed, so a callback never observes a stale or duplicate update. `load()` calls are
|
|
16
|
+
* coalesced: concurrent callers share one in-flight RPC batch rather than issuing redundant
|
|
17
|
+
* requests.
|
|
18
|
+
*/
|
|
8
19
|
class BulkAccountLoader {
|
|
20
|
+
/**
|
|
21
|
+
* @param connection Connection (or bankrun-compatible shim) used for the batched `getMultipleAccounts` polls.
|
|
22
|
+
* @param commitment Commitment level applied to every poll.
|
|
23
|
+
* @param pollingFrequency Poll interval in ms; `0` disables automatic polling (`startPolling` becomes a no-op), useful when the loader is driven manually via `load()`.
|
|
24
|
+
*/
|
|
9
25
|
constructor(connection, commitment, pollingFrequency) {
|
|
10
26
|
this.accountsToLoad = new Map();
|
|
11
27
|
this.bufferAndSlotMap = new Map();
|
|
@@ -17,6 +33,15 @@ class BulkAccountLoader {
|
|
|
17
33
|
this.commitment = commitment;
|
|
18
34
|
this.pollingFrequency = pollingFrequency;
|
|
19
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Registers a callback to be invoked whenever `publicKey`'s account data changes on a poll.
|
|
38
|
+
* Multiple callbacks may be registered for the same account. Starts polling automatically if
|
|
39
|
+
* this is the loader's first account. Awaits any in-flight `load()` before returning so a
|
|
40
|
+
* caller can immediately follow with its own `load()` without racing the poll interval.
|
|
41
|
+
* @param publicKey Account to track.
|
|
42
|
+
* @param callback Invoked with the raw account buffer and the slot it was fetched at whenever the buffer changes at a non-decreasing slot.
|
|
43
|
+
* @returns A callback id to pass to `removeAccount` later.
|
|
44
|
+
*/
|
|
20
45
|
async addAccount(publicKey, callback) {
|
|
21
46
|
if (!publicKey) {
|
|
22
47
|
console.trace(`Caught adding blank publickey to bulkAccountLoader`);
|
|
@@ -43,6 +68,13 @@ class BulkAccountLoader {
|
|
|
43
68
|
await this.loadPromise;
|
|
44
69
|
return callbackId;
|
|
45
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Unregisters a callback previously returned by `addAccount`. Once an account has no
|
|
73
|
+
* remaining callbacks, its cached buffer/slot is dropped and it stops being polled; if no
|
|
74
|
+
* accounts remain at all, polling stops entirely. A no-op if `callbackId` is undefined.
|
|
75
|
+
* @param publicKey Account the callback was registered against.
|
|
76
|
+
* @param callbackId Id returned by `addAccount`.
|
|
77
|
+
*/
|
|
46
78
|
removeAccount(publicKey, callbackId) {
|
|
47
79
|
if (callbackId === undefined) {
|
|
48
80
|
return;
|
|
@@ -59,11 +91,17 @@ class BulkAccountLoader {
|
|
|
59
91
|
this.stopPolling();
|
|
60
92
|
}
|
|
61
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Registers a callback invoked whenever a `load()` batch throws (e.g. RPC failure or timeout).
|
|
96
|
+
* The loader continues polling afterward; errors do not stop the interval.
|
|
97
|
+
* @returns A callback id to pass to `removeErrorCallbacks` later.
|
|
98
|
+
*/
|
|
62
99
|
addErrorCallbacks(callback) {
|
|
63
100
|
const callbackId = (0, uuid_1.v4)();
|
|
64
101
|
this.errorCallbacks.set(callbackId, callback);
|
|
65
102
|
return callbackId;
|
|
66
103
|
}
|
|
104
|
+
/** Unregisters an error callback previously returned by `addErrorCallbacks`. A no-op if `callbackId` is undefined. */
|
|
67
105
|
removeErrorCallbacks(callbackId) {
|
|
68
106
|
if (callbackId === undefined) {
|
|
69
107
|
return;
|
|
@@ -76,6 +114,14 @@ class BulkAccountLoader {
|
|
|
76
114
|
.map((_, index) => index * size)
|
|
77
115
|
.map((begin) => array.slice(begin, begin + size));
|
|
78
116
|
}
|
|
117
|
+
/**
|
|
118
|
+
* Fetches every registered account in one or more chunked, concurrent `getMultipleAccounts`
|
|
119
|
+
* batches (via `loadChunk`) and dispatches changed accounts to their callbacks. Concurrent
|
|
120
|
+
* calls while a load is already in flight share that same in-flight promise rather than
|
|
121
|
+
* issuing a duplicate RPC batch, unless the previous load has been running for over a minute
|
|
122
|
+
* (treated as stuck and restarted). On failure, invokes every registered error callback
|
|
123
|
+
* instead of throwing.
|
|
124
|
+
*/
|
|
79
125
|
async load() {
|
|
80
126
|
if (this.loadPromise) {
|
|
81
127
|
const now = Date.now();
|
|
@@ -200,12 +246,15 @@ class BulkAccountLoader {
|
|
|
200
246
|
}
|
|
201
247
|
}
|
|
202
248
|
}
|
|
249
|
+
/** Returns the last-fetched raw buffer/slot for `publicKey`, or undefined if it has never been loaded. */
|
|
203
250
|
getBufferAndSlot(publicKey) {
|
|
204
251
|
return this.bufferAndSlotMap.get(publicKey.toString());
|
|
205
252
|
}
|
|
253
|
+
/** Returns the highest slot number observed across any account fetched by this loader so far. */
|
|
206
254
|
getSlot() {
|
|
207
255
|
return this.mostRecentSlot;
|
|
208
256
|
}
|
|
257
|
+
/** Starts the polling interval if not already running and `pollingFrequency !== 0`. Called automatically by `addAccount`. */
|
|
209
258
|
startPolling() {
|
|
210
259
|
if (this.intervalId) {
|
|
211
260
|
return;
|
|
@@ -213,6 +262,7 @@ class BulkAccountLoader {
|
|
|
213
262
|
if (this.pollingFrequency !== 0)
|
|
214
263
|
this.intervalId = setInterval(this.load.bind(this), this.pollingFrequency);
|
|
215
264
|
}
|
|
265
|
+
/** Stops the polling interval, if running. Called automatically by `removeAccount` once no accounts remain. */
|
|
216
266
|
stopPolling() {
|
|
217
267
|
if (this.intervalId) {
|
|
218
268
|
clearInterval(this.intervalId);
|
|
@@ -222,6 +272,7 @@ class BulkAccountLoader {
|
|
|
222
272
|
log(msg) {
|
|
223
273
|
console.log(msg);
|
|
224
274
|
}
|
|
275
|
+
/** Restarts polling at a new interval (ms), preserving all registered accounts and callbacks. */
|
|
225
276
|
updatePollingFrequency(pollingFrequency) {
|
|
226
277
|
this.stopPolling();
|
|
227
278
|
this.pollingFrequency = pollingFrequency;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { UserStats } from '../userStats';
|
|
2
2
|
import { BulkAccountLoader } from './bulkAccountLoader';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Subscribes many `UserStats`s that share a single `BulkAccountLoader` in one batched round trip,
|
|
5
|
+
* instead of each `UserStats.subscribe()` triggering its own `addAccount`/`load()`. Registers
|
|
6
|
+
* every account's `PollingUserStatsAccountSubscriber` with the loader first, issues one `load()`
|
|
7
|
+
* to seed all of them from a single batched `getMultipleAccounts` call, and only then calls
|
|
8
|
+
* `userStat.subscribe()` (which becomes a fast no-op fetch since data is already cached). If
|
|
9
|
+
* `userStats` is empty, still calls `accountLoader.load()` so any other accounts already
|
|
10
|
+
* registered on the loader get polled.
|
|
11
|
+
* @param userStats `UserStats` instances to subscribe; each must already be constructed with a `PollingUserStatsAccountSubscriber`.
|
|
12
|
+
* @param accountLoader Shared `BulkAccountLoader` batching the underlying RPC polls.
|
|
6
13
|
*/
|
|
7
14
|
export declare function bulkPollingUserStatsSubscribe(userStats: UserStats[], accountLoader: BulkAccountLoader): Promise<void>;
|
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bulkPollingUserStatsSubscribe = void 0;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Subscribes many `UserStats`s that share a single `BulkAccountLoader` in one batched round trip,
|
|
6
|
+
* instead of each `UserStats.subscribe()` triggering its own `addAccount`/`load()`. Registers
|
|
7
|
+
* every account's `PollingUserStatsAccountSubscriber` with the loader first, issues one `load()`
|
|
8
|
+
* to seed all of them from a single batched `getMultipleAccounts` call, and only then calls
|
|
9
|
+
* `userStat.subscribe()` (which becomes a fast no-op fetch since data is already cached). If
|
|
10
|
+
* `userStats` is empty, still calls `accountLoader.load()` so any other accounts already
|
|
11
|
+
* registered on the loader get polled.
|
|
12
|
+
* @param userStats `UserStats` instances to subscribe; each must already be constructed with a `PollingUserStatsAccountSubscriber`.
|
|
13
|
+
* @param accountLoader Shared `BulkAccountLoader` batching the underlying RPC polls.
|
|
7
14
|
*/
|
|
8
15
|
async function bulkPollingUserStatsSubscribe(userStats, accountLoader) {
|
|
9
16
|
if (userStats.length === 0) {
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { User } from '../user';
|
|
2
2
|
import { BulkAccountLoader } from './bulkAccountLoader';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Subscribes many `User`s that share a single `BulkAccountLoader` in one batched round trip,
|
|
5
|
+
* instead of each `User.subscribe()` triggering its own `addAccount`/`load()`. Registers every
|
|
6
|
+
* user's `PollingUserAccountSubscriber` with the loader first, issues one `load()` to seed all of
|
|
7
|
+
* them from a single batched `getMultipleAccounts` call, and only then calls `user.subscribe()`
|
|
8
|
+
* (which becomes a fast no-op fetch since data is already cached). If `users` is empty, still
|
|
9
|
+
* calls `accountLoader.load()` so any other accounts already registered on the loader get polled.
|
|
10
|
+
* @param users Users to subscribe; each must already be constructed with a `PollingUserAccountSubscriber`.
|
|
11
|
+
* @param accountLoader Shared `BulkAccountLoader` batching the underlying RPC polls.
|
|
6
12
|
*/
|
|
7
13
|
export declare function bulkPollingUserSubscribe(users: User[], accountLoader: BulkAccountLoader): Promise<void>;
|
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.bulkPollingUserSubscribe = void 0;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Subscribes many `User`s that share a single `BulkAccountLoader` in one batched round trip,
|
|
6
|
+
* instead of each `User.subscribe()` triggering its own `addAccount`/`load()`. Registers every
|
|
7
|
+
* user's `PollingUserAccountSubscriber` with the loader first, issues one `load()` to seed all of
|
|
8
|
+
* them from a single batched `getMultipleAccounts` call, and only then calls `user.subscribe()`
|
|
9
|
+
* (which becomes a fast no-op fetch since data is already cached). If `users` is empty, still
|
|
10
|
+
* calls `accountLoader.load()` so any other accounts already registered on the loader get polled.
|
|
11
|
+
* @param users Users to subscribe; each must already be constructed with a `PollingUserAccountSubscriber`.
|
|
12
|
+
* @param accountLoader Shared `BulkAccountLoader` batching the underlying RPC polls.
|
|
7
13
|
*/
|
|
8
14
|
async function bulkPollingUserSubscribe(users, accountLoader) {
|
|
9
15
|
if (users.length === 0) {
|
|
@@ -2,14 +2,29 @@
|
|
|
2
2
|
/// <reference types="node" />
|
|
3
3
|
import { BulkAccountLoader } from './bulkAccountLoader';
|
|
4
4
|
import { Commitment, Connection, PublicKey } from '@solana/web3.js';
|
|
5
|
+
/**
|
|
6
|
+
* `BulkAccountLoader` variant where each account can be polled at its own cadence instead of a
|
|
7
|
+
* single shared `pollingFrequency`. Overrides the base class's single `setInterval` with a
|
|
8
|
+
* per-account `accountFrequencies` map: `handleAccountLoading()` only includes an account in a
|
|
9
|
+
* given tick if `Date.now() - lastPollingTime >= frequency` for that account, then delegates to
|
|
10
|
+
* the inherited chunked `loadChunk` for the actual `getMultipleAccounts` batch. The interval
|
|
11
|
+
* itself always runs at the fastest frequency across all registered accounts (see `startPolling`),
|
|
12
|
+
* so slower accounts simply get skipped on ticks that fire before they're due.
|
|
13
|
+
*/
|
|
5
14
|
export declare class CustomizedCadenceBulkAccountLoader extends BulkAccountLoader {
|
|
6
15
|
private customIntervalId;
|
|
7
16
|
private currentPollingFrequency;
|
|
8
17
|
private accountFrequencies;
|
|
9
18
|
private lastPollingTimes;
|
|
10
19
|
private defaultPollingFrequency;
|
|
20
|
+
/**
|
|
21
|
+
* @param connection Connection used for the batched `getMultipleAccounts` polls.
|
|
22
|
+
* @param commitment Commitment level applied to every poll.
|
|
23
|
+
* @param defaultPollingFrequency Polling cadence in ms (see base `BulkAccountLoader`) used for any account added without an explicit `customPollingFrequency`, and as the floor when computing the shared interval in `startPolling`.
|
|
24
|
+
*/
|
|
11
25
|
constructor(connection: Connection, commitment: Commitment, defaultPollingFrequency: number);
|
|
12
26
|
private getAccountsToLoad;
|
|
27
|
+
/** Immediately runs one due-account loading pass, bypassing the interval timer. Unlike the base class's `load()`, this does not force-load every registered account — only those currently due per their own cadence. */
|
|
13
28
|
load(): Promise<void>;
|
|
14
29
|
private handleAccountLoading;
|
|
15
30
|
/**
|
|
@@ -36,9 +51,31 @@ export declare class CustomizedCadenceBulkAccountLoader extends BulkAccountLoade
|
|
|
36
51
|
* 4. Automatically restart polling if this account needs a faster frequency than existing accounts
|
|
37
52
|
*/
|
|
38
53
|
addAccount(publicKey: PublicKey, callback: (buffer: Buffer, slot: number) => void, customPollingFrequency?: number): Promise<string>;
|
|
54
|
+
/**
|
|
55
|
+
* Unregisters a callback previously returned by `addAccount`. Once an account has no
|
|
56
|
+
* remaining callbacks, its cached buffer/slot and cadence bookkeeping (`accountFrequencies`,
|
|
57
|
+
* `lastPollingTimes`) are dropped; if no accounts remain at all, polling stops entirely,
|
|
58
|
+
* otherwise polling is restarted in case the removed account held the fastest cadence.
|
|
59
|
+
* @param publicKey Account the callback was registered against.
|
|
60
|
+
* @param callbackId Id returned by `addAccount`.
|
|
61
|
+
*/
|
|
39
62
|
removeAccount(publicKey: PublicKey, callbackId: string): void;
|
|
63
|
+
/** Returns the polling cadence in ms currently set for `publicKey` (custom or default), or `null` if the account isn't registered. */
|
|
40
64
|
getAccountCadence(publicKey: PublicKey): number | null;
|
|
65
|
+
/**
|
|
66
|
+
* Starts the shared interval timer, ticking at the fastest cadence among all registered
|
|
67
|
+
* accounts (or `defaultPollingFrequency` if none are registered). Each tick runs
|
|
68
|
+
* `handleAccountLoading()`, which loads only the accounts due at that moment. A no-op if
|
|
69
|
+
* already running; call `stopPolling()` first to pick up a new minimum frequency.
|
|
70
|
+
*/
|
|
41
71
|
startPolling(): void;
|
|
72
|
+
/** Stops the shared interval timer (and the base class's, via `super.stopPolling()`) and clears `lastPollingTimes` so every account is treated as due again once polling restarts. */
|
|
42
73
|
stopPolling(): void;
|
|
74
|
+
/**
|
|
75
|
+
* Clears all per-account cadence bookkeeping. Because `getAccountsToLoad()` only considers
|
|
76
|
+
* accounts with an entry in `accountFrequencies`, this stops polling for every registered
|
|
77
|
+
* account until a cadence is re-established via `setCustomPollingFrequency` or `addAccount`.
|
|
78
|
+
* Registered accounts/callbacks themselves are untouched.
|
|
79
|
+
*/
|
|
43
80
|
clearAccountFrequencies(): void;
|
|
44
81
|
}
|
|
@@ -4,7 +4,21 @@ exports.CustomizedCadenceBulkAccountLoader = void 0;
|
|
|
4
4
|
const numericConstants_1 = require("../constants/numericConstants");
|
|
5
5
|
const bulkAccountLoader_1 = require("./bulkAccountLoader");
|
|
6
6
|
const uuid_1 = require("uuid");
|
|
7
|
+
/**
|
|
8
|
+
* `BulkAccountLoader` variant where each account can be polled at its own cadence instead of a
|
|
9
|
+
* single shared `pollingFrequency`. Overrides the base class's single `setInterval` with a
|
|
10
|
+
* per-account `accountFrequencies` map: `handleAccountLoading()` only includes an account in a
|
|
11
|
+
* given tick if `Date.now() - lastPollingTime >= frequency` for that account, then delegates to
|
|
12
|
+
* the inherited chunked `loadChunk` for the actual `getMultipleAccounts` batch. The interval
|
|
13
|
+
* itself always runs at the fastest frequency across all registered accounts (see `startPolling`),
|
|
14
|
+
* so slower accounts simply get skipped on ticks that fire before they're due.
|
|
15
|
+
*/
|
|
7
16
|
class CustomizedCadenceBulkAccountLoader extends bulkAccountLoader_1.BulkAccountLoader {
|
|
17
|
+
/**
|
|
18
|
+
* @param connection Connection used for the batched `getMultipleAccounts` polls.
|
|
19
|
+
* @param commitment Commitment level applied to every poll.
|
|
20
|
+
* @param defaultPollingFrequency Polling cadence in ms (see base `BulkAccountLoader`) used for any account added without an explicit `customPollingFrequency`, and as the floor when computing the shared interval in `startPolling`.
|
|
21
|
+
*/
|
|
8
22
|
constructor(connection, commitment, defaultPollingFrequency) {
|
|
9
23
|
super(connection, commitment, defaultPollingFrequency);
|
|
10
24
|
this.customIntervalId = null;
|
|
@@ -28,6 +42,7 @@ class CustomizedCadenceBulkAccountLoader extends bulkAccountLoader_1.BulkAccount
|
|
|
28
42
|
}
|
|
29
43
|
return accountsToLoad;
|
|
30
44
|
}
|
|
45
|
+
/** Immediately runs one due-account loading pass, bypassing the interval timer. Unlike the base class's `load()`, this does not force-load every registered account — only those currently due per their own cadence. */
|
|
31
46
|
async load() {
|
|
32
47
|
return this.handleAccountLoading();
|
|
33
48
|
}
|
|
@@ -100,6 +115,14 @@ class CustomizedCadenceBulkAccountLoader extends bulkAccountLoader_1.BulkAccount
|
|
|
100
115
|
this.restartPollingIfNeeded(updatedFrequency);
|
|
101
116
|
return callbackId;
|
|
102
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Unregisters a callback previously returned by `addAccount`. Once an account has no
|
|
120
|
+
* remaining callbacks, its cached buffer/slot and cadence bookkeeping (`accountFrequencies`,
|
|
121
|
+
* `lastPollingTimes`) are dropped; if no accounts remain at all, polling stops entirely,
|
|
122
|
+
* otherwise polling is restarted in case the removed account held the fastest cadence.
|
|
123
|
+
* @param publicKey Account the callback was registered against.
|
|
124
|
+
* @param callbackId Id returned by `addAccount`.
|
|
125
|
+
*/
|
|
103
126
|
removeAccount(publicKey, callbackId) {
|
|
104
127
|
const existingAccountToLoad = this.accountsToLoad.get(publicKey.toString());
|
|
105
128
|
if (existingAccountToLoad) {
|
|
@@ -120,10 +143,17 @@ class CustomizedCadenceBulkAccountLoader extends bulkAccountLoader_1.BulkAccount
|
|
|
120
143
|
this.restartPollingIfNeeded(this.defaultPollingFrequency);
|
|
121
144
|
}
|
|
122
145
|
}
|
|
146
|
+
/** Returns the polling cadence in ms currently set for `publicKey` (custom or default), or `null` if the account isn't registered. */
|
|
123
147
|
getAccountCadence(publicKey) {
|
|
124
148
|
const key = publicKey.toBase58();
|
|
125
149
|
return this.accountFrequencies.get(key) || null;
|
|
126
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Starts the shared interval timer, ticking at the fastest cadence among all registered
|
|
153
|
+
* accounts (or `defaultPollingFrequency` if none are registered). Each tick runs
|
|
154
|
+
* `handleAccountLoading()`, which loads only the accounts due at that moment. A no-op if
|
|
155
|
+
* already running; call `stopPolling()` first to pick up a new minimum frequency.
|
|
156
|
+
*/
|
|
127
157
|
startPolling() {
|
|
128
158
|
if (this.customIntervalId) {
|
|
129
159
|
return;
|
|
@@ -136,6 +166,7 @@ class CustomizedCadenceBulkAccountLoader extends bulkAccountLoader_1.BulkAccount
|
|
|
136
166
|
});
|
|
137
167
|
}, minFrequency);
|
|
138
168
|
}
|
|
169
|
+
/** Stops the shared interval timer (and the base class's, via `super.stopPolling()`) and clears `lastPollingTimes` so every account is treated as due again once polling restarts. */
|
|
139
170
|
stopPolling() {
|
|
140
171
|
super.stopPolling();
|
|
141
172
|
if (this.customIntervalId) {
|
|
@@ -145,6 +176,12 @@ class CustomizedCadenceBulkAccountLoader extends bulkAccountLoader_1.BulkAccount
|
|
|
145
176
|
}
|
|
146
177
|
this.lastPollingTimes.clear();
|
|
147
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Clears all per-account cadence bookkeeping. Because `getAccountsToLoad()` only considers
|
|
181
|
+
* accounts with an entry in `accountFrequencies`, this stops polling for every registered
|
|
182
|
+
* account until a cadence is re-established via `setCustomPollingFrequency` or `addAccount`.
|
|
183
|
+
* Registered accounts/callbacks themselves are untouched.
|
|
184
|
+
*/
|
|
148
185
|
clearAccountFrequencies() {
|
|
149
186
|
this.accountFrequencies.clear();
|
|
150
187
|
}
|