@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
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { UserMap } from './userMap';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* `UserMap`'s `'polling'` subscription strategy: re-runs a full `userMap.sync()`
|
|
5
|
+
* on a fixed `setTimeout` interval (self-rescheduling, so syncs never overlap).
|
|
6
|
+
* Internal to `UserMap` — not part of the SDK's public exports.
|
|
7
|
+
*/
|
|
3
8
|
export class PollingSubscription {
|
|
4
9
|
private userMap: UserMap;
|
|
5
10
|
private frequency: number;
|
|
6
11
|
private skipInitialLoad: boolean;
|
|
7
12
|
|
|
8
13
|
intervalId?: ReturnType<typeof setTimeout>;
|
|
14
|
+
private active = false;
|
|
9
15
|
|
|
10
16
|
constructor({
|
|
11
17
|
userMap,
|
|
@@ -13,7 +19,9 @@ export class PollingSubscription {
|
|
|
13
19
|
skipInitialLoad = false,
|
|
14
20
|
}: {
|
|
15
21
|
userMap: UserMap;
|
|
22
|
+
/** Milliseconds to wait after one sync completes before starting the next. */
|
|
16
23
|
frequency: number;
|
|
24
|
+
/** If true, does not sync immediately on `subscribe()` — the first sync happens after `frequency` ms. */
|
|
17
25
|
skipInitialLoad?: boolean;
|
|
18
26
|
includeIdle?: boolean;
|
|
19
27
|
}) {
|
|
@@ -22,14 +30,18 @@ export class PollingSubscription {
|
|
|
22
30
|
this.skipInitialLoad = skipInitialLoad;
|
|
23
31
|
}
|
|
24
32
|
|
|
33
|
+
/** Starts the polling loop. No-op if already started or `frequency <= 0`. */
|
|
25
34
|
public async subscribe(): Promise<void> {
|
|
26
|
-
if (this.
|
|
35
|
+
if (this.active || this.frequency <= 0) {
|
|
27
36
|
return;
|
|
28
37
|
}
|
|
38
|
+
this.active = true;
|
|
29
39
|
|
|
30
40
|
const executeSync = async () => {
|
|
31
41
|
await this.userMap.sync();
|
|
32
|
-
|
|
42
|
+
if (this.active) {
|
|
43
|
+
this.intervalId = setTimeout(executeSync, this.frequency);
|
|
44
|
+
}
|
|
33
45
|
};
|
|
34
46
|
|
|
35
47
|
if (!this.skipInitialLoad) {
|
|
@@ -38,7 +50,9 @@ export class PollingSubscription {
|
|
|
38
50
|
executeSync();
|
|
39
51
|
}
|
|
40
52
|
|
|
53
|
+
/** Stops the polling loop. */
|
|
41
54
|
public async unsubscribe(): Promise<void> {
|
|
55
|
+
this.active = false;
|
|
42
56
|
if (this.intervalId) {
|
|
43
57
|
clearInterval(this.intervalId);
|
|
44
58
|
this.intervalId = undefined;
|
|
@@ -5,6 +5,14 @@ import { UserAccount } from '../types';
|
|
|
5
5
|
import { Commitment, Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
|
|
6
6
|
import { ResubOpts } from '../accounts/types';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* `UserMap`'s `'websocket'` subscription strategy: uses
|
|
10
|
+
* `WebSocketProgramAccountSubscriber` with the map's memcmp filters (base
|
|
11
|
+
* `User` filter, plus non-idle unless `includeIdle`, plus any
|
|
12
|
+
* `additionalFilters`) to receive push updates for every matching account,
|
|
13
|
+
* feeding them into `userMap.updateUserAccount`. Internal to `UserMap` — not
|
|
14
|
+
* part of the SDK's public exports.
|
|
15
|
+
*/
|
|
8
16
|
export class WebsocketSubscription {
|
|
9
17
|
private userMap: UserMap;
|
|
10
18
|
private commitment: Commitment;
|
|
@@ -42,6 +50,7 @@ export class WebsocketSubscription {
|
|
|
42
50
|
this.additionalFilters = additionalFilters;
|
|
43
51
|
}
|
|
44
52
|
|
|
53
|
+
/** Starts the websocket program-account subscription, then (unless `skipInitialLoad`) runs an initial full `userMap.sync()`. */
|
|
45
54
|
public async subscribe(): Promise<void> {
|
|
46
55
|
if (!this.subscriber) {
|
|
47
56
|
const filters = [getUserFilter()];
|
|
@@ -6,6 +6,13 @@ import { Context, MemcmpFilter, PublicKey } from '@solana/web3.js';
|
|
|
6
6
|
import { GrpcConfigs, ResubOpts } from '../accounts/types';
|
|
7
7
|
import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* `UserMap`'s `'grpc'` subscription strategy: mirrors `WebsocketSubscription`
|
|
11
|
+
* but subscribes via a Geyser gRPC stream (`grpcProgramAccountSubscriber`)
|
|
12
|
+
* using the same memcmp filter set, feeding updates into
|
|
13
|
+
* `userMap.updateUserAccount`. Internal to `UserMap` — not part of the SDK's
|
|
14
|
+
* public exports.
|
|
15
|
+
*/
|
|
9
16
|
export class grpcSubscription {
|
|
10
17
|
private grpcConfigs: GrpcConfigs;
|
|
11
18
|
private userMap: UserMap;
|
|
@@ -43,6 +50,7 @@ export class grpcSubscription {
|
|
|
43
50
|
this.additionalFilters = additionalFilters;
|
|
44
51
|
}
|
|
45
52
|
|
|
53
|
+
/** Starts the gRPC program-account subscription, then (unless `skipInitialLoad`) runs an initial full `userMap.sync()`. */
|
|
46
54
|
public async subscribe(): Promise<void> {
|
|
47
55
|
if (!this.subscriber) {
|
|
48
56
|
const filters = [getUserFilter()];
|
|
@@ -14,10 +14,19 @@ import {
|
|
|
14
14
|
getUserStatsIsReferredFilter,
|
|
15
15
|
getUserStatsIsReferredOrReferrerFilter,
|
|
16
16
|
} from '../memcmp';
|
|
17
|
+
import { isBuilderReferral } from '../math/builder';
|
|
17
18
|
import bs58 from 'bs58';
|
|
18
19
|
|
|
19
20
|
const DEFAULT_PUBLIC_KEY = PublicKey.default.toBase58();
|
|
20
|
-
|
|
21
|
+
// Byte offset of `UserStats.referrer_status` (u8). Matches the memcmp filters.
|
|
22
|
+
const REFERRER_STATUS_OFFSET = 188;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* In-memory cache mapping each trading authority to their referrer, built by
|
|
26
|
+
* scanning `UserStats` accounts with memcmp filters on the referrer-status
|
|
27
|
+
* byte (see `syncAll`/`syncReferrer`) rather than subscribing to every
|
|
28
|
+
* account's full data.
|
|
29
|
+
*/
|
|
21
30
|
export class ReferrerMap {
|
|
22
31
|
/**
|
|
23
32
|
* map from authority pubkey to referrer pubkey.
|
|
@@ -28,6 +37,13 @@ export class ReferrerMap {
|
|
|
28
37
|
* Will be undefined if the referrer is not in the map yet.
|
|
29
38
|
*/
|
|
30
39
|
private referrerReferrerInfoMap = new Map<string, ReferrerInfo>();
|
|
40
|
+
/**
|
|
41
|
+
* map from authority pubkey to whether its escrow was initialized with a
|
|
42
|
+
* referrer (the `BuilderReferral` status bit). Only populated by the lazy
|
|
43
|
+
* full-account path (`addReferrer` / `mustGetIsBuilderReferral`) — the bulk
|
|
44
|
+
* sync uses narrow data slices that don't cover `referrer_status`.
|
|
45
|
+
*/
|
|
46
|
+
private authorityBuilderReferralMap = new Map<string, boolean>();
|
|
31
47
|
private velocityClient: VelocityClient;
|
|
32
48
|
private parallelSync: boolean;
|
|
33
49
|
|
|
@@ -35,7 +51,7 @@ export class ReferrerMap {
|
|
|
35
51
|
private fetchPromiseResolver: () => void = () => {};
|
|
36
52
|
|
|
37
53
|
/**
|
|
38
|
-
* Creates a new
|
|
54
|
+
* Creates a new ReferrerMap instance.
|
|
39
55
|
*
|
|
40
56
|
* @param {VelocityClient} velocityClient - The VelocityClient instance.
|
|
41
57
|
*/
|
|
@@ -45,7 +61,9 @@ export class ReferrerMap {
|
|
|
45
61
|
}
|
|
46
62
|
|
|
47
63
|
/**
|
|
48
|
-
*
|
|
64
|
+
* Populates the map via a one-time `sync()` (no-op if already populated).
|
|
65
|
+
* There is no live/push subscription here — call `sync()` again later to
|
|
66
|
+
* pick up new referrers.
|
|
49
67
|
*/
|
|
50
68
|
public async subscribe() {
|
|
51
69
|
if (this.size() > 0) {
|
|
@@ -56,14 +74,23 @@ export class ReferrerMap {
|
|
|
56
74
|
await this.sync();
|
|
57
75
|
}
|
|
58
76
|
|
|
77
|
+
/** Returns true if `authorityPublicKey` has been synced into the map (has a known referrer, even if that referrer is "none"). */
|
|
59
78
|
public has(authorityPublicKey: string): boolean {
|
|
60
79
|
return this.authorityReferrerMap.has(authorityPublicKey);
|
|
61
80
|
}
|
|
62
81
|
|
|
82
|
+
/** Alias for `getReferrer`. */
|
|
63
83
|
public get(authorityPublicKey: string): ReferrerInfo | undefined {
|
|
64
84
|
return this.getReferrer(authorityPublicKey);
|
|
65
85
|
}
|
|
66
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Records `authority`'s referrer. If `referrer` is omitted, fetches the
|
|
89
|
+
* authority's `UserStats` account directly via RPC and reads the referrer
|
|
90
|
+
* pubkey out of its raw bytes (offset 40..72, immediately after the
|
|
91
|
+
* discriminator + authority fields) rather than fully decoding the account.
|
|
92
|
+
* @throws If `referrer` is omitted and no `UserStats` account exists on chain for `authority`.
|
|
93
|
+
*/
|
|
67
94
|
public async addReferrer(authority: string, referrer?: string) {
|
|
68
95
|
if (referrer) {
|
|
69
96
|
this.authorityReferrerMap.set(authority, referrer);
|
|
@@ -83,12 +110,41 @@ export class ReferrerMap {
|
|
|
83
110
|
}
|
|
84
111
|
const buffer = accountInfo.data;
|
|
85
112
|
|
|
113
|
+
this.authorityBuilderReferralMap.set(
|
|
114
|
+
authority,
|
|
115
|
+
isBuilderReferral({ referrerStatus: buffer[REFERRER_STATUS_OFFSET] })
|
|
116
|
+
);
|
|
117
|
+
|
|
86
118
|
const referrer = bs58.encode(buffer.subarray(40, 72));
|
|
87
119
|
|
|
88
120
|
this.addReferrer(authority, referrer);
|
|
89
121
|
}
|
|
90
122
|
}
|
|
91
123
|
|
|
124
|
+
/**
|
|
125
|
+
* True when the authority's escrow was initialized with a referrer (the
|
|
126
|
+
* `BuilderReferral` status bit). Returns `false` until the authority's
|
|
127
|
+
* UserStats has been read via the lazy path; use {@link mustGetIsBuilderReferral}
|
|
128
|
+
* to force a read.
|
|
129
|
+
*/
|
|
130
|
+
public isBuilderReferral(authorityPublicKey: string): boolean {
|
|
131
|
+
return this.authorityBuilderReferralMap.get(authorityPublicKey) ?? false;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Like {@link isBuilderReferral} but reads the authority's UserStats from the
|
|
136
|
+
* chain if the status hasn't been cached yet. Throws if the UserStats account
|
|
137
|
+
* cannot be loaded (same as {@link addReferrer}).
|
|
138
|
+
*/
|
|
139
|
+
public async mustGetIsBuilderReferral(
|
|
140
|
+
authorityPublicKey: string
|
|
141
|
+
): Promise<boolean> {
|
|
142
|
+
if (!this.authorityBuilderReferralMap.has(authorityPublicKey)) {
|
|
143
|
+
await this.addReferrer(authorityPublicKey);
|
|
144
|
+
}
|
|
145
|
+
return this.isBuilderReferral(authorityPublicKey);
|
|
146
|
+
}
|
|
147
|
+
|
|
92
148
|
/**
|
|
93
149
|
* Enforce that a UserStats will exist for the given authorityPublicKey,
|
|
94
150
|
* reading one from the blockchain if necessary.
|
|
@@ -104,6 +160,12 @@ export class ReferrerMap {
|
|
|
104
160
|
return this.getReferrer(authorityPublicKey);
|
|
105
161
|
}
|
|
106
162
|
|
|
163
|
+
/**
|
|
164
|
+
* Resolves `authorityPublicKey`'s referrer to a `ReferrerInfo` (the
|
|
165
|
+
* referrer's `User` sub-account-0 and `UserStats` addresses), caching the
|
|
166
|
+
* derived addresses per referrer pubkey.
|
|
167
|
+
* @returns `undefined` if `authorityPublicKey` isn't in the map yet, or if it has no referrer (default/zero pubkey).
|
|
168
|
+
*/
|
|
107
169
|
public getReferrer(authorityPublicKey: string): ReferrerInfo | undefined {
|
|
108
170
|
const referrer = this.authorityReferrerMap.get(authorityPublicKey);
|
|
109
171
|
if (!referrer) {
|
|
@@ -136,16 +198,27 @@ export class ReferrerMap {
|
|
|
136
198
|
return referrerInfo;
|
|
137
199
|
}
|
|
138
200
|
|
|
201
|
+
/** Number of authorities synced into the map (referred or not). */
|
|
139
202
|
public size(): number {
|
|
140
203
|
return this.authorityReferrerMap.size;
|
|
141
204
|
}
|
|
142
205
|
|
|
206
|
+
/** Number of synced authorities that actually have a referrer set (excludes those with the default/zero pubkey). */
|
|
143
207
|
public numberOfReferred(): number {
|
|
144
208
|
return Array.from(this.authorityReferrerMap.values()).filter(
|
|
145
209
|
(referrer) => referrer !== DEFAULT_PUBLIC_KEY
|
|
146
210
|
).length;
|
|
147
211
|
}
|
|
148
212
|
|
|
213
|
+
/**
|
|
214
|
+
* Fully (re)populates the map: `syncAll` seeds every `UserStats` authority
|
|
215
|
+
* with a default ("no referrer") entry, then `syncReferrer` overwrites
|
|
216
|
+
* entries for authorities matching the is-referred and
|
|
217
|
+
* is-referred-or-referrer memcmp filters with their actual referrer. Runs
|
|
218
|
+
* the three passes in parallel by default (`parallelSync`), or serially if
|
|
219
|
+
* constructed with `parallelSync: false`. Concurrent calls share the same
|
|
220
|
+
* in-flight promise.
|
|
221
|
+
*/
|
|
149
222
|
public async sync(): Promise<void> {
|
|
150
223
|
if (this.fetchPromise) {
|
|
151
224
|
return this.fetchPromise;
|
|
@@ -173,6 +246,12 @@ export class ReferrerMap {
|
|
|
173
246
|
}
|
|
174
247
|
}
|
|
175
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Fetches every `UserStats` account pubkey (via a `getUserStatsFilter`
|
|
251
|
+
* memcmp filter, with a zero-length `dataSlice` so no account data is
|
|
252
|
+
* transferred) and seeds a default ("no referrer") entry for any authority
|
|
253
|
+
* not already present in the map.
|
|
254
|
+
*/
|
|
176
255
|
public async syncAll(): Promise<void> {
|
|
177
256
|
const rpcRequestArgs = [
|
|
178
257
|
this.velocityClient.program.programId.toBase58(),
|
|
@@ -213,6 +292,15 @@ export class ReferrerMap {
|
|
|
213
292
|
}
|
|
214
293
|
}
|
|
215
294
|
|
|
295
|
+
/**
|
|
296
|
+
* Fetches `UserStats` accounts matching `referrerFilter` combined with the
|
|
297
|
+
* base `UserStats` discriminator filter, with a `dataSlice` of exactly the
|
|
298
|
+
* bytes needed (offset 0, length 72 — discriminator + authority + referrer)
|
|
299
|
+
* to avoid transferring full account data. Decodes `authority`/`referrer`
|
|
300
|
+
* directly from the byte offsets and unconditionally sets them in the map
|
|
301
|
+
* (in batches of 1000, yielding to the event loop between batches).
|
|
302
|
+
* @param referrerFilter A memcmp filter selecting which referrer-status accounts to sync, e.g. from `getUserStatsIsReferredFilter`/`getUserStatsIsReferredOrReferrerFilter`.
|
|
303
|
+
*/
|
|
216
304
|
async syncReferrer(referrerFilter: MemcmpFilter): Promise<void> {
|
|
217
305
|
const rpcRequestArgs = [
|
|
218
306
|
this.velocityClient.program.programId.toBase58(),
|
|
@@ -264,6 +352,7 @@ export class ReferrerMap {
|
|
|
264
352
|
}
|
|
265
353
|
}
|
|
266
354
|
|
|
355
|
+
/** Clears the in-memory maps. Does not tear down any RPC subscriptions (this class has none — `subscribe` only triggers a one-time sync). */
|
|
267
356
|
public async unsubscribe() {
|
|
268
357
|
this.authorityReferrerMap.clear();
|
|
269
358
|
this.referrerReferrerInfoMap.clear();
|
|
@@ -4,6 +4,7 @@ import { RevenueShareEscrowAccount } from '../types';
|
|
|
4
4
|
import { getRevenueShareEscrowAccountPublicKey } from '../addresses/pda';
|
|
5
5
|
import { getRevenueShareEscrowFilter } from '../memcmp';
|
|
6
6
|
|
|
7
|
+
/** In-memory cache mapping each authority to their `RevenueShareEscrow` account (builder/referral fee accrual escrow). */
|
|
7
8
|
export class RevenueShareEscrowMap {
|
|
8
9
|
/**
|
|
9
10
|
* map from authority pubkey to RevenueShareEscrow account data.
|
|
@@ -27,7 +28,9 @@ export class RevenueShareEscrowMap {
|
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
+
* Populates the map via a one-time `sync()` (no-op if already populated).
|
|
32
|
+
* There is no live/push subscription here — call `sync()`/`slowSync()`
|
|
33
|
+
* again later to pick up new or updated escrow accounts.
|
|
31
34
|
*/
|
|
32
35
|
public async subscribe() {
|
|
33
36
|
if (this.size() > 0) {
|
|
@@ -38,10 +41,12 @@ export class RevenueShareEscrowMap {
|
|
|
38
41
|
await this.sync();
|
|
39
42
|
}
|
|
40
43
|
|
|
44
|
+
/** Returns true if `authorityPublicKey` has a `RevenueShareEscrow` account cached in the map. */
|
|
41
45
|
public has(authorityPublicKey: string): boolean {
|
|
42
46
|
return this.authorityEscrowMap.has(authorityPublicKey);
|
|
43
47
|
}
|
|
44
48
|
|
|
49
|
+
/** Returns the cached `RevenueShareEscrowAccount` for `authorityPublicKey`, or `undefined` if not (yet) in the map. */
|
|
45
50
|
public get(
|
|
46
51
|
authorityPublicKey: string
|
|
47
52
|
): RevenueShareEscrowAccount | undefined {
|
|
@@ -63,6 +68,12 @@ export class RevenueShareEscrowMap {
|
|
|
63
68
|
return this.get(authorityPublicKey);
|
|
64
69
|
}
|
|
65
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Fetches and decodes `authority`'s `RevenueShareEscrow` account directly
|
|
73
|
+
* via RPC and caches it. If the account does not exist (a normal condition
|
|
74
|
+
* — not every authority has an escrow), logs a debug message and leaves the
|
|
75
|
+
* map entry absent rather than throwing.
|
|
76
|
+
*/
|
|
66
77
|
public async addRevenueShareEscrow(authority: string) {
|
|
67
78
|
const escrowAccountPublicKey = getRevenueShareEscrowAccountPublicKey(
|
|
68
79
|
this.velocityClient.program.programId,
|
|
@@ -93,10 +104,12 @@ export class RevenueShareEscrowMap {
|
|
|
93
104
|
}
|
|
94
105
|
}
|
|
95
106
|
|
|
107
|
+
/** Number of `RevenueShareEscrow` accounts currently cached in the map. */
|
|
96
108
|
public size(): number {
|
|
97
109
|
return this.authorityEscrowMap.size;
|
|
98
110
|
}
|
|
99
111
|
|
|
112
|
+
/** Fully (re)populates the map via `syncAll` (a `getProgramAccounts` scan). Concurrent calls share the same in-flight promise. */
|
|
100
113
|
public async sync(): Promise<void> {
|
|
101
114
|
if (this.fetchPromise) {
|
|
102
115
|
return this.fetchPromise;
|
|
@@ -145,6 +158,14 @@ export class RevenueShareEscrowMap {
|
|
|
145
158
|
}
|
|
146
159
|
}
|
|
147
160
|
|
|
161
|
+
/**
|
|
162
|
+
* Fetches and decodes every `RevenueShareEscrow` program account (via
|
|
163
|
+
* `getRevenueShareEscrowFilter`), in batches of 100 with a 10ms delay
|
|
164
|
+
* between batches to avoid overwhelming the RPC, and caches them keyed by
|
|
165
|
+
* `escrow.authority`. Batch decoding runs in parallel unless constructed
|
|
166
|
+
* with `parallelSync: false`. A decode failure for one account is logged
|
|
167
|
+
* and skipped rather than aborting the whole sync.
|
|
168
|
+
*/
|
|
148
169
|
public async syncAll(): Promise<void> {
|
|
149
170
|
const rpcRequestArgs = [
|
|
150
171
|
this.velocityClient.program.programId.toBase58(),
|
|
@@ -237,22 +258,20 @@ export class RevenueShareEscrowMap {
|
|
|
237
258
|
}
|
|
238
259
|
}
|
|
239
260
|
|
|
240
|
-
/**
|
|
241
|
-
* Get all RevenueShareEscrow accounts
|
|
242
|
-
*/
|
|
261
|
+
/** Returns a shallow copy of the full authority-to-escrow map (mutating the returned map does not affect the cache). */
|
|
243
262
|
public getAll(): Map<string, RevenueShareEscrowAccount> {
|
|
244
263
|
return new Map(this.authorityEscrowMap);
|
|
245
264
|
}
|
|
246
265
|
|
|
247
|
-
/**
|
|
248
|
-
* Get all authorities that have RevenueShareEscrow accounts
|
|
249
|
-
*/
|
|
266
|
+
/** Returns the base58 authority pubkeys of every `RevenueShareEscrow` account currently cached. */
|
|
250
267
|
public getAuthorities(): string[] {
|
|
251
268
|
return Array.from(this.authorityEscrowMap.keys());
|
|
252
269
|
}
|
|
253
270
|
|
|
254
271
|
/**
|
|
255
|
-
* Get RevenueShareEscrow accounts that have
|
|
272
|
+
* Get `RevenueShareEscrow` accounts that have at least one entry in
|
|
273
|
+
* `approvedBuilders` — builders this user has approved to charge an order
|
|
274
|
+
* fee (not "referrers": `referrer` is a separate field on the account).
|
|
256
275
|
*/
|
|
257
276
|
public getEscrowsWithApprovedReferrers(): Map<
|
|
258
277
|
string,
|
|
@@ -268,7 +287,9 @@ export class RevenueShareEscrowMap {
|
|
|
268
287
|
}
|
|
269
288
|
|
|
270
289
|
/**
|
|
271
|
-
* Get RevenueShareEscrow accounts
|
|
290
|
+
* Get `RevenueShareEscrow` accounts with at least one entry in `orders` —
|
|
291
|
+
* the ring buffer of in-flight builder/referral fee accruals not yet
|
|
292
|
+
* settled via settle-PnL.
|
|
272
293
|
*/
|
|
273
294
|
public getEscrowsWithOrders(): Map<string, RevenueShareEscrowAccount> {
|
|
274
295
|
const result = new Map<string, RevenueShareEscrowAccount>();
|
|
@@ -281,7 +302,10 @@ export class RevenueShareEscrowMap {
|
|
|
281
302
|
}
|
|
282
303
|
|
|
283
304
|
/**
|
|
284
|
-
*
|
|
305
|
+
* Returns the first cached `RevenueShareEscrow` account whose `referrer`
|
|
306
|
+
* field equals `referrerPublicKey`. There is no reverse index, so this is
|
|
307
|
+
* an O(n) scan over every cached escrow; prefer `getAllByReferrer` if more
|
|
308
|
+
* than one escrow may share the same referrer.
|
|
285
309
|
*/
|
|
286
310
|
public getByReferrer(
|
|
287
311
|
referrerPublicKey: string
|
|
@@ -295,7 +319,9 @@ export class RevenueShareEscrowMap {
|
|
|
295
319
|
}
|
|
296
320
|
|
|
297
321
|
/**
|
|
298
|
-
*
|
|
322
|
+
* Returns every cached `RevenueShareEscrow` account whose `referrer` field
|
|
323
|
+
* equals `referrerPublicKey`. O(n) scan over every cached escrow (no
|
|
324
|
+
* reverse index).
|
|
299
325
|
*/
|
|
300
326
|
public getAllByReferrer(
|
|
301
327
|
referrerPublicKey: string
|
|
@@ -309,6 +335,7 @@ export class RevenueShareEscrowMap {
|
|
|
309
335
|
return result;
|
|
310
336
|
}
|
|
311
337
|
|
|
338
|
+
/** Clears the in-memory map. Does not tear down any RPC subscriptions (this class has none — `subscribe` only triggers a one-time sync). */
|
|
312
339
|
public async unsubscribe() {
|
|
313
340
|
this.authorityEscrowMap.clear();
|
|
314
341
|
}
|
package/src/userMap/userMap.ts
CHANGED
|
@@ -50,6 +50,7 @@ import { EventEmitter } from 'events';
|
|
|
50
50
|
// the end (RangeError: ERR_BUFFER_OUT_OF_BOUNDS). Must be >= the on-chain User size.
|
|
51
51
|
const MAX_USER_ACCOUNT_SIZE_BYTES = 4496;
|
|
52
52
|
|
|
53
|
+
/** Public surface implemented by `UserMap`. */
|
|
53
54
|
export interface UserMapInterface {
|
|
54
55
|
eventEmitter: StrictEventEmitter<EventEmitter, UserEvents>;
|
|
55
56
|
subscribe(): Promise<void>;
|
|
@@ -79,6 +80,25 @@ export interface UserMapInterface {
|
|
|
79
80
|
entriesWithSlot(): IterableIterator<[string, DataAndSlot<User>]>;
|
|
80
81
|
}
|
|
81
82
|
|
|
83
|
+
/**
|
|
84
|
+
* In-memory cache of every `User` account on the program, keyed by the
|
|
85
|
+
* `User` account's own public key.
|
|
86
|
+
*
|
|
87
|
+
* Sync/subscription filtering (see `getFilters`) is built from memcmp
|
|
88
|
+
* filters: the base `getUserFilter()` (matches the `User` account
|
|
89
|
+
* discriminator — required, or every account on chain would match) is always
|
|
90
|
+
* present; `getNonIdleUserFilter()` is added unless `includeIdle` is set (idle
|
|
91
|
+
* accounts are excluded by default to reduce subscription volume);
|
|
92
|
+
* `getUsersWithPoolId(filterByPoolId)` is added when `filterByPoolId` is set;
|
|
93
|
+
* and any `additionalFilters` from the config are appended last. The same
|
|
94
|
+
* filter set is used for the initial `getProgramAccounts` sync and for the
|
|
95
|
+
* live websocket/gRPC subscription, so what you sync is what you keep getting
|
|
96
|
+
* updates for.
|
|
97
|
+
*
|
|
98
|
+
* Automatically does a full `sync()` whenever the program's
|
|
99
|
+
* `StateAccount.numberOfSubAccounts` changes (new/deleted user accounts),
|
|
100
|
+
* unless `disableSyncOnTotalAccountsChange` is set.
|
|
101
|
+
*/
|
|
82
102
|
export class UserMap implements UserMapInterface {
|
|
83
103
|
private userMap = new Map<string, DataAndSlot<User>>();
|
|
84
104
|
velocityClient: VelocityClient;
|
|
@@ -186,6 +206,13 @@ export class UserMap implements UserMapInterface {
|
|
|
186
206
|
this.eventEmitter = new EventEmitter();
|
|
187
207
|
}
|
|
188
208
|
|
|
209
|
+
/**
|
|
210
|
+
* Populates the map with a full initial `sync()` (no-op if already
|
|
211
|
+
* populated) and starts the configured live subscription
|
|
212
|
+
* (`'websocket'`/`'polling'`/`'grpc'`), plus (unless
|
|
213
|
+
* `disableSyncOnTotalAccountsChange`) a listener that triggers a full
|
|
214
|
+
* re-sync whenever `StateAccount.numberOfSubAccounts` changes.
|
|
215
|
+
*/
|
|
189
216
|
public async subscribe() {
|
|
190
217
|
if (this.size() > 0) {
|
|
191
218
|
return;
|
|
@@ -204,6 +231,20 @@ export class UserMap implements UserMapInterface {
|
|
|
204
231
|
await this.subscription.subscribe();
|
|
205
232
|
}
|
|
206
233
|
|
|
234
|
+
/**
|
|
235
|
+
* Adds `userAccountPublicKey` to the map, creating a `User` for it.
|
|
236
|
+
*
|
|
237
|
+
* By default (`accountSubscription` omitted), subscribes it with a
|
|
238
|
+
* `OneShotUserAccountSubscriber` seeded from `userAccount`/`slot` rather
|
|
239
|
+
* than a live per-account websocket subscription — the map already gets
|
|
240
|
+
* live updates in bulk via its own subscription (`WebsocketSubscription`/
|
|
241
|
+
* `PollingSubscription`/`grpcSubscription`), so per-`User` subscriptions
|
|
242
|
+
* here would needlessly multiply RPC load.
|
|
243
|
+
* @param userAccount Optional pre-fetched account data to seed with, skipping an RPC fetch.
|
|
244
|
+
* @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.
|
|
245
|
+
* @param accountSubscription Optional override for how the created `User` subscribes; defaults to the one-shot subscriber described above.
|
|
246
|
+
* @throws If no slot is available after subscribing.
|
|
247
|
+
*/
|
|
207
248
|
public async addPubkey(
|
|
208
249
|
userAccountPublicKey: PublicKey,
|
|
209
250
|
userAccount?: UserAccount,
|
|
@@ -239,6 +280,7 @@ export class UserMap implements UserMapInterface {
|
|
|
239
280
|
this.eventEmitter.emit('userUpdate', user);
|
|
240
281
|
}
|
|
241
282
|
|
|
283
|
+
/** Returns true if a `User` account keyed by `key` (the `User` account pubkey, base58) is cached in the map. */
|
|
242
284
|
public has(key: string): boolean {
|
|
243
285
|
return this.userMap.has(key);
|
|
244
286
|
}
|
|
@@ -251,6 +293,7 @@ export class UserMap implements UserMapInterface {
|
|
|
251
293
|
public get(key: string): User | undefined {
|
|
252
294
|
return this.userMap.get(key)?.data;
|
|
253
295
|
}
|
|
296
|
+
/** Like `get`, but also returns the slot at which the `User` account was last observed. */
|
|
254
297
|
public getWithSlot(key: string): DataAndSlot<User> | undefined {
|
|
255
298
|
return this.userMap.get(key);
|
|
256
299
|
}
|
|
@@ -278,6 +321,7 @@ export class UserMap implements UserMapInterface {
|
|
|
278
321
|
}
|
|
279
322
|
return userWithSlot.data;
|
|
280
323
|
}
|
|
324
|
+
/** Like `mustGet`, but also returns the slot at which the `User` account was observed. */
|
|
281
325
|
public async mustGetWithSlot(
|
|
282
326
|
key: string,
|
|
283
327
|
accountSubscription?: UserSubscriptionConfig
|
|
@@ -297,6 +341,7 @@ export class UserMap implements UserMapInterface {
|
|
|
297
341
|
return userWithSlot;
|
|
298
342
|
}
|
|
299
343
|
|
|
344
|
+
/** Like `mustGet`, but returns the underlying `UserAccount` data directly (throws if the `User`'s account is not loaded). */
|
|
300
345
|
public async mustGetUserAccount(key: string): Promise<UserAccount> {
|
|
301
346
|
const user = await this.mustGet(key);
|
|
302
347
|
return user.getUserAccountOrThrow();
|
|
@@ -316,9 +361,9 @@ export class UserMap implements UserMapInterface {
|
|
|
316
361
|
}
|
|
317
362
|
|
|
318
363
|
/**
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
* @param slot
|
|
364
|
+
* Implements the `DLOBSource` interface: builds a `DLOB` from every
|
|
365
|
+
* subscribed user's open orders.
|
|
366
|
+
* @param slot Slot to consider orders "current" as of (auction/trigger timing).
|
|
322
367
|
*/
|
|
323
368
|
public async getDLOB(slot: number): Promise<DLOB> {
|
|
324
369
|
const dlob = new DLOB();
|
|
@@ -326,12 +371,19 @@ export class UserMap implements UserMapInterface {
|
|
|
326
371
|
return dlob;
|
|
327
372
|
}
|
|
328
373
|
|
|
374
|
+
/** Ensures an entry exists in the map for `record.user`, adding it via `addPubkey` if not already present. */
|
|
329
375
|
public async updateWithOrderRecord(record: OrderRecord) {
|
|
330
376
|
if (!this.has(record.user.toString())) {
|
|
331
377
|
await this.addPubkey(record.user);
|
|
332
378
|
}
|
|
333
379
|
}
|
|
334
380
|
|
|
381
|
+
/**
|
|
382
|
+
* Incrementally updates the map in response to a single program event,
|
|
383
|
+
* ensuring an entry exists for every `User` account the event references
|
|
384
|
+
* (deposit/funding/liquidation/order/order-action/settle-pnl/new-user
|
|
385
|
+
* records). Unrecognized event types are silently ignored.
|
|
386
|
+
*/
|
|
335
387
|
public async updateWithEventRecord(record: WrappedEvent<any>) {
|
|
336
388
|
if (record.eventType === 'DepositRecord') {
|
|
337
389
|
const depositRecord = record as DepositRecord;
|
|
@@ -365,24 +417,29 @@ export class UserMap implements UserMapInterface {
|
|
|
365
417
|
}
|
|
366
418
|
}
|
|
367
419
|
|
|
420
|
+
/** Iterates all cached `User` instances. */
|
|
368
421
|
public *values(): IterableIterator<User> {
|
|
369
422
|
for (const dataAndSlot of this.userMap.values()) {
|
|
370
423
|
yield dataAndSlot.data;
|
|
371
424
|
}
|
|
372
425
|
}
|
|
426
|
+
/** Like `values`, but paired with the slot each `User` was last observed at. */
|
|
373
427
|
public valuesWithSlot(): IterableIterator<DataAndSlot<User>> {
|
|
374
428
|
return this.userMap.values();
|
|
375
429
|
}
|
|
376
430
|
|
|
431
|
+
/** Iterates all `[userAccountPublicKey, User]` pairs in the map. */
|
|
377
432
|
public *entries(): IterableIterator<[string, User]> {
|
|
378
433
|
for (const [key, dataAndSlot] of this.userMap.entries()) {
|
|
379
434
|
yield [key, dataAndSlot.data];
|
|
380
435
|
}
|
|
381
436
|
}
|
|
437
|
+
/** Like `entries`, but paired with the slot each `User` was last observed at. */
|
|
382
438
|
public entriesWithSlot(): IterableIterator<[string, DataAndSlot<User>]> {
|
|
383
439
|
return this.userMap.entries();
|
|
384
440
|
}
|
|
385
441
|
|
|
442
|
+
/** Number of `User` accounts currently cached in the map. */
|
|
386
443
|
public size(): number {
|
|
387
444
|
return this.userMap.size;
|
|
388
445
|
}
|
|
@@ -413,6 +470,7 @@ export class UserMap implements UserMapInterface {
|
|
|
413
470
|
return userAuthKeys;
|
|
414
471
|
}
|
|
415
472
|
|
|
473
|
+
/** Runs a full sync using the strategy configured in `UserMapConfig.syncConfig` (`'default'` or `'paginated'` — see `SyncConfig`). */
|
|
416
474
|
public async sync() {
|
|
417
475
|
if (this.syncConfig.type === 'default') {
|
|
418
476
|
return this.defaultSync();
|
|
@@ -421,6 +479,12 @@ export class UserMap implements UserMapInterface {
|
|
|
421
479
|
}
|
|
422
480
|
}
|
|
423
481
|
|
|
482
|
+
/**
|
|
483
|
+
* Builds the memcmp filter set for both the initial sync and the live
|
|
484
|
+
* subscription: always the `User`-account discriminator filter; plus a
|
|
485
|
+
* non-idle filter unless `includeIdle`; plus a pool-id filter if
|
|
486
|
+
* `filterByPoolId` is set; plus any caller-supplied `additionalFilters`.
|
|
487
|
+
*/
|
|
424
488
|
private getFilters(): MemcmpFilter[] {
|
|
425
489
|
const filters = [getUserFilter()];
|
|
426
490
|
if (!this.includeIdle) {
|
|
@@ -655,6 +719,11 @@ export class UserMap implements UserMapInterface {
|
|
|
655
719
|
}
|
|
656
720
|
}
|
|
657
721
|
|
|
722
|
+
/**
|
|
723
|
+
* Tears down the live subscription, unsubscribes and removes every cached
|
|
724
|
+
* `User`, and (if registered) removes the `stateAccountUpdate` listener
|
|
725
|
+
* that triggers auto-resync on `numberOfSubAccounts` changes.
|
|
726
|
+
*/
|
|
658
727
|
public async unsubscribe() {
|
|
659
728
|
await this.subscription.unsubscribe();
|
|
660
729
|
|
|
@@ -675,6 +744,13 @@ export class UserMap implements UserMapInterface {
|
|
|
675
744
|
}
|
|
676
745
|
}
|
|
677
746
|
|
|
747
|
+
/**
|
|
748
|
+
* Applies a fresh `userAccount` observation for `key` at `slot`. If the
|
|
749
|
+
* user is already cached, updates in place only if `slot` is at least as
|
|
750
|
+
* new as the cached slot (stale/out-of-order updates are dropped) and
|
|
751
|
+
* emits `'userUpdate'`. If not cached yet, adds it via `addPubkey`.
|
|
752
|
+
* Also advances `getSlot()`'s tracked most-recent slot.
|
|
753
|
+
*/
|
|
678
754
|
public async updateUserAccount(
|
|
679
755
|
key: string,
|
|
680
756
|
userAccount: UserAccount,
|
|
@@ -692,14 +768,16 @@ export class UserMap implements UserMapInterface {
|
|
|
692
768
|
this.eventEmitter.emit('userUpdate', userWithSlot.data);
|
|
693
769
|
}
|
|
694
770
|
} else {
|
|
695
|
-
this.addPubkey(new PublicKey(key), userAccount, slot);
|
|
771
|
+
await this.addPubkey(new PublicKey(key), userAccount, slot);
|
|
696
772
|
}
|
|
697
773
|
}
|
|
698
774
|
|
|
775
|
+
/** Advances the map's tracked most-recent slot to `slot` if it's newer. */
|
|
699
776
|
updateLatestSlot(slot: number): void {
|
|
700
777
|
this.mostRecentSlot = Math.max(slot, this.mostRecentSlot);
|
|
701
778
|
}
|
|
702
779
|
|
|
780
|
+
/** Returns the most recent slot at which any account update has been observed. */
|
|
703
781
|
public getSlot(): number {
|
|
704
782
|
return this.mostRecentSlot;
|
|
705
783
|
}
|