@velocity-exchange/sdk 0.2.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +93 -0
- package/README.md +3 -3
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2139 -5
- package/lib/browser/adminClient.js +2173 -11
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +50 -1
- package/lib/browser/idl/velocity.json +50 -1
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +92 -0
- package/lib/browser/math/exchangeStatus.js +111 -1
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -7
- package/lib/browser/math/orders.js +133 -18
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +32 -1
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +129 -7
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/swift/swiftOrderSubscriber.js +2 -2
- package/lib/browser/tokenFaucet.d.ts +2 -2
- package/lib/browser/tokenFaucet.js +11 -4
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +786 -13
- package/lib/browser/types.js +133 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3323 -216
- package/lib/browser/velocityClient.js +3428 -249
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2139 -5
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2173 -11
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +50 -1
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +50 -1
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +92 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +111 -1
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -7
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +133 -18
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +32 -1
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +129 -7
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +67 -2
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/swift/swiftOrderSubscriber.js +2 -2
- package/lib/node/tokenFaucet.d.ts +2 -2
- package/lib/node/tokenFaucet.d.ts.map +1 -1
- package/lib/node/tokenFaucet.js +11 -4
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +786 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +133 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3323 -216
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3428 -249
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2184 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +50 -1
- package/src/idl/velocity.ts +50 -1
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +125 -0
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +144 -18
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +32 -1
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +131 -7
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +74 -2
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/swift/swiftOrderSubscriber.ts +2 -2
- package/src/tokenFaucet.ts +10 -7
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +783 -22
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3456 -254
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/helpers.ts +1 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
|
@@ -4,6 +4,7 @@ exports.RevenueShareEscrowMap = void 0;
|
|
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
|
5
5
|
const pda_1 = require("../addresses/pda");
|
|
6
6
|
const memcmp_1 = require("../memcmp");
|
|
7
|
+
/** In-memory cache mapping each authority to their `RevenueShareEscrow` account (builder/referral fee accrual escrow). */
|
|
7
8
|
class RevenueShareEscrowMap {
|
|
8
9
|
/**
|
|
9
10
|
* Creates a new RevenueShareEscrowMap instance.
|
|
@@ -21,7 +22,9 @@ class RevenueShareEscrowMap {
|
|
|
21
22
|
this.parallelSync = parallelSync !== undefined ? parallelSync : true;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
+
* Populates the map via a one-time `sync()` (no-op if already populated).
|
|
26
|
+
* There is no live/push subscription here — call `sync()`/`slowSync()`
|
|
27
|
+
* again later to pick up new or updated escrow accounts.
|
|
25
28
|
*/
|
|
26
29
|
async subscribe() {
|
|
27
30
|
if (this.size() > 0) {
|
|
@@ -30,9 +33,11 @@ class RevenueShareEscrowMap {
|
|
|
30
33
|
await this.velocityClient.subscribe();
|
|
31
34
|
await this.sync();
|
|
32
35
|
}
|
|
36
|
+
/** Returns true if `authorityPublicKey` has a `RevenueShareEscrow` account cached in the map. */
|
|
33
37
|
has(authorityPublicKey) {
|
|
34
38
|
return this.authorityEscrowMap.has(authorityPublicKey);
|
|
35
39
|
}
|
|
40
|
+
/** Returns the cached `RevenueShareEscrowAccount` for `authorityPublicKey`, or `undefined` if not (yet) in the map. */
|
|
36
41
|
get(authorityPublicKey) {
|
|
37
42
|
return this.authorityEscrowMap.get(authorityPublicKey);
|
|
38
43
|
}
|
|
@@ -48,6 +53,12 @@ class RevenueShareEscrowMap {
|
|
|
48
53
|
}
|
|
49
54
|
return this.get(authorityPublicKey);
|
|
50
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Fetches and decodes `authority`'s `RevenueShareEscrow` account directly
|
|
58
|
+
* via RPC and caches it. If the account does not exist (a normal condition
|
|
59
|
+
* — not every authority has an escrow), logs a debug message and leaves the
|
|
60
|
+
* map entry absent rather than throwing.
|
|
61
|
+
*/
|
|
51
62
|
async addRevenueShareEscrow(authority) {
|
|
52
63
|
const escrowAccountPublicKey = (0, pda_1.getRevenueShareEscrowAccountPublicKey)(this.velocityClient.program.programId, new web3_js_1.PublicKey(authority));
|
|
53
64
|
try {
|
|
@@ -62,9 +73,11 @@ class RevenueShareEscrowMap {
|
|
|
62
73
|
console.debug(`No RevenueShareEscrow account found for authority: ${authority}`);
|
|
63
74
|
}
|
|
64
75
|
}
|
|
76
|
+
/** Number of `RevenueShareEscrow` accounts currently cached in the map. */
|
|
65
77
|
size() {
|
|
66
78
|
return this.authorityEscrowMap.size;
|
|
67
79
|
}
|
|
80
|
+
/** Fully (re)populates the map via `syncAll` (a `getProgramAccounts` scan). Concurrent calls share the same in-flight promise. */
|
|
68
81
|
async sync() {
|
|
69
82
|
if (this.fetchPromise) {
|
|
70
83
|
return this.fetchPromise;
|
|
@@ -97,6 +110,14 @@ class RevenueShareEscrowMap {
|
|
|
97
110
|
this.authorityEscrowMap.set(authority, escrowNew);
|
|
98
111
|
}
|
|
99
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Fetches and decodes every `RevenueShareEscrow` program account (via
|
|
115
|
+
* `getRevenueShareEscrowFilter`), in batches of 100 with a 10ms delay
|
|
116
|
+
* between batches to avoid overwhelming the RPC, and caches them keyed by
|
|
117
|
+
* `escrow.authority`. Batch decoding runs in parallel unless constructed
|
|
118
|
+
* with `parallelSync: false`. A decode failure for one account is logged
|
|
119
|
+
* and skipped rather than aborting the whole sync.
|
|
120
|
+
*/
|
|
100
121
|
async syncAll() {
|
|
101
122
|
const rpcRequestArgs = [
|
|
102
123
|
this.velocityClient.program.programId.toBase58(),
|
|
@@ -148,20 +169,18 @@ class RevenueShareEscrowMap {
|
|
|
148
169
|
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
149
170
|
}
|
|
150
171
|
}
|
|
151
|
-
/**
|
|
152
|
-
* Get all RevenueShareEscrow accounts
|
|
153
|
-
*/
|
|
172
|
+
/** Returns a shallow copy of the full authority-to-escrow map (mutating the returned map does not affect the cache). */
|
|
154
173
|
getAll() {
|
|
155
174
|
return new Map(this.authorityEscrowMap);
|
|
156
175
|
}
|
|
157
|
-
/**
|
|
158
|
-
* Get all authorities that have RevenueShareEscrow accounts
|
|
159
|
-
*/
|
|
176
|
+
/** Returns the base58 authority pubkeys of every `RevenueShareEscrow` account currently cached. */
|
|
160
177
|
getAuthorities() {
|
|
161
178
|
return Array.from(this.authorityEscrowMap.keys());
|
|
162
179
|
}
|
|
163
180
|
/**
|
|
164
|
-
* Get RevenueShareEscrow accounts that have
|
|
181
|
+
* Get `RevenueShareEscrow` accounts that have at least one entry in
|
|
182
|
+
* `approvedBuilders` — builders this user has approved to charge an order
|
|
183
|
+
* fee (not "referrers": `referrer` is a separate field on the account).
|
|
165
184
|
*/
|
|
166
185
|
getEscrowsWithApprovedReferrers() {
|
|
167
186
|
const result = new Map();
|
|
@@ -173,7 +192,9 @@ class RevenueShareEscrowMap {
|
|
|
173
192
|
return result;
|
|
174
193
|
}
|
|
175
194
|
/**
|
|
176
|
-
* Get RevenueShareEscrow accounts
|
|
195
|
+
* Get `RevenueShareEscrow` accounts with at least one entry in `orders` —
|
|
196
|
+
* the ring buffer of in-flight builder/referral fee accruals not yet
|
|
197
|
+
* settled via settle-PnL.
|
|
177
198
|
*/
|
|
178
199
|
getEscrowsWithOrders() {
|
|
179
200
|
const result = new Map();
|
|
@@ -185,7 +206,10 @@ class RevenueShareEscrowMap {
|
|
|
185
206
|
return result;
|
|
186
207
|
}
|
|
187
208
|
/**
|
|
188
|
-
*
|
|
209
|
+
* Returns the first cached `RevenueShareEscrow` account whose `referrer`
|
|
210
|
+
* field equals `referrerPublicKey`. There is no reverse index, so this is
|
|
211
|
+
* an O(n) scan over every cached escrow; prefer `getAllByReferrer` if more
|
|
212
|
+
* than one escrow may share the same referrer.
|
|
189
213
|
*/
|
|
190
214
|
getByReferrer(referrerPublicKey) {
|
|
191
215
|
for (const escrow of this.authorityEscrowMap.values()) {
|
|
@@ -196,7 +220,9 @@ class RevenueShareEscrowMap {
|
|
|
196
220
|
return undefined;
|
|
197
221
|
}
|
|
198
222
|
/**
|
|
199
|
-
*
|
|
223
|
+
* Returns every cached `RevenueShareEscrow` account whose `referrer` field
|
|
224
|
+
* equals `referrerPublicKey`. O(n) scan over every cached escrow (no
|
|
225
|
+
* reverse index).
|
|
200
226
|
*/
|
|
201
227
|
getAllByReferrer(referrerPublicKey) {
|
|
202
228
|
const result = [];
|
|
@@ -207,6 +233,7 @@ class RevenueShareEscrowMap {
|
|
|
207
233
|
}
|
|
208
234
|
return result;
|
|
209
235
|
}
|
|
236
|
+
/** Clears the in-memory map. Does not tear down any RPC subscriptions (this class has none — `subscribe` only triggers a one-time sync). */
|
|
210
237
|
async unsubscribe() {
|
|
211
238
|
this.authorityEscrowMap.clear();
|
|
212
239
|
}
|
|
@@ -10,6 +10,7 @@ import { PublicKey } from '@solana/web3.js';
|
|
|
10
10
|
import { UserAccountFilterCriteria as UserFilterCriteria, UserMapConfig } from './userMapConfig';
|
|
11
11
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
12
12
|
import { EventEmitter } from 'events';
|
|
13
|
+
/** Public surface implemented by `UserMap`. */
|
|
13
14
|
export interface UserMapInterface {
|
|
14
15
|
eventEmitter: StrictEventEmitter<EventEmitter, UserEvents>;
|
|
15
16
|
subscribe(): Promise<void>;
|
|
@@ -27,6 +28,25 @@ export interface UserMapInterface {
|
|
|
27
28
|
entries(): IterableIterator<[string, User]>;
|
|
28
29
|
entriesWithSlot(): IterableIterator<[string, DataAndSlot<User>]>;
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* In-memory cache of every `User` account on the program, keyed by the
|
|
33
|
+
* `User` account's own public key.
|
|
34
|
+
*
|
|
35
|
+
* Sync/subscription filtering (see `getFilters`) is built from memcmp
|
|
36
|
+
* filters: the base `getUserFilter()` (matches the `User` account
|
|
37
|
+
* discriminator — required, or every account on chain would match) is always
|
|
38
|
+
* present; `getNonIdleUserFilter()` is added unless `includeIdle` is set (idle
|
|
39
|
+
* accounts are excluded by default to reduce subscription volume);
|
|
40
|
+
* `getUsersWithPoolId(filterByPoolId)` is added when `filterByPoolId` is set;
|
|
41
|
+
* and any `additionalFilters` from the config are appended last. The same
|
|
42
|
+
* filter set is used for the initial `getProgramAccounts` sync and for the
|
|
43
|
+
* live websocket/gRPC subscription, so what you sync is what you keep getting
|
|
44
|
+
* updates for.
|
|
45
|
+
*
|
|
46
|
+
* Automatically does a full `sync()` whenever the program's
|
|
47
|
+
* `StateAccount.numberOfSubAccounts` changes (new/deleted user accounts),
|
|
48
|
+
* unless `disableSyncOnTotalAccountsChange` is set.
|
|
49
|
+
*/
|
|
30
50
|
export declare class UserMap implements UserMapInterface {
|
|
31
51
|
private userMap;
|
|
32
52
|
velocityClient: VelocityClient;
|
|
@@ -50,8 +70,30 @@ export declare class UserMap implements UserMapInterface {
|
|
|
50
70
|
* Constructs a new UserMap instance.
|
|
51
71
|
*/
|
|
52
72
|
constructor(config: UserMapConfig);
|
|
73
|
+
/**
|
|
74
|
+
* Populates the map with a full initial `sync()` (no-op if already
|
|
75
|
+
* populated) and starts the configured live subscription
|
|
76
|
+
* (`'websocket'`/`'polling'`/`'grpc'`), plus (unless
|
|
77
|
+
* `disableSyncOnTotalAccountsChange`) a listener that triggers a full
|
|
78
|
+
* re-sync whenever `StateAccount.numberOfSubAccounts` changes.
|
|
79
|
+
*/
|
|
53
80
|
subscribe(): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Adds `userAccountPublicKey` to the map, creating a `User` for it.
|
|
83
|
+
*
|
|
84
|
+
* By default (`accountSubscription` omitted), subscribes it with a
|
|
85
|
+
* `OneShotUserAccountSubscriber` seeded from `userAccount`/`slot` rather
|
|
86
|
+
* than a live per-account websocket subscription — the map already gets
|
|
87
|
+
* live updates in bulk via its own subscription (`WebsocketSubscription`/
|
|
88
|
+
* `PollingSubscription`/`grpcSubscription`), so per-`User` subscriptions
|
|
89
|
+
* here would needlessly multiply RPC load.
|
|
90
|
+
* @param userAccount Optional pre-fetched account data to seed with, skipping an RPC fetch.
|
|
91
|
+
* @param slot Optional slot the data was observed at. Required (directly or via `userAccount`'s subscriber) — throws if no slot can be determined after subscribing.
|
|
92
|
+
* @param accountSubscription Optional override for how the created `User` subscribes; defaults to the one-shot subscriber described above.
|
|
93
|
+
* @throws If no slot is available after subscribing.
|
|
94
|
+
*/
|
|
54
95
|
addPubkey(userAccountPublicKey: PublicKey, userAccount?: UserAccount, slot?: number, accountSubscription?: UserSubscriptionConfig): Promise<void>;
|
|
96
|
+
/** Returns true if a `User` account keyed by `key` (the `User` account pubkey, base58) is cached in the map. */
|
|
55
97
|
has(key: string): boolean;
|
|
56
98
|
/**
|
|
57
99
|
* gets the User for a particular userAccountPublicKey, if no User exists, undefined is returned
|
|
@@ -59,6 +101,7 @@ export declare class UserMap implements UserMapInterface {
|
|
|
59
101
|
* @returns user User | undefined
|
|
60
102
|
*/
|
|
61
103
|
get(key: string): User | undefined;
|
|
104
|
+
/** Like `get`, but also returns the slot at which the `User` account was last observed. */
|
|
62
105
|
getWithSlot(key: string): DataAndSlot<User> | undefined;
|
|
63
106
|
/**
|
|
64
107
|
* gets the User for a particular userAccountPublicKey, if no User exists, new one is created
|
|
@@ -66,7 +109,9 @@ export declare class UserMap implements UserMapInterface {
|
|
|
66
109
|
* @returns User
|
|
67
110
|
*/
|
|
68
111
|
mustGet(key: string, accountSubscription?: UserSubscriptionConfig): Promise<User>;
|
|
112
|
+
/** Like `mustGet`, but also returns the slot at which the `User` account was observed. */
|
|
69
113
|
mustGetWithSlot(key: string, accountSubscription?: UserSubscriptionConfig): Promise<DataAndSlot<User>>;
|
|
114
|
+
/** Like `mustGet`, but returns the underlying `UserAccount` data directly (throws if the `User`'s account is not loaded). */
|
|
70
115
|
mustGetUserAccount(key: string): Promise<UserAccount>;
|
|
71
116
|
/**
|
|
72
117
|
* gets the Authority for a particular userAccountPublicKey, if no User exists, undefined is returned
|
|
@@ -75,17 +120,29 @@ export declare class UserMap implements UserMapInterface {
|
|
|
75
120
|
*/
|
|
76
121
|
getUserAuthority(key: string): PublicKey | undefined;
|
|
77
122
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* @param slot
|
|
123
|
+
* Implements the `DLOBSource` interface: builds a `DLOB` from every
|
|
124
|
+
* subscribed user's open orders.
|
|
125
|
+
* @param slot Slot to consider orders "current" as of (auction/trigger timing).
|
|
81
126
|
*/
|
|
82
127
|
getDLOB(slot: number): Promise<DLOB>;
|
|
128
|
+
/** Ensures an entry exists in the map for `record.user`, adding it via `addPubkey` if not already present. */
|
|
83
129
|
updateWithOrderRecord(record: OrderRecord): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Incrementally updates the map in response to a single program event,
|
|
132
|
+
* ensuring an entry exists for every `User` account the event references
|
|
133
|
+
* (deposit/funding/liquidation/order/order-action/settle-pnl/new-user
|
|
134
|
+
* records). Unrecognized event types are silently ignored.
|
|
135
|
+
*/
|
|
84
136
|
updateWithEventRecord(record: WrappedEvent<any>): Promise<void>;
|
|
137
|
+
/** Iterates all cached `User` instances. */
|
|
85
138
|
values(): IterableIterator<User>;
|
|
139
|
+
/** Like `values`, but paired with the slot each `User` was last observed at. */
|
|
86
140
|
valuesWithSlot(): IterableIterator<DataAndSlot<User>>;
|
|
141
|
+
/** Iterates all `[userAccountPublicKey, User]` pairs in the map. */
|
|
87
142
|
entries(): IterableIterator<[string, User]>;
|
|
143
|
+
/** Like `entries`, but paired with the slot each `User` was last observed at. */
|
|
88
144
|
entriesWithSlot(): IterableIterator<[string, DataAndSlot<User>]>;
|
|
145
|
+
/** Number of `User` accounts currently cached in the map. */
|
|
89
146
|
size(): number;
|
|
90
147
|
/**
|
|
91
148
|
* Returns a unique list of authorities for all users in the UserMap that meet the filter criteria
|
|
@@ -93,7 +150,14 @@ export declare class UserMap implements UserMapInterface {
|
|
|
93
150
|
* @returns
|
|
94
151
|
*/
|
|
95
152
|
getUniqueAuthorities(filterCriteria?: UserFilterCriteria): PublicKey[];
|
|
153
|
+
/** Runs a full sync using the strategy configured in `UserMapConfig.syncConfig` (`'default'` or `'paginated'` — see `SyncConfig`). */
|
|
96
154
|
sync(): Promise<void>;
|
|
155
|
+
/**
|
|
156
|
+
* Builds the memcmp filter set for both the initial sync and the live
|
|
157
|
+
* subscription: always the `User`-account discriminator filter; plus a
|
|
158
|
+
* non-idle filter unless `includeIdle`; plus a pool-id filter if
|
|
159
|
+
* `filterByPoolId` is set; plus any caller-supplied `additionalFilters`.
|
|
160
|
+
*/
|
|
97
161
|
private getFilters;
|
|
98
162
|
/**
|
|
99
163
|
* Syncs the UserMap using the default sync method (single getProgramAccounts call with filters).
|
|
@@ -107,8 +171,22 @@ export declare class UserMap implements UserMapInterface {
|
|
|
107
171
|
* @returns
|
|
108
172
|
*/
|
|
109
173
|
private paginatedSync;
|
|
174
|
+
/**
|
|
175
|
+
* Tears down the live subscription, unsubscribes and removes every cached
|
|
176
|
+
* `User`, and (if registered) removes the `stateAccountUpdate` listener
|
|
177
|
+
* that triggers auto-resync on `numberOfSubAccounts` changes.
|
|
178
|
+
*/
|
|
110
179
|
unsubscribe(): Promise<void>;
|
|
180
|
+
/**
|
|
181
|
+
* Applies a fresh `userAccount` observation for `key` at `slot`. If the
|
|
182
|
+
* user is already cached, updates in place only if `slot` is at least as
|
|
183
|
+
* new as the cached slot (stale/out-of-order updates are dropped) and
|
|
184
|
+
* emits `'userUpdate'`. If not cached yet, adds it via `addPubkey`.
|
|
185
|
+
* Also advances `getSlot()`'s tracked most-recent slot.
|
|
186
|
+
*/
|
|
111
187
|
updateUserAccount(key: string, userAccount: UserAccount, slot: number): Promise<void>;
|
|
188
|
+
/** Advances the map's tracked most-recent slot to `slot` if it's newer. */
|
|
112
189
|
updateLatestSlot(slot: number): void;
|
|
190
|
+
/** Returns the most recent slot at which any account update has been observed. */
|
|
113
191
|
getSlot(): number;
|
|
114
192
|
}
|
|
@@ -18,6 +18,25 @@ const events_1 = require("events");
|
|
|
18
18
|
// smaller than the real account, the buffer is truncated and decodeUser reads past
|
|
19
19
|
// the end (RangeError: ERR_BUFFER_OUT_OF_BOUNDS). Must be >= the on-chain User size.
|
|
20
20
|
const MAX_USER_ACCOUNT_SIZE_BYTES = 4496;
|
|
21
|
+
/**
|
|
22
|
+
* In-memory cache of every `User` account on the program, keyed by the
|
|
23
|
+
* `User` account's own public key.
|
|
24
|
+
*
|
|
25
|
+
* Sync/subscription filtering (see `getFilters`) is built from memcmp
|
|
26
|
+
* filters: the base `getUserFilter()` (matches the `User` account
|
|
27
|
+
* discriminator — required, or every account on chain would match) is always
|
|
28
|
+
* present; `getNonIdleUserFilter()` is added unless `includeIdle` is set (idle
|
|
29
|
+
* accounts are excluded by default to reduce subscription volume);
|
|
30
|
+
* `getUsersWithPoolId(filterByPoolId)` is added when `filterByPoolId` is set;
|
|
31
|
+
* and any `additionalFilters` from the config are appended last. The same
|
|
32
|
+
* filter set is used for the initial `getProgramAccounts` sync and for the
|
|
33
|
+
* live websocket/gRPC subscription, so what you sync is what you keep getting
|
|
34
|
+
* updates for.
|
|
35
|
+
*
|
|
36
|
+
* Automatically does a full `sync()` whenever the program's
|
|
37
|
+
* `StateAccount.numberOfSubAccounts` changes (new/deleted user accounts),
|
|
38
|
+
* unless `disableSyncOnTotalAccountsChange` is set.
|
|
39
|
+
*/
|
|
21
40
|
class UserMap {
|
|
22
41
|
/**
|
|
23
42
|
* Constructs a new UserMap instance.
|
|
@@ -98,6 +117,13 @@ class UserMap {
|
|
|
98
117
|
this.throwOnFailedSync = (_j = config.throwOnFailedSync) !== null && _j !== void 0 ? _j : false;
|
|
99
118
|
this.eventEmitter = new events_1.EventEmitter();
|
|
100
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Populates the map with a full initial `sync()` (no-op if already
|
|
122
|
+
* populated) and starts the configured live subscription
|
|
123
|
+
* (`'websocket'`/`'polling'`/`'grpc'`), plus (unless
|
|
124
|
+
* `disableSyncOnTotalAccountsChange`) a listener that triggers a full
|
|
125
|
+
* re-sync whenever `StateAccount.numberOfSubAccounts` changes.
|
|
126
|
+
*/
|
|
101
127
|
async subscribe() {
|
|
102
128
|
if (this.size() > 0) {
|
|
103
129
|
return;
|
|
@@ -110,6 +136,20 @@ class UserMap {
|
|
|
110
136
|
}
|
|
111
137
|
await this.subscription.subscribe();
|
|
112
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Adds `userAccountPublicKey` to the map, creating a `User` for it.
|
|
141
|
+
*
|
|
142
|
+
* By default (`accountSubscription` omitted), subscribes it with a
|
|
143
|
+
* `OneShotUserAccountSubscriber` seeded from `userAccount`/`slot` rather
|
|
144
|
+
* than a live per-account websocket subscription — the map already gets
|
|
145
|
+
* live updates in bulk via its own subscription (`WebsocketSubscription`/
|
|
146
|
+
* `PollingSubscription`/`grpcSubscription`), so per-`User` subscriptions
|
|
147
|
+
* here would needlessly multiply RPC load.
|
|
148
|
+
* @param userAccount Optional pre-fetched account data to seed with, skipping an RPC fetch.
|
|
149
|
+
* @param slot Optional slot the data was observed at. Required (directly or via `userAccount`'s subscriber) — throws if no slot can be determined after subscribing.
|
|
150
|
+
* @param accountSubscription Optional override for how the created `User` subscribes; defaults to the one-shot subscriber described above.
|
|
151
|
+
* @throws If no slot is available after subscribing.
|
|
152
|
+
*/
|
|
113
153
|
async addPubkey(userAccountPublicKey, userAccount, slot, accountSubscription) {
|
|
114
154
|
var _a;
|
|
115
155
|
const user = new user_1.User({
|
|
@@ -132,6 +172,7 @@ class UserMap {
|
|
|
132
172
|
});
|
|
133
173
|
this.eventEmitter.emit('userUpdate', user);
|
|
134
174
|
}
|
|
175
|
+
/** Returns true if a `User` account keyed by `key` (the `User` account pubkey, base58) is cached in the map. */
|
|
135
176
|
has(key) {
|
|
136
177
|
return this.userMap.has(key);
|
|
137
178
|
}
|
|
@@ -144,6 +185,7 @@ class UserMap {
|
|
|
144
185
|
var _a;
|
|
145
186
|
return (_a = this.userMap.get(key)) === null || _a === void 0 ? void 0 : _a.data;
|
|
146
187
|
}
|
|
188
|
+
/** Like `get`, but also returns the slot at which the `User` account was last observed. */
|
|
147
189
|
getWithSlot(key) {
|
|
148
190
|
return this.userMap.get(key);
|
|
149
191
|
}
|
|
@@ -162,6 +204,7 @@ class UserMap {
|
|
|
162
204
|
}
|
|
163
205
|
return userWithSlot.data;
|
|
164
206
|
}
|
|
207
|
+
/** Like `mustGet`, but also returns the slot at which the `User` account was observed. */
|
|
165
208
|
async mustGetWithSlot(key, accountSubscription) {
|
|
166
209
|
if (!this.has(key)) {
|
|
167
210
|
await this.addPubkey(new web3_js_1.PublicKey(key), undefined, undefined, accountSubscription);
|
|
@@ -172,6 +215,7 @@ class UserMap {
|
|
|
172
215
|
}
|
|
173
216
|
return userWithSlot;
|
|
174
217
|
}
|
|
218
|
+
/** Like `mustGet`, but returns the underlying `UserAccount` data directly (throws if the `User`'s account is not loaded). */
|
|
175
219
|
async mustGetUserAccount(key) {
|
|
176
220
|
const user = await this.mustGet(key);
|
|
177
221
|
return user.getUserAccountOrThrow();
|
|
@@ -190,20 +234,27 @@ class UserMap {
|
|
|
190
234
|
return (_a = user.data.getUserAccount()) === null || _a === void 0 ? void 0 : _a.authority;
|
|
191
235
|
}
|
|
192
236
|
/**
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
* @param slot
|
|
237
|
+
* Implements the `DLOBSource` interface: builds a `DLOB` from every
|
|
238
|
+
* subscribed user's open orders.
|
|
239
|
+
* @param slot Slot to consider orders "current" as of (auction/trigger timing).
|
|
196
240
|
*/
|
|
197
241
|
async getDLOB(slot) {
|
|
198
242
|
const dlob = new DLOB_1.DLOB();
|
|
199
243
|
await dlob.initFromUserMap(this, slot);
|
|
200
244
|
return dlob;
|
|
201
245
|
}
|
|
246
|
+
/** Ensures an entry exists in the map for `record.user`, adding it via `addPubkey` if not already present. */
|
|
202
247
|
async updateWithOrderRecord(record) {
|
|
203
248
|
if (!this.has(record.user.toString())) {
|
|
204
249
|
await this.addPubkey(record.user);
|
|
205
250
|
}
|
|
206
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Incrementally updates the map in response to a single program event,
|
|
254
|
+
* ensuring an entry exists for every `User` account the event references
|
|
255
|
+
* (deposit/funding/liquidation/order/order-action/settle-pnl/new-user
|
|
256
|
+
* records). Unrecognized event types are silently ignored.
|
|
257
|
+
*/
|
|
207
258
|
async updateWithEventRecord(record) {
|
|
208
259
|
if (record.eventType === 'DepositRecord') {
|
|
209
260
|
const depositRecord = record;
|
|
@@ -240,22 +291,27 @@ class UserMap {
|
|
|
240
291
|
await this.mustGet(newUserRecord.user.toString());
|
|
241
292
|
}
|
|
242
293
|
}
|
|
294
|
+
/** Iterates all cached `User` instances. */
|
|
243
295
|
*values() {
|
|
244
296
|
for (const dataAndSlot of this.userMap.values()) {
|
|
245
297
|
yield dataAndSlot.data;
|
|
246
298
|
}
|
|
247
299
|
}
|
|
300
|
+
/** Like `values`, but paired with the slot each `User` was last observed at. */
|
|
248
301
|
valuesWithSlot() {
|
|
249
302
|
return this.userMap.values();
|
|
250
303
|
}
|
|
304
|
+
/** Iterates all `[userAccountPublicKey, User]` pairs in the map. */
|
|
251
305
|
*entries() {
|
|
252
306
|
for (const [key, dataAndSlot] of this.userMap.entries()) {
|
|
253
307
|
yield [key, dataAndSlot.data];
|
|
254
308
|
}
|
|
255
309
|
}
|
|
310
|
+
/** Like `entries`, but paired with the slot each `User` was last observed at. */
|
|
256
311
|
entriesWithSlot() {
|
|
257
312
|
return this.userMap.entries();
|
|
258
313
|
}
|
|
314
|
+
/** Number of `User` accounts currently cached in the map. */
|
|
259
315
|
size() {
|
|
260
316
|
return this.userMap.size;
|
|
261
317
|
}
|
|
@@ -276,6 +332,7 @@ class UserMap {
|
|
|
276
332
|
const userAuthKeys = Array.from(userAuths).map((userAuth) => new web3_js_1.PublicKey(userAuth));
|
|
277
333
|
return userAuthKeys;
|
|
278
334
|
}
|
|
335
|
+
/** Runs a full sync using the strategy configured in `UserMapConfig.syncConfig` (`'default'` or `'paginated'` — see `SyncConfig`). */
|
|
279
336
|
async sync() {
|
|
280
337
|
if (this.syncConfig.type === 'default') {
|
|
281
338
|
return this.defaultSync();
|
|
@@ -284,6 +341,12 @@ class UserMap {
|
|
|
284
341
|
return this.paginatedSync();
|
|
285
342
|
}
|
|
286
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Builds the memcmp filter set for both the initial sync and the live
|
|
346
|
+
* subscription: always the `User`-account discriminator filter; plus a
|
|
347
|
+
* non-idle filter unless `includeIdle`; plus a pool-id filter if
|
|
348
|
+
* `filterByPoolId` is set; plus any caller-supplied `additionalFilters`.
|
|
349
|
+
*/
|
|
287
350
|
getFilters() {
|
|
288
351
|
const filters = [(0, memcmp_1.getUserFilter)()];
|
|
289
352
|
if (!this.includeIdle) {
|
|
@@ -464,6 +527,11 @@ class UserMap {
|
|
|
464
527
|
this.syncPromise = undefined;
|
|
465
528
|
}
|
|
466
529
|
}
|
|
530
|
+
/**
|
|
531
|
+
* Tears down the live subscription, unsubscribes and removes every cached
|
|
532
|
+
* `User`, and (if registered) removes the `stateAccountUpdate` listener
|
|
533
|
+
* that triggers auto-resync on `numberOfSubAccounts` changes.
|
|
534
|
+
*/
|
|
467
535
|
async unsubscribe() {
|
|
468
536
|
await this.subscription.unsubscribe();
|
|
469
537
|
for (const [key, user] of this.entries()) {
|
|
@@ -477,6 +545,13 @@ class UserMap {
|
|
|
477
545
|
this.lastNumberOfSubAccounts = undefined;
|
|
478
546
|
}
|
|
479
547
|
}
|
|
548
|
+
/**
|
|
549
|
+
* Applies a fresh `userAccount` observation for `key` at `slot`. If the
|
|
550
|
+
* user is already cached, updates in place only if `slot` is at least as
|
|
551
|
+
* new as the cached slot (stale/out-of-order updates are dropped) and
|
|
552
|
+
* emits `'userUpdate'`. If not cached yet, adds it via `addPubkey`.
|
|
553
|
+
* Also advances `getSlot()`'s tracked most-recent slot.
|
|
554
|
+
*/
|
|
480
555
|
async updateUserAccount(key, userAccount, slot) {
|
|
481
556
|
const userWithSlot = this.getWithSlot(key);
|
|
482
557
|
this.updateLatestSlot(slot);
|
|
@@ -491,12 +566,14 @@ class UserMap {
|
|
|
491
566
|
}
|
|
492
567
|
}
|
|
493
568
|
else {
|
|
494
|
-
this.addPubkey(new web3_js_1.PublicKey(key), userAccount, slot);
|
|
569
|
+
await this.addPubkey(new web3_js_1.PublicKey(key), userAccount, slot);
|
|
495
570
|
}
|
|
496
571
|
}
|
|
572
|
+
/** Advances the map's tracked most-recent slot to `slot` if it's newer. */
|
|
497
573
|
updateLatestSlot(slot) {
|
|
498
574
|
this.mostRecentSlot = Math.max(slot, this.mostRecentSlot);
|
|
499
575
|
}
|
|
576
|
+
/** Returns the most recent slot at which any account update has been observed. */
|
|
500
577
|
getSlot() {
|
|
501
578
|
return this.mostRecentSlot;
|
|
502
579
|
}
|
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
import { Commitment, Connection, MemcmpFilter } from '@solana/web3.js';
|
|
2
2
|
import { VelocityClient } from '../velocityClient';
|
|
3
3
|
import { GrpcConfigs } from '../accounts/types';
|
|
4
|
+
/** Passed into `UserMap.getUniqueAuthorities` to filter which users' authorities are returned. */
|
|
4
5
|
export type UserAccountFilterCriteria = {
|
|
6
|
+
/** Only return users that have `hasOpenOrder` set on their `UserAccount`. */
|
|
5
7
|
hasOpenOrders: boolean;
|
|
6
8
|
};
|
|
9
|
+
/**
|
|
10
|
+
* Selects how `UserMap`/`UserStatsMap` bulk-load accounts on sync.
|
|
11
|
+
* - `'default'`: a single `getProgramAccounts` call with server-side memcmp filters. Simple, but can hit RPC/node response-size limits when there are many accounts.
|
|
12
|
+
* - `'paginated'`: a filtered `getProgramAccounts` prefetch for just the pubkeys, followed by chunked `getMultipleAccountsInfoAndContext` calls with bounded concurrency. More RPC calls, but scales to large account counts.
|
|
13
|
+
*/
|
|
7
14
|
export type SyncConfig = {
|
|
8
15
|
type: 'default';
|
|
9
16
|
} | {
|
|
10
17
|
type: 'paginated';
|
|
18
|
+
/** Number of accounts fetched per `getMultipleAccountsInfoAndContext` call. Defaults to 100. */
|
|
11
19
|
chunkSize?: number;
|
|
20
|
+
/** Max number of chunk-fetch tasks in flight at once. Defaults to 10. */
|
|
12
21
|
concurrencyLimit?: number;
|
|
13
22
|
};
|
|
14
23
|
type UserMapConfigBase = {
|
|
24
|
+
/** Connection to use specifically for this map. If omitted, uses the `VelocityClient`'s connection. */
|
|
15
25
|
connection?: Connection;
|
|
26
|
+
/** How the map keeps its accounts up to date after the initial sync. */
|
|
16
27
|
subscriptionConfig: {
|
|
17
28
|
type: 'polling';
|
|
29
|
+
/** Milliseconds between full re-syncs. */
|
|
18
30
|
frequency: number;
|
|
19
31
|
commitment?: Commitment;
|
|
20
32
|
} | {
|
|
@@ -28,13 +40,24 @@ type UserMapConfigBase = {
|
|
|
28
40
|
logResubMessages?: boolean;
|
|
29
41
|
commitment?: Commitment;
|
|
30
42
|
};
|
|
43
|
+
/** True to skip the initial load of userAccounts via getProgramAccounts */
|
|
31
44
|
skipInitialLoad?: boolean;
|
|
45
|
+
/** True to include idle users when loading. Defaults to false to decrease # of accounts subscribed to. */
|
|
32
46
|
includeIdle?: boolean;
|
|
47
|
+
/** Whether to skip loading available perp/spot positions and open orders */
|
|
33
48
|
fastDecode?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* If true, will not do a full sync whenever StateAccount.numberOfSubAccounts changes.
|
|
51
|
+
* default behavior is to do a full sync on changes.
|
|
52
|
+
*/
|
|
34
53
|
disableSyncOnTotalAccountsChange?: boolean;
|
|
54
|
+
/** Bulk-load strategy for the initial sync and subsequent full syncs. Defaults to `{ type: 'default' }`. */
|
|
35
55
|
syncConfig?: SyncConfig;
|
|
56
|
+
/** Whether to throw an error if the userMap fails to sync. Defaults to false (errors are logged, not thrown). */
|
|
36
57
|
throwOnFailedSync?: boolean;
|
|
58
|
+
/** Whether to filter users by poolId. Defaults to undefined (all users, all pools). */
|
|
37
59
|
filterByPoolId?: number;
|
|
60
|
+
/** Extra memcmp filters ANDed onto the base `User`-account filter (and, unless `includeIdle`, the non-idle filter) for both the initial sync and the live subscription. */
|
|
38
61
|
additionalFilters?: MemcmpFilter[];
|
|
39
62
|
};
|
|
40
63
|
export type UserMapConfig = UserMapConfigBase & {
|
|
@@ -6,6 +6,12 @@ import { BulkAccountLoader } from '../accounts/bulkAccountLoader';
|
|
|
6
6
|
import { SyncConfig } from './userMapConfig';
|
|
7
7
|
import { PublicKey } from '@solana/web3.js';
|
|
8
8
|
import { UserMap } from './userMap';
|
|
9
|
+
/**
|
|
10
|
+
* In-memory cache of `UserStats` accounts (one per trading authority, shared
|
|
11
|
+
* across that authority's sub-accounts), keyed by authority pubkey. Backed by
|
|
12
|
+
* a shared `BulkAccountLoader` for the default sync strategy so many
|
|
13
|
+
* `UserStats` can be fetched/polled together instead of one subscription each.
|
|
14
|
+
*/
|
|
9
15
|
export declare class UserStatsMap {
|
|
10
16
|
/**
|
|
11
17
|
* map from authority pubkey to UserStats
|
|
@@ -24,6 +30,7 @@ export declare class UserStatsMap {
|
|
|
24
30
|
* @param {BulkAccountLoader} [bulkAccountLoader] - If not provided, a new BulkAccountLoader with polling disabled will be created.
|
|
25
31
|
*/
|
|
26
32
|
constructor(velocityClient: VelocityClient, bulkAccountLoader?: BulkAccountLoader, syncConfig?: SyncConfig);
|
|
33
|
+
/** Populates the map for `authorities` via `sync()` (no-op if the map already has entries). */
|
|
27
34
|
subscribe(authorities: PublicKey[]): Promise<void>;
|
|
28
35
|
/**
|
|
29
36
|
*
|
|
@@ -32,9 +39,21 @@ export declare class UserStatsMap {
|
|
|
32
39
|
* @param skipFetch if true, will not immediately fetch the UserStatsAccount
|
|
33
40
|
*/
|
|
34
41
|
addUserStat(authority: PublicKey, userStatsAccount?: UserStatsAccount, skipFetch?: boolean): Promise<void>;
|
|
42
|
+
/** Ensures the `UserStats` entry exists for the authority behind `record.user` (looked up/created in `userMap` first), adding it if this map doesn't have it yet. */
|
|
35
43
|
updateWithOrderRecord(record: OrderRecord, userMap: UserMap): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Incrementally updates the map in response to a single program event,
|
|
46
|
+
* ensuring a `UserStats` entry exists for every authority the event
|
|
47
|
+
* references (deposit/funding/new-user/IF-stake records reference an
|
|
48
|
+
* authority directly; order/liquidation/settle-pnl/order-action records
|
|
49
|
+
* reference a `User` account and require `userMap` to resolve its authority).
|
|
50
|
+
* Events whose required `userMap` is not supplied, or whose type isn't
|
|
51
|
+
* recognized, are silently ignored.
|
|
52
|
+
*/
|
|
36
53
|
updateWithEventRecord(record: WrappedEvent<any>, userMap?: UserMap): Promise<void>;
|
|
54
|
+
/** Returns true if `authorityPublicKey` has a `UserStats` cached in the map. */
|
|
37
55
|
has(authorityPublicKey: string): boolean;
|
|
56
|
+
/** Returns the cached `UserStats` for `authorityPublicKey`, or `undefined` if not (yet) in the map. */
|
|
38
57
|
get(authorityPublicKey: string): UserStats | undefined;
|
|
39
58
|
/**
|
|
40
59
|
* Enforce that a UserStats will exist for the given authorityPublicKey,
|
|
@@ -43,7 +62,9 @@ export declare class UserStatsMap {
|
|
|
43
62
|
* @returns
|
|
44
63
|
*/
|
|
45
64
|
mustGet(authorityPublicKey: string): Promise<UserStats>;
|
|
65
|
+
/** Iterates all cached `UserStats` instances. */
|
|
46
66
|
values(): IterableIterator<UserStats>;
|
|
67
|
+
/** Number of authorities currently cached in the map. */
|
|
47
68
|
size(): number;
|
|
48
69
|
/**
|
|
49
70
|
* Sync the UserStatsMap
|
|
@@ -62,5 +83,6 @@ export declare class UserStatsMap {
|
|
|
62
83
|
* @param authorities
|
|
63
84
|
*/
|
|
64
85
|
private paginatedSync;
|
|
86
|
+
/** Unsubscribes and removes every cached `UserStats` from the map. */
|
|
65
87
|
unsubscribe(): Promise<void>;
|
|
66
88
|
}
|