@velocity-exchange/sdk 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/browser/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/browser/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/browser/accounts/bulkAccountLoader.js +51 -0
- package/lib/browser/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/browser/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/browser/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/browser/accounts/bulkUserSubscription.js +8 -2
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/browser/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/browser/accounts/fetch.d.ts +59 -2
- package/lib/browser/accounts/fetch.js +57 -2
- package/lib/browser/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/browser/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/browser/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/browser/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/browser/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/browser/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/browser/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/browser/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/browser/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/browser/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/browser/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/browser/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/browser/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/browser/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/browser/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/browser/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/browser/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/browser/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/browser/accounts/testBulkAccountLoader.js +8 -0
- package/lib/browser/accounts/types.d.ts +149 -0
- package/lib/browser/accounts/types.js +13 -0
- package/lib/browser/accounts/utils.d.ts +18 -0
- package/lib/browser/accounts/utils.js +32 -16
- package/lib/browser/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/browser/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/browser/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/browser/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/browser/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/browser/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/browser/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/browser/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/browser/addresses/marketAddresses.d.ts +10 -0
- package/lib/browser/addresses/marketAddresses.js +10 -0
- package/lib/browser/addresses/pda.d.ts +214 -2
- package/lib/browser/addresses/pda.js +217 -5
- package/lib/browser/adminClient.d.ts +2136 -4
- package/lib/browser/adminClient.js +2150 -4
- package/lib/browser/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/browser/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/browser/auctionSubscriber/index.d.ts +6 -0
- package/lib/browser/auctionSubscriber/index.js +6 -0
- package/lib/browser/auctionSubscriber/types.d.ts +7 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/browser/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/browser/blockhashSubscriber/index.d.ts +5 -0
- package/lib/browser/blockhashSubscriber/index.js +5 -0
- package/lib/browser/blockhashSubscriber/types.d.ts +5 -0
- package/lib/browser/clock/clockSubscriber.d.ts +24 -0
- package/lib/browser/clock/clockSubscriber.js +22 -0
- package/lib/browser/config.d.ts +58 -4
- package/lib/browser/config.js +88 -21
- package/lib/browser/constants/numericConstants.d.ts +67 -0
- package/lib/browser/constants/numericConstants.js +68 -1
- package/lib/browser/constants/perpMarkets.d.ts +10 -0
- package/lib/browser/constants/perpMarkets.js +40 -908
- package/lib/browser/constants/spotMarkets.d.ts +13 -0
- package/lib/browser/constants/spotMarkets.js +16 -742
- package/lib/browser/constants/txConstants.d.ts +1 -0
- package/lib/browser/constants/txConstants.js +1 -0
- package/lib/browser/core/VelocityCore.d.ts +285 -8
- package/lib/browser/core/VelocityCore.js +281 -8
- package/lib/browser/core/instructions/deposit.d.ts +22 -0
- package/lib/browser/core/instructions/deposit.js +22 -0
- package/lib/browser/core/instructions/fill.d.ts +17 -0
- package/lib/browser/core/instructions/fill.js +17 -0
- package/lib/browser/core/instructions/funding.d.ts +12 -0
- package/lib/browser/core/instructions/funding.js +12 -0
- package/lib/browser/core/instructions/liquidation.d.ts +18 -0
- package/lib/browser/core/instructions/liquidation.js +18 -0
- package/lib/browser/core/instructions/orders.d.ts +28 -0
- package/lib/browser/core/instructions/orders.js +28 -0
- package/lib/browser/core/instructions/perpOrders.d.ts +106 -0
- package/lib/browser/core/instructions/perpOrders.js +106 -0
- package/lib/browser/core/instructions/settlement.d.ts +14 -0
- package/lib/browser/core/instructions/settlement.js +14 -0
- package/lib/browser/core/instructions/trigger.d.ts +15 -0
- package/lib/browser/core/instructions/trigger.js +15 -0
- package/lib/browser/core/instructions/withdraw.d.ts +21 -0
- package/lib/browser/core/instructions/withdraw.js +21 -0
- package/lib/browser/core/remainingAccounts.d.ts +47 -3
- package/lib/browser/core/remainingAccounts.js +20 -0
- package/lib/browser/core/signedMsg.d.ts +38 -0
- package/lib/browser/core/signedMsg.js +33 -0
- package/lib/browser/decode/customCoder.d.ts +39 -3
- package/lib/browser/decode/customCoder.js +45 -3
- package/lib/browser/decode/user.d.ts +22 -0
- package/lib/browser/decode/user.js +22 -0
- package/lib/browser/dlob/DLOB.d.ts +502 -53
- package/lib/browser/dlob/DLOB.js +540 -98
- package/lib/browser/dlob/DLOBNode.d.ts +86 -4
- package/lib/browser/dlob/DLOBNode.js +37 -4
- package/lib/browser/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/browser/dlob/DLOBSubscriber.js +42 -12
- package/lib/browser/dlob/NodeList.d.ts +69 -0
- package/lib/browser/dlob/NodeList.js +66 -0
- package/lib/browser/dlob/orderBookLevels.d.ts +106 -13
- package/lib/browser/dlob/orderBookLevels.js +84 -14
- package/lib/browser/dlob/types.d.ts +15 -0
- package/lib/browser/events/eventList.d.ts +14 -0
- package/lib/browser/events/eventList.js +14 -0
- package/lib/browser/events/eventSubscriber.d.ts +87 -10
- package/lib/browser/events/eventSubscriber.js +93 -8
- package/lib/browser/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/browser/events/eventsServerLogProvider.js +27 -0
- package/lib/browser/events/fetchLogs.d.ts +31 -0
- package/lib/browser/events/fetchLogs.js +46 -1
- package/lib/browser/events/parse.d.ts +23 -0
- package/lib/browser/events/parse.js +23 -0
- package/lib/browser/events/pollingLogProvider.d.ts +24 -0
- package/lib/browser/events/pollingLogProvider.js +24 -0
- package/lib/browser/events/sort.d.ts +11 -0
- package/lib/browser/events/sort.js +12 -0
- package/lib/browser/events/txEventCache.d.ts +13 -3
- package/lib/browser/events/txEventCache.js +19 -7
- package/lib/browser/events/types.d.ts +118 -2
- package/lib/browser/events/types.js +11 -0
- package/lib/browser/events/webSocketLogProvider.d.ts +23 -0
- package/lib/browser/events/webSocketLogProvider.js +28 -0
- package/lib/browser/factory/oracleClient.js +2 -2
- package/lib/browser/idl/velocity.d.ts +4 -4
- package/lib/browser/idl/velocity.json +4 -4
- package/lib/browser/keypair.d.ts +8 -0
- package/lib/browser/keypair.js +8 -0
- package/lib/browser/marginCalculation.d.ts +134 -2
- package/lib/browser/marginCalculation.js +121 -0
- package/lib/browser/math/amm.d.ts +348 -29
- package/lib/browser/math/amm.js +310 -32
- package/lib/browser/math/auction.d.ts +95 -19
- package/lib/browser/math/auction.js +118 -28
- package/lib/browser/math/bankruptcy.d.ts +46 -0
- package/lib/browser/math/bankruptcy.js +89 -1
- package/lib/browser/math/builder.d.ts +64 -8
- package/lib/browser/math/builder.js +71 -9
- package/lib/browser/math/conversion.d.ts +21 -0
- package/lib/browser/math/conversion.js +21 -0
- package/lib/browser/math/exchangeStatus.d.ts +91 -0
- package/lib/browser/math/exchangeStatus.js +106 -3
- package/lib/browser/math/funding.d.ts +57 -20
- package/lib/browser/math/funding.js +63 -23
- package/lib/browser/math/insurance.d.ts +62 -0
- package/lib/browser/math/insurance.js +62 -0
- package/lib/browser/math/liquidation.d.ts +127 -11
- package/lib/browser/math/liquidation.js +182 -19
- package/lib/browser/math/margin.d.ts +79 -13
- package/lib/browser/math/margin.js +80 -14
- package/lib/browser/math/market.d.ts +135 -15
- package/lib/browser/math/market.js +145 -17
- package/lib/browser/math/oracles.d.ts +113 -0
- package/lib/browser/math/oracles.js +118 -1
- package/lib/browser/math/orders.d.ts +115 -10
- package/lib/browser/math/orders.js +130 -19
- package/lib/browser/math/position.d.ts +80 -33
- package/lib/browser/math/position.js +80 -33
- package/lib/browser/math/repeg.d.ts +48 -10
- package/lib/browser/math/repeg.js +48 -10
- package/lib/browser/math/spotBalance.d.ts +200 -5
- package/lib/browser/math/spotBalance.js +239 -10
- package/lib/browser/math/spotMarket.d.ts +36 -3
- package/lib/browser/math/spotMarket.js +36 -3
- package/lib/browser/math/spotPosition.d.ts +72 -0
- package/lib/browser/math/spotPosition.js +62 -0
- package/lib/browser/math/state.d.ts +31 -0
- package/lib/browser/math/state.js +31 -0
- package/lib/browser/math/superStake.d.ts +126 -2
- package/lib/browser/math/superStake.js +123 -3
- package/lib/browser/math/tiers.d.ts +29 -0
- package/lib/browser/math/tiers.js +29 -0
- package/lib/browser/math/trade.d.ts +102 -51
- package/lib/browser/math/trade.js +101 -55
- package/lib/browser/math/utils.d.ts +71 -9
- package/lib/browser/math/utils.js +71 -9
- package/lib/browser/memcmp.d.ts +94 -0
- package/lib/browser/memcmp.js +103 -2
- package/lib/browser/oracles/oracleClientCache.d.ts +16 -0
- package/lib/browser/oracles/oracleClientCache.js +16 -0
- package/lib/browser/oracles/oracleId.d.ts +31 -0
- package/lib/browser/oracles/oracleId.js +39 -8
- package/lib/browser/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/browser/oracles/prelaunchOracleClient.js +20 -0
- package/lib/browser/oracles/pythClient.d.ts +31 -0
- package/lib/browser/oracles/pythClient.js +32 -1
- package/lib/browser/oracles/pythLazerClient.d.ts +34 -0
- package/lib/browser/oracles/pythLazerClient.js +35 -1
- package/lib/browser/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/browser/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/browser/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/browser/oracles/strictOraclePrice.js +21 -0
- package/lib/browser/oracles/types.d.ts +45 -0
- package/lib/browser/oracles/utils.d.ts +20 -0
- package/lib/browser/oracles/utils.js +20 -0
- package/lib/browser/orderParams.d.ts +42 -4
- package/lib/browser/orderParams.js +42 -4
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/browser/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/browser/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/browser/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/browser/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/browser/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/browser/orderSubscriber/types.d.ts +9 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/averageStrategy.js +1 -0
- package/lib/browser/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/browser/priorityFee/ewmaStrategy.js +10 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/browser/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/browser/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/browser/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/browser/priorityFee/maxStrategy.js +1 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/browser/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/browser/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/browser/priorityFee/types.d.ts +32 -0
- package/lib/browser/priorityFee/types.js +5 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/browser/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/browser/slot/SlotSubscriber.d.ts +18 -0
- package/lib/browser/slot/SlotSubscriber.js +16 -0
- package/lib/browser/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/browser/slot/SlothashSubscriber.js +25 -1
- package/lib/browser/tx/baseTxSender.d.ts +163 -0
- package/lib/browser/tx/baseTxSender.js +174 -6
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/browser/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/browser/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/browser/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/browser/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/browser/tx/fastSingleTxSender.js +48 -1
- package/lib/browser/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/browser/tx/forwardOnlyTxSender.js +48 -0
- package/lib/browser/tx/reportTransactionError.d.ts +18 -6
- package/lib/browser/tx/reportTransactionError.js +18 -6
- package/lib/browser/tx/retryTxSender.d.ts +40 -0
- package/lib/browser/tx/retryTxSender.js +39 -0
- package/lib/browser/tx/txHandler.d.ts +146 -35
- package/lib/browser/tx/txHandler.js +132 -32
- package/lib/browser/tx/txParamProcessor.d.ts +47 -0
- package/lib/browser/tx/txParamProcessor.js +47 -0
- package/lib/browser/tx/types.d.ts +46 -0
- package/lib/browser/tx/types.js +5 -0
- package/lib/browser/tx/utils.d.ts +26 -0
- package/lib/browser/tx/utils.js +26 -0
- package/lib/browser/tx/whileValidTxSender.d.ts +82 -0
- package/lib/browser/tx/whileValidTxSender.js +81 -0
- package/lib/browser/types.d.ts +781 -13
- package/lib/browser/types.js +126 -9
- package/lib/browser/user.d.ts +645 -84
- package/lib/browser/user.js +779 -96
- package/lib/browser/userMap/PollingSubscription.d.ts +10 -0
- package/lib/browser/userMap/PollingSubscription.js +14 -2
- package/lib/browser/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/browser/userMap/WebsocketSubscription.js +9 -0
- package/lib/browser/userMap/grpcSubscription.d.ts +8 -0
- package/lib/browser/userMap/grpcSubscription.js +8 -0
- package/lib/browser/userMap/referrerMap.d.ts +72 -2
- package/lib/browser/userMap/referrerMap.js +84 -2
- package/lib/browser/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/browser/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/browser/userMap/userMap.d.ts +81 -3
- package/lib/browser/userMap/userMap.js +81 -4
- package/lib/browser/userMap/userMapConfig.d.ts +23 -0
- package/lib/browser/userMap/userStatsMap.d.ts +22 -0
- package/lib/browser/userMap/userStatsMap.js +22 -0
- package/lib/browser/userName.d.ts +16 -0
- package/lib/browser/userName.js +16 -0
- package/lib/browser/userStats.d.ts +28 -1
- package/lib/browser/userStats.js +28 -1
- package/lib/browser/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/browser/util/TransactionConfirmationManager.js +33 -0
- package/lib/browser/util/chainClock.d.ts +24 -0
- package/lib/browser/util/chainClock.js +20 -0
- package/lib/browser/util/computeUnits.d.ts +32 -0
- package/lib/browser/util/computeUnits.js +32 -0
- package/lib/browser/util/digest.d.ts +17 -0
- package/lib/browser/util/digest.js +17 -0
- package/lib/browser/util/ed25519Utils.d.ts +12 -2
- package/lib/browser/util/ed25519Utils.js +12 -2
- package/lib/browser/util/promiseTimeout.d.ts +9 -0
- package/lib/browser/util/promiseTimeout.js +9 -0
- package/lib/browser/velocityClient.d.ts +3322 -215
- package/lib/browser/velocityClient.js +3412 -245
- package/lib/browser/wallet.d.ts +37 -0
- package/lib/browser/wallet.js +37 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserAccountSubscriber.js +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts +18 -0
- package/lib/node/accounts/basicUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/basicUserStatsAccountSubscriber.js +18 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts +52 -0
- package/lib/node/accounts/bulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/bulkAccountLoader.js +51 -0
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts +9 -2
- package/lib/node/accounts/bulkUserStatsSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserStatsSubscription.js +9 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts +8 -2
- package/lib/node/accounts/bulkUserSubscription.d.ts.map +1 -1
- package/lib/node/accounts/bulkUserSubscription.js +8 -2
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts +37 -0
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/customizedCadenceBulkAccountLoader.js +37 -0
- package/lib/node/accounts/fetch.d.ts +59 -2
- package/lib/node/accounts/fetch.d.ts.map +1 -1
- package/lib/node/accounts/fetch.js +57 -2
- package/lib/node/accounts/grpcAccountSubscriber.d.ts +30 -0
- package/lib/node/accounts/grpcAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcAccountSubscriber.js +30 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts +16 -0
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcInsuranceFundStakeAccountSubscriber.js +16 -0
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts +60 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiAccountSubscriber.js +118 -37
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcMultiUserAccountSubscriber.js +40 -12
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts +33 -0
- package/lib/node/accounts/grpcProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcProgramAccountSubscriber.js +33 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts +15 -0
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcUserStatsAccountSubscriber.js +15 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriber.js +41 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts +116 -0
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/grpcVelocityClientAccountSubscriberV2.js +152 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts +34 -0
- package/lib/node/accounts/laserProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/laserProgramAccountSubscriber.js +34 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserAccountSubscriber.js +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/oneShotUserStatsAccountSubscriber.js +19 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts +31 -0
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingInsuranceFundStakeAccountSubscriber.js +31 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts +19 -0
- package/lib/node/accounts/pollingOracleAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingOracleAccountSubscriber.js +21 -2
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingTokenAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingTokenAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts +32 -0
- package/lib/node/accounts/pollingUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserAccountSubscriber.js +32 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts +22 -0
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingUserStatsAccountSubscriber.js +22 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts +83 -0
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/pollingVelocityClientAccountSubscriber.js +84 -1
- package/lib/node/accounts/testBulkAccountLoader.d.ts +8 -0
- package/lib/node/accounts/testBulkAccountLoader.d.ts.map +1 -1
- package/lib/node/accounts/testBulkAccountLoader.js +8 -0
- package/lib/node/accounts/types.d.ts +149 -0
- package/lib/node/accounts/types.d.ts.map +1 -1
- package/lib/node/accounts/types.js +13 -0
- package/lib/node/accounts/utils.d.ts +18 -0
- package/lib/node/accounts/utils.d.ts.map +1 -1
- package/lib/node/accounts/utils.js +32 -16
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts +41 -0
- package/lib/node/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriber.js +41 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts +31 -0
- package/lib/node/accounts/webSocketAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketAccountSubscriberV2.js +31 -23
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts +27 -0
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketInsuranceFundStakeAccountSubscriber.js +27 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriber.js +36 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountSubscriberV2.js +25 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts +21 -0
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketProgramAccountsSubscriberV2.js +21 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts +26 -0
- package/lib/node/accounts/webSocketUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserAccountSubscriber.js +26 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketUserStatsAccountSubsriber.js +20 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts +121 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriber.js +123 -2
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts +96 -0
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.d.ts.map +1 -1
- package/lib/node/accounts/webSocketVelocityClientAccountSubscriberV2.js +108 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts +28 -0
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.d.ts.map +1 -1
- package/lib/node/accounts/websocketProgramUserAccountSubscriber.js +33 -0
- package/lib/node/addresses/marketAddresses.d.ts +10 -0
- package/lib/node/addresses/marketAddresses.d.ts.map +1 -1
- package/lib/node/addresses/marketAddresses.js +10 -0
- package/lib/node/addresses/pda.d.ts +214 -2
- package/lib/node/addresses/pda.d.ts.map +1 -1
- package/lib/node/addresses/pda.js +217 -5
- package/lib/node/adminClient.d.ts +2136 -4
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +2150 -4
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriber.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriber.js +15 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts +19 -0
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/auctionSubscriberGrpc.js +19 -0
- package/lib/node/auctionSubscriber/index.d.ts +6 -0
- package/lib/node/auctionSubscriber/index.d.ts.map +1 -1
- package/lib/node/auctionSubscriber/index.js +6 -0
- package/lib/node/auctionSubscriber/types.d.ts +7 -0
- package/lib/node/auctionSubscriber/types.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts +33 -0
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/BlockhashSubscriber.js +33 -0
- package/lib/node/blockhashSubscriber/index.d.ts +5 -0
- package/lib/node/blockhashSubscriber/index.d.ts.map +1 -1
- package/lib/node/blockhashSubscriber/index.js +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts +5 -0
- package/lib/node/blockhashSubscriber/types.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.d.ts +24 -0
- package/lib/node/clock/clockSubscriber.d.ts.map +1 -1
- package/lib/node/clock/clockSubscriber.js +22 -0
- package/lib/node/config.d.ts +58 -4
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +88 -21
- package/lib/node/constants/numericConstants.d.ts +67 -0
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +68 -1
- package/lib/node/constants/perpMarkets.d.ts +10 -0
- package/lib/node/constants/perpMarkets.d.ts.map +1 -1
- package/lib/node/constants/perpMarkets.js +40 -908
- package/lib/node/constants/spotMarkets.d.ts +13 -0
- package/lib/node/constants/spotMarkets.d.ts.map +1 -1
- package/lib/node/constants/spotMarkets.js +16 -742
- package/lib/node/constants/txConstants.d.ts +1 -0
- package/lib/node/constants/txConstants.d.ts.map +1 -1
- package/lib/node/constants/txConstants.js +1 -0
- package/lib/node/core/VelocityCore.d.ts +285 -8
- package/lib/node/core/VelocityCore.d.ts.map +1 -1
- package/lib/node/core/VelocityCore.js +281 -8
- package/lib/node/core/instructions/deposit.d.ts +22 -0
- package/lib/node/core/instructions/deposit.d.ts.map +1 -1
- package/lib/node/core/instructions/deposit.js +22 -0
- package/lib/node/core/instructions/fill.d.ts +17 -0
- package/lib/node/core/instructions/fill.d.ts.map +1 -1
- package/lib/node/core/instructions/fill.js +17 -0
- package/lib/node/core/instructions/funding.d.ts +12 -0
- package/lib/node/core/instructions/funding.d.ts.map +1 -1
- package/lib/node/core/instructions/funding.js +12 -0
- package/lib/node/core/instructions/liquidation.d.ts +18 -0
- package/lib/node/core/instructions/liquidation.d.ts.map +1 -1
- package/lib/node/core/instructions/liquidation.js +18 -0
- package/lib/node/core/instructions/orders.d.ts +28 -0
- package/lib/node/core/instructions/orders.d.ts.map +1 -1
- package/lib/node/core/instructions/orders.js +28 -0
- package/lib/node/core/instructions/perpOrders.d.ts +106 -0
- package/lib/node/core/instructions/perpOrders.d.ts.map +1 -1
- package/lib/node/core/instructions/perpOrders.js +106 -0
- package/lib/node/core/instructions/settlement.d.ts +14 -0
- package/lib/node/core/instructions/settlement.d.ts.map +1 -1
- package/lib/node/core/instructions/settlement.js +14 -0
- package/lib/node/core/instructions/trigger.d.ts +15 -0
- package/lib/node/core/instructions/trigger.d.ts.map +1 -1
- package/lib/node/core/instructions/trigger.js +15 -0
- package/lib/node/core/instructions/withdraw.d.ts +21 -0
- package/lib/node/core/instructions/withdraw.d.ts.map +1 -1
- package/lib/node/core/instructions/withdraw.js +21 -0
- package/lib/node/core/remainingAccounts.d.ts +47 -3
- package/lib/node/core/remainingAccounts.d.ts.map +1 -1
- package/lib/node/core/remainingAccounts.js +20 -0
- package/lib/node/core/signedMsg.d.ts +38 -0
- package/lib/node/core/signedMsg.d.ts.map +1 -1
- package/lib/node/core/signedMsg.js +33 -0
- package/lib/node/decode/customCoder.d.ts +39 -3
- package/lib/node/decode/customCoder.d.ts.map +1 -1
- package/lib/node/decode/customCoder.js +45 -3
- package/lib/node/decode/user.d.ts +22 -0
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +22 -0
- package/lib/node/dlob/DLOB.d.ts +502 -53
- package/lib/node/dlob/DLOB.d.ts.map +1 -1
- package/lib/node/dlob/DLOB.js +540 -98
- package/lib/node/dlob/DLOBNode.d.ts +86 -4
- package/lib/node/dlob/DLOBNode.d.ts.map +1 -1
- package/lib/node/dlob/DLOBNode.js +37 -4
- package/lib/node/dlob/DLOBSubscriber.d.ts +39 -12
- package/lib/node/dlob/DLOBSubscriber.d.ts.map +1 -1
- package/lib/node/dlob/DLOBSubscriber.js +42 -12
- package/lib/node/dlob/NodeList.d.ts +69 -0
- package/lib/node/dlob/NodeList.d.ts.map +1 -1
- package/lib/node/dlob/NodeList.js +66 -0
- package/lib/node/dlob/orderBookLevels.d.ts +106 -13
- package/lib/node/dlob/orderBookLevels.d.ts.map +1 -1
- package/lib/node/dlob/orderBookLevels.js +84 -14
- package/lib/node/dlob/types.d.ts +15 -0
- package/lib/node/dlob/types.d.ts.map +1 -1
- package/lib/node/events/eventList.d.ts +14 -0
- package/lib/node/events/eventList.d.ts.map +1 -1
- package/lib/node/events/eventList.js +14 -0
- package/lib/node/events/eventSubscriber.d.ts +87 -10
- package/lib/node/events/eventSubscriber.d.ts.map +1 -1
- package/lib/node/events/eventSubscriber.js +93 -8
- package/lib/node/events/eventsServerLogProvider.d.ts +22 -0
- package/lib/node/events/eventsServerLogProvider.d.ts.map +1 -1
- package/lib/node/events/eventsServerLogProvider.js +27 -0
- package/lib/node/events/fetchLogs.d.ts +31 -0
- package/lib/node/events/fetchLogs.d.ts.map +1 -1
- package/lib/node/events/fetchLogs.js +46 -1
- package/lib/node/events/parse.d.ts +23 -0
- package/lib/node/events/parse.d.ts.map +1 -1
- package/lib/node/events/parse.js +23 -0
- package/lib/node/events/pollingLogProvider.d.ts +24 -0
- package/lib/node/events/pollingLogProvider.d.ts.map +1 -1
- package/lib/node/events/pollingLogProvider.js +24 -0
- package/lib/node/events/sort.d.ts +11 -0
- package/lib/node/events/sort.d.ts.map +1 -1
- package/lib/node/events/sort.js +12 -0
- package/lib/node/events/txEventCache.d.ts +13 -3
- package/lib/node/events/txEventCache.d.ts.map +1 -1
- package/lib/node/events/txEventCache.js +19 -7
- package/lib/node/events/types.d.ts +118 -2
- package/lib/node/events/types.d.ts.map +1 -1
- package/lib/node/events/types.js +11 -0
- package/lib/node/events/webSocketLogProvider.d.ts +23 -0
- package/lib/node/events/webSocketLogProvider.d.ts.map +1 -1
- package/lib/node/events/webSocketLogProvider.js +28 -0
- package/lib/node/factory/oracleClient.js +2 -2
- package/lib/node/idl/velocity.d.ts +4 -4
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +4 -4
- package/lib/node/keypair.d.ts +8 -0
- package/lib/node/keypair.d.ts.map +1 -1
- package/lib/node/keypair.js +8 -0
- package/lib/node/marginCalculation.d.ts +134 -2
- package/lib/node/marginCalculation.d.ts.map +1 -1
- package/lib/node/marginCalculation.js +121 -0
- package/lib/node/math/amm.d.ts +348 -29
- package/lib/node/math/amm.d.ts.map +1 -1
- package/lib/node/math/amm.js +310 -32
- package/lib/node/math/auction.d.ts +95 -19
- package/lib/node/math/auction.d.ts.map +1 -1
- package/lib/node/math/auction.js +118 -28
- package/lib/node/math/bankruptcy.d.ts +46 -0
- package/lib/node/math/bankruptcy.d.ts.map +1 -1
- package/lib/node/math/bankruptcy.js +89 -1
- package/lib/node/math/builder.d.ts +64 -8
- package/lib/node/math/builder.d.ts.map +1 -1
- package/lib/node/math/builder.js +71 -9
- package/lib/node/math/conversion.d.ts +21 -0
- package/lib/node/math/conversion.d.ts.map +1 -1
- package/lib/node/math/conversion.js +21 -0
- package/lib/node/math/exchangeStatus.d.ts +91 -0
- package/lib/node/math/exchangeStatus.d.ts.map +1 -1
- package/lib/node/math/exchangeStatus.js +106 -3
- package/lib/node/math/funding.d.ts +57 -20
- package/lib/node/math/funding.d.ts.map +1 -1
- package/lib/node/math/funding.js +63 -23
- package/lib/node/math/insurance.d.ts +62 -0
- package/lib/node/math/insurance.d.ts.map +1 -1
- package/lib/node/math/insurance.js +62 -0
- package/lib/node/math/liquidation.d.ts +127 -11
- package/lib/node/math/liquidation.d.ts.map +1 -1
- package/lib/node/math/liquidation.js +182 -19
- package/lib/node/math/margin.d.ts +79 -13
- package/lib/node/math/margin.d.ts.map +1 -1
- package/lib/node/math/margin.js +80 -14
- package/lib/node/math/market.d.ts +135 -15
- package/lib/node/math/market.d.ts.map +1 -1
- package/lib/node/math/market.js +145 -17
- package/lib/node/math/oracles.d.ts +113 -0
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +118 -1
- package/lib/node/math/orders.d.ts +115 -10
- package/lib/node/math/orders.d.ts.map +1 -1
- package/lib/node/math/orders.js +130 -19
- package/lib/node/math/position.d.ts +80 -33
- package/lib/node/math/position.d.ts.map +1 -1
- package/lib/node/math/position.js +80 -33
- package/lib/node/math/repeg.d.ts +48 -10
- package/lib/node/math/repeg.d.ts.map +1 -1
- package/lib/node/math/repeg.js +48 -10
- package/lib/node/math/spotBalance.d.ts +200 -5
- package/lib/node/math/spotBalance.d.ts.map +1 -1
- package/lib/node/math/spotBalance.js +239 -10
- package/lib/node/math/spotMarket.d.ts +36 -3
- package/lib/node/math/spotMarket.d.ts.map +1 -1
- package/lib/node/math/spotMarket.js +36 -3
- package/lib/node/math/spotPosition.d.ts +72 -0
- package/lib/node/math/spotPosition.d.ts.map +1 -1
- package/lib/node/math/spotPosition.js +62 -0
- package/lib/node/math/state.d.ts +31 -0
- package/lib/node/math/state.d.ts.map +1 -1
- package/lib/node/math/state.js +31 -0
- package/lib/node/math/superStake.d.ts +126 -2
- package/lib/node/math/superStake.d.ts.map +1 -1
- package/lib/node/math/superStake.js +123 -3
- package/lib/node/math/tiers.d.ts +29 -0
- package/lib/node/math/tiers.d.ts.map +1 -1
- package/lib/node/math/tiers.js +29 -0
- package/lib/node/math/trade.d.ts +102 -51
- package/lib/node/math/trade.d.ts.map +1 -1
- package/lib/node/math/trade.js +101 -55
- package/lib/node/math/utils.d.ts +71 -9
- package/lib/node/math/utils.d.ts.map +1 -1
- package/lib/node/math/utils.js +71 -9
- package/lib/node/memcmp.d.ts +94 -0
- package/lib/node/memcmp.d.ts.map +1 -1
- package/lib/node/memcmp.js +103 -2
- package/lib/node/oracles/oracleClientCache.d.ts +16 -0
- package/lib/node/oracles/oracleClientCache.d.ts.map +1 -1
- package/lib/node/oracles/oracleClientCache.js +16 -0
- package/lib/node/oracles/oracleId.d.ts +31 -0
- package/lib/node/oracles/oracleId.d.ts.map +1 -1
- package/lib/node/oracles/oracleId.js +39 -8
- package/lib/node/oracles/prelaunchOracleClient.d.ts +20 -0
- package/lib/node/oracles/prelaunchOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/prelaunchOracleClient.js +20 -0
- package/lib/node/oracles/pythClient.d.ts +31 -0
- package/lib/node/oracles/pythClient.d.ts.map +1 -1
- package/lib/node/oracles/pythClient.js +32 -1
- package/lib/node/oracles/pythLazerClient.d.ts +34 -0
- package/lib/node/oracles/pythLazerClient.d.ts.map +1 -1
- package/lib/node/oracles/pythLazerClient.js +35 -1
- package/lib/node/oracles/quoteAssetOracleClient.d.ts +18 -0
- package/lib/node/oracles/quoteAssetOracleClient.d.ts.map +1 -1
- package/lib/node/oracles/quoteAssetOracleClient.js +18 -0
- package/lib/node/oracles/strictOraclePrice.d.ts +21 -0
- package/lib/node/oracles/strictOraclePrice.d.ts.map +1 -1
- package/lib/node/oracles/strictOraclePrice.js +21 -0
- package/lib/node/oracles/types.d.ts +45 -0
- package/lib/node/oracles/types.d.ts.map +1 -1
- package/lib/node/oracles/utils.d.ts +20 -0
- package/lib/node/oracles/utils.d.ts.map +1 -1
- package/lib/node/oracles/utils.js +20 -0
- package/lib/node/orderParams.d.ts +42 -4
- package/lib/node/orderParams.d.ts.map +1 -1
- package/lib/node/orderParams.js +42 -4
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +56 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +56 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts +11 -0
- package/lib/node/orderSubscriber/PollingSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/PollingSubscription.js +11 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts +18 -0
- package/lib/node/orderSubscriber/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/WebsocketSubscription.js +18 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts +16 -0
- package/lib/node/orderSubscriber/grpcSubscription.d.ts.map +1 -1
- package/lib/node/orderSubscriber/grpcSubscription.js +16 -0
- package/lib/node/orderSubscriber/types.d.ts +9 -0
- package/lib/node/orderSubscriber/types.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts +1 -0
- package/lib/node/priorityFee/averageStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/averageStrategy.js +1 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts +10 -0
- package/lib/node/priorityFee/ewmaStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/ewmaStrategy.js +10 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts +13 -0
- package/lib/node/priorityFee/heliusPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/heliusPriorityFeeMethod.js +9 -2
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxOverSlotsStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxOverSlotsStrategy.js +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts +1 -0
- package/lib/node/priorityFee/maxStrategy.d.ts.map +1 -1
- package/lib/node/priorityFee/maxStrategy.js +1 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriber.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriber.js +39 -0
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts +20 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.d.ts.map +1 -1
- package/lib/node/priorityFee/priorityFeeSubscriberMap.js +21 -2
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts +12 -0
- package/lib/node/priorityFee/solanaPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/solanaPriorityFeeMethod.js +10 -0
- package/lib/node/priorityFee/types.d.ts +32 -0
- package/lib/node/priorityFee/types.d.ts.map +1 -1
- package/lib/node/priorityFee/types.js +5 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts +11 -0
- package/lib/node/priorityFee/velocityPriorityFeeMethod.d.ts.map +1 -1
- package/lib/node/priorityFee/velocityPriorityFeeMethod.js +8 -0
- package/lib/node/slot/SlotSubscriber.d.ts +18 -0
- package/lib/node/slot/SlotSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlotSubscriber.js +16 -0
- package/lib/node/slot/SlothashSubscriber.d.ts +26 -0
- package/lib/node/slot/SlothashSubscriber.d.ts.map +1 -1
- package/lib/node/slot/SlothashSubscriber.js +25 -1
- package/lib/node/tx/baseTxSender.d.ts +163 -0
- package/lib/node/tx/baseTxSender.d.ts.map +1 -1
- package/lib/node/tx/baseTxSender.js +174 -6
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts +12 -0
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/baseBlockhashFetcher.js +12 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts +15 -0
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.d.ts.map +1 -1
- package/lib/node/tx/blockhashFetcher/cachedBlockhashFetcher.js +15 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts +4 -0
- package/lib/node/tx/blockhashFetcher/types.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.d.ts +47 -0
- package/lib/node/tx/fastSingleTxSender.d.ts.map +1 -1
- package/lib/node/tx/fastSingleTxSender.js +48 -1
- package/lib/node/tx/forwardOnlyTxSender.d.ts +48 -0
- package/lib/node/tx/forwardOnlyTxSender.d.ts.map +1 -1
- package/lib/node/tx/forwardOnlyTxSender.js +48 -0
- package/lib/node/tx/reportTransactionError.d.ts +18 -6
- package/lib/node/tx/reportTransactionError.d.ts.map +1 -1
- package/lib/node/tx/reportTransactionError.js +18 -6
- package/lib/node/tx/retryTxSender.d.ts +40 -0
- package/lib/node/tx/retryTxSender.d.ts.map +1 -1
- package/lib/node/tx/retryTxSender.js +39 -0
- package/lib/node/tx/txHandler.d.ts +146 -35
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +132 -32
- package/lib/node/tx/txParamProcessor.d.ts +47 -0
- package/lib/node/tx/txParamProcessor.d.ts.map +1 -1
- package/lib/node/tx/txParamProcessor.js +47 -0
- package/lib/node/tx/types.d.ts +46 -0
- package/lib/node/tx/types.d.ts.map +1 -1
- package/lib/node/tx/types.js +5 -0
- package/lib/node/tx/utils.d.ts +26 -0
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +26 -0
- package/lib/node/tx/whileValidTxSender.d.ts +82 -0
- package/lib/node/tx/whileValidTxSender.d.ts.map +1 -1
- package/lib/node/tx/whileValidTxSender.js +81 -0
- package/lib/node/types.d.ts +781 -13
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/types.js +126 -9
- package/lib/node/user.d.ts +645 -84
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +779 -96
- package/lib/node/userMap/PollingSubscription.d.ts +10 -0
- package/lib/node/userMap/PollingSubscription.d.ts.map +1 -1
- package/lib/node/userMap/PollingSubscription.js +14 -2
- package/lib/node/userMap/WebsocketSubscription.d.ts +9 -0
- package/lib/node/userMap/WebsocketSubscription.d.ts.map +1 -1
- package/lib/node/userMap/WebsocketSubscription.js +9 -0
- package/lib/node/userMap/grpcSubscription.d.ts +8 -0
- package/lib/node/userMap/grpcSubscription.d.ts.map +1 -1
- package/lib/node/userMap/grpcSubscription.js +8 -0
- package/lib/node/userMap/referrerMap.d.ts +72 -2
- package/lib/node/userMap/referrerMap.d.ts.map +1 -1
- package/lib/node/userMap/referrerMap.js +84 -2
- package/lib/node/userMap/revenueShareEscrowMap.d.ts +37 -10
- package/lib/node/userMap/revenueShareEscrowMap.d.ts.map +1 -1
- package/lib/node/userMap/revenueShareEscrowMap.js +38 -11
- package/lib/node/userMap/userMap.d.ts +81 -3
- package/lib/node/userMap/userMap.d.ts.map +1 -1
- package/lib/node/userMap/userMap.js +81 -4
- package/lib/node/userMap/userMapConfig.d.ts +23 -0
- package/lib/node/userMap/userMapConfig.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.d.ts +22 -0
- package/lib/node/userMap/userStatsMap.d.ts.map +1 -1
- package/lib/node/userMap/userStatsMap.js +22 -0
- package/lib/node/userName.d.ts +16 -0
- package/lib/node/userName.d.ts.map +1 -1
- package/lib/node/userName.js +16 -0
- package/lib/node/userStats.d.ts +28 -1
- package/lib/node/userStats.d.ts.map +1 -1
- package/lib/node/userStats.js +28 -1
- package/lib/node/util/TransactionConfirmationManager.d.ts +33 -0
- package/lib/node/util/TransactionConfirmationManager.d.ts.map +1 -1
- package/lib/node/util/TransactionConfirmationManager.js +33 -0
- package/lib/node/util/chainClock.d.ts +24 -0
- package/lib/node/util/chainClock.d.ts.map +1 -1
- package/lib/node/util/chainClock.js +20 -0
- package/lib/node/util/computeUnits.d.ts +32 -0
- package/lib/node/util/computeUnits.d.ts.map +1 -1
- package/lib/node/util/computeUnits.js +32 -0
- package/lib/node/util/digest.d.ts +17 -0
- package/lib/node/util/digest.d.ts.map +1 -1
- package/lib/node/util/digest.js +17 -0
- package/lib/node/util/ed25519Utils.d.ts +12 -2
- package/lib/node/util/ed25519Utils.d.ts.map +1 -1
- package/lib/node/util/ed25519Utils.js +12 -2
- package/lib/node/util/promiseTimeout.d.ts +9 -0
- package/lib/node/util/promiseTimeout.d.ts.map +1 -1
- package/lib/node/util/promiseTimeout.js +9 -0
- package/lib/node/velocityClient.d.ts +3322 -215
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +3412 -245
- package/lib/node/wallet.d.ts +37 -0
- package/lib/node/wallet.d.ts.map +1 -1
- package/lib/node/wallet.js +37 -0
- package/package.json +2 -1
- package/src/accounts/basicUserAccountSubscriber.ts +18 -0
- package/src/accounts/basicUserStatsAccountSubscriber.ts +18 -0
- package/src/accounts/bulkAccountLoader.ts +52 -0
- package/src/accounts/bulkUserStatsSubscription.ts +9 -2
- package/src/accounts/bulkUserSubscription.ts +8 -2
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +37 -0
- package/src/accounts/fetch.ts +59 -2
- package/src/accounts/grpcAccountSubscriber.ts +30 -0
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +16 -0
- package/src/accounts/grpcMultiAccountSubscriber.ts +121 -38
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +49 -11
- package/src/accounts/grpcProgramAccountSubscriber.ts +33 -0
- package/src/accounts/grpcUserAccountSubscriber.ts +15 -0
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +15 -0
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +41 -0
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +160 -1
- package/src/accounts/laserProgramAccountSubscriber.ts +34 -0
- package/src/accounts/oneShotUserAccountSubscriber.ts +19 -0
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +19 -0
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +31 -0
- package/src/accounts/pollingOracleAccountSubscriber.ts +21 -2
- package/src/accounts/pollingTokenAccountSubscriber.ts +22 -0
- package/src/accounts/pollingUserAccountSubscriber.ts +32 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +22 -0
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +84 -1
- package/src/accounts/testBulkAccountLoader.ts +8 -0
- package/src/accounts/types.ts +149 -0
- package/src/accounts/utils.ts +42 -24
- package/src/accounts/webSocketAccountSubscriber.ts +41 -0
- package/src/accounts/webSocketAccountSubscriberV2.ts +31 -23
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +27 -0
- package/src/accounts/webSocketProgramAccountSubscriber.ts +36 -0
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +26 -0
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +21 -0
- package/src/accounts/webSocketUserAccountSubscriber.ts +26 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +20 -0
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +127 -2
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +110 -0
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +33 -0
- package/src/addresses/marketAddresses.ts +10 -0
- package/src/addresses/pda.ts +228 -12
- package/src/adminClient.ts +2156 -4
- package/src/auctionSubscriber/auctionSubscriber.ts +15 -0
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +19 -0
- package/src/auctionSubscriber/index.ts +6 -0
- package/src/auctionSubscriber/types.ts +7 -0
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +33 -0
- package/src/blockhashSubscriber/index.ts +5 -0
- package/src/blockhashSubscriber/types.ts +5 -4
- package/src/clock/clockSubscriber.ts +24 -0
- package/src/config.ts +109 -22
- package/src/constants/numericConstants.ts +70 -0
- package/src/constants/perpMarkets.ts +45 -960
- package/src/constants/spotMarkets.ts +23 -793
- package/src/constants/txConstants.ts +1 -0
- package/src/core/VelocityCore.ts +286 -8
- package/src/core/instructions/deposit.ts +22 -0
- package/src/core/instructions/fill.ts +17 -0
- package/src/core/instructions/funding.ts +12 -0
- package/src/core/instructions/liquidation.ts +18 -0
- package/src/core/instructions/orders.ts +28 -0
- package/src/core/instructions/perpOrders.ts +106 -0
- package/src/core/instructions/settlement.ts +14 -0
- package/src/core/instructions/trigger.ts +15 -0
- package/src/core/instructions/withdraw.ts +21 -0
- package/src/core/remainingAccounts.ts +47 -3
- package/src/core/signedMsg.ts +38 -0
- package/src/decode/customCoder.ts +46 -3
- package/src/decode/user.ts +22 -0
- package/src/dlob/DLOB.ts +668 -97
- package/src/dlob/DLOBNode.ts +98 -6
- package/src/dlob/DLOBSubscriber.ts +49 -12
- package/src/dlob/NodeList.ts +69 -0
- package/src/dlob/orderBookLevels.ts +108 -14
- package/src/dlob/types.ts +15 -0
- package/src/events/eventList.ts +14 -0
- package/src/events/eventSubscriber.ts +100 -19
- package/src/events/eventsServerLogProvider.ts +28 -0
- package/src/events/fetchLogs.ts +52 -2
- package/src/events/parse.ts +23 -0
- package/src/events/pollingLogProvider.ts +24 -0
- package/src/events/sort.ts +12 -0
- package/src/events/txEventCache.ts +19 -7
- package/src/events/types.ts +131 -11
- package/src/events/webSocketLogProvider.ts +29 -0
- package/src/factory/oracleClient.ts +2 -2
- package/src/idl/velocity.json +4 -4
- package/src/idl/velocity.ts +4 -4
- package/src/keypair.ts +8 -0
- package/src/marginCalculation.ts +153 -2
- package/src/math/amm.ts +371 -36
- package/src/math/auction.ts +139 -30
- package/src/math/bankruptcy.ts +104 -1
- package/src/math/builder.ts +74 -8
- package/src/math/conversion.ts +21 -0
- package/src/math/exchangeStatus.ts +117 -2
- package/src/math/funding.ts +63 -23
- package/src/math/insurance.ts +62 -0
- package/src/math/liquidation.ts +227 -17
- package/src/math/margin.ts +80 -14
- package/src/math/market.ts +148 -17
- package/src/math/oracles.ts +124 -0
- package/src/math/orders.ts +141 -19
- package/src/math/position.ts +80 -33
- package/src/math/repeg.ts +48 -10
- package/src/math/spotBalance.ts +252 -12
- package/src/math/spotMarket.ts +36 -3
- package/src/math/spotPosition.ts +72 -0
- package/src/math/state.ts +31 -0
- package/src/math/superStake.ts +126 -3
- package/src/math/tiers.ts +29 -0
- package/src/math/trade.ts +125 -55
- package/src/math/utils.ts +71 -9
- package/src/memcmp.ts +104 -2
- package/src/oracles/oracleClientCache.ts +16 -0
- package/src/oracles/oracleId.ts +39 -6
- package/src/oracles/prelaunchOracleClient.ts +20 -0
- package/src/oracles/pythClient.ts +32 -1
- package/src/oracles/pythLazerClient.ts +35 -1
- package/src/oracles/quoteAssetOracleClient.ts +18 -0
- package/src/oracles/strictOraclePrice.ts +21 -0
- package/src/oracles/types.ts +45 -0
- package/src/oracles/utils.ts +20 -0
- package/src/orderParams.ts +42 -4
- package/src/orderSubscriber/OrderSubscriber.ts +56 -0
- package/src/orderSubscriber/PollingSubscription.ts +11 -0
- package/src/orderSubscriber/WebsocketSubscription.ts +18 -0
- package/src/orderSubscriber/grpcSubscription.ts +16 -0
- package/src/orderSubscriber/types.ts +9 -0
- package/src/priorityFee/averageOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/averageStrategy.ts +1 -0
- package/src/priorityFee/ewmaStrategy.ts +10 -0
- package/src/priorityFee/heliusPriorityFeeMethod.ts +13 -2
- package/src/priorityFee/maxOverSlotsStrategy.ts +1 -0
- package/src/priorityFee/maxStrategy.ts +1 -0
- package/src/priorityFee/priorityFeeSubscriber.ts +39 -0
- package/src/priorityFee/priorityFeeSubscriberMap.ts +21 -2
- package/src/priorityFee/solanaPriorityFeeMethod.ts +12 -0
- package/src/priorityFee/types.ts +33 -15
- package/src/priorityFee/velocityPriorityFeeMethod.ts +11 -0
- package/src/slot/SlotSubscriber.ts +18 -0
- package/src/slot/SlothashSubscriber.ts +27 -1
- package/src/tx/baseTxSender.ts +185 -5
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +12 -0
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +15 -0
- package/src/tx/blockhashFetcher/types.ts +4 -0
- package/src/tx/fastSingleTxSender.ts +58 -4
- package/src/tx/forwardOnlyTxSender.ts +48 -0
- package/src/tx/reportTransactionError.ts +18 -6
- package/src/tx/retryTxSender.ts +40 -0
- package/src/tx/txHandler.ts +146 -35
- package/src/tx/txParamProcessor.ts +47 -0
- package/src/tx/types.ts +46 -0
- package/src/tx/utils.ts +26 -0
- package/src/tx/whileValidTxSender.ts +82 -0
- package/src/types.ts +777 -24
- package/src/user.ts +869 -110
- package/src/userMap/PollingSubscription.ts +16 -2
- package/src/userMap/WebsocketSubscription.ts +9 -0
- package/src/userMap/grpcSubscription.ts +8 -0
- package/src/userMap/referrerMap.ts +92 -3
- package/src/userMap/revenueShareEscrowMap.ts +38 -11
- package/src/userMap/userMap.ts +82 -4
- package/src/userMap/userMapConfig.ts +23 -10
- package/src/userMap/userStatsMap.ts +22 -0
- package/src/userName.ts +16 -0
- package/src/userStats.ts +28 -1
- package/src/util/TransactionConfirmationManager.ts +33 -0
- package/src/util/chainClock.ts +24 -0
- package/src/util/computeUnits.ts +32 -0
- package/src/util/digest.ts +17 -0
- package/src/util/ed25519Utils.ts +12 -2
- package/src/util/promiseTimeout.ts +9 -0
- package/src/velocityClient.ts +3439 -249
- package/src/wallet.ts +37 -0
- package/tests/VelocityCore/builder_escrow.test.ts +121 -0
- package/tests/amm/test.ts +102 -0
- package/tests/builder/builderFee.test.ts +42 -0
- package/tests/dlob/tickSizeStandardization.ts +545 -0
- package/tests/exchangeStatus/test.ts +45 -0
- package/tests/liquidation/test.ts +125 -0
- package/tests/oracles/mmOracleGate.test.ts +379 -0
- package/tests/oracles/pythPegSnap.test.ts +76 -0
- package/tests/sdkParity/enumParity.test.ts +84 -0
- package/tests/sdkParity/marginCategoryFill.test.ts +143 -0
- package/tests/sdkParity/memcmpOffsets.test.ts +139 -0
- package/tests/spot/test.ts +55 -0
- package/tests/user/bankruptcy.ts +165 -0
- package/tests/user/feeAndWithdrawLimits.ts +284 -0
- package/tests/user/getMarginCalculation.ts +226 -1
- package/tests/user/test.ts +8 -4
|
@@ -28,36 +28,64 @@ import { standardizeBaseAssetAmount, standardizePrice } from '../math/orders';
|
|
|
28
28
|
|
|
29
29
|
type liquiditySource = 'vamm' | 'dlob' | 'indicative';
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* A single aggregated price level of an L2 order book: one price with the combined size of all
|
|
33
|
+
* orders resting at (or grouped into) that price, broken down by originating liquidity source.
|
|
34
|
+
*/
|
|
31
35
|
export type L2Level = {
|
|
36
|
+
/** Level price, PRICE_PRECISION (1e6). */
|
|
32
37
|
price: BN;
|
|
38
|
+
/** Total size resting at this price, BASE_PRECISION (1e9). */
|
|
33
39
|
size: BN;
|
|
40
|
+
/** Size contributed by each liquidity source (`'vamm'`, `'dlob'`, `'indicative'`), BASE_PRECISION (1e9). Sources with no contribution are omitted rather than zero. */
|
|
34
41
|
sources: { [key in liquiditySource]?: BN };
|
|
35
42
|
};
|
|
36
43
|
|
|
44
|
+
/** Aggregated (price, size) view of a market's book, as produced by `DLOB.getL2`. */
|
|
37
45
|
export type L2OrderBook = {
|
|
46
|
+
/** Ask levels, ordered from best (lowest price) to worst. */
|
|
38
47
|
asks: L2Level[];
|
|
48
|
+
/** Bid levels, ordered from best (highest price) to worst. */
|
|
39
49
|
bids: L2Level[];
|
|
50
|
+
/** Slot the book was computed at, if the caller supplied one. */
|
|
40
51
|
slot?: number;
|
|
41
52
|
};
|
|
42
53
|
|
|
54
|
+
/** Supplies fallback (non-DLOB) L2 liquidity — e.g. the vAMM — to be merged into `DLOB.getL2`'s output. See `getVammL2Generator`. */
|
|
43
55
|
export interface L2OrderBookGenerator {
|
|
56
|
+
/** Yields ask levels best-first (ascending price). */
|
|
44
57
|
getL2Asks(): Generator<L2Level>;
|
|
58
|
+
/** Yields bid levels best-first (descending price). */
|
|
45
59
|
getL2Bids(): Generator<L2Level>;
|
|
46
60
|
}
|
|
47
61
|
|
|
62
|
+
/** A single unaggregated order in an L3 (order-by-order) book view, as produced by `DLOB.getL3`. */
|
|
48
63
|
export type L3Level = {
|
|
64
|
+
/** Order's limit price, PRICE_PRECISION (1e6). */
|
|
49
65
|
price: BN;
|
|
66
|
+
/** Order's remaining (unfilled) size, BASE_PRECISION (1e9). */
|
|
50
67
|
size: BN;
|
|
68
|
+
/** Pubkey of the order's owning `User` account. */
|
|
51
69
|
maker: PublicKey;
|
|
70
|
+
/** The order's `orderId` (unique per maker, not globally). */
|
|
52
71
|
orderId: number;
|
|
53
72
|
};
|
|
54
73
|
|
|
74
|
+
/** Unaggregated, order-by-order view of a market's resting liquidity, as produced by `DLOB.getL3`. Does not include fallback (e.g. vAMM) liquidity. */
|
|
55
75
|
export type L3OrderBook = {
|
|
76
|
+
/** Individual resting ask orders, ordered from best (lowest price) to worst. */
|
|
56
77
|
asks: L3Level[];
|
|
78
|
+
/** Individual resting bid orders, ordered from best (highest price) to worst. */
|
|
57
79
|
bids: L3Level[];
|
|
80
|
+
/** Slot the book was computed at, if the caller supplied one. */
|
|
58
81
|
slot?: number;
|
|
59
82
|
};
|
|
60
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Default top-of-book quote notional breakpoints ($500/$1000/$2000/$5000, QUOTE_PRECISION 1e6)
|
|
86
|
+
* used by `getVammL2Generator` to produce tighter, more granular vAMM levels near the top of the
|
|
87
|
+
* book for non-major markets before falling back to evenly sized levels for the remaining depth.
|
|
88
|
+
*/
|
|
61
89
|
export const DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS = [
|
|
62
90
|
new BN(500).mul(QUOTE_PRECISION),
|
|
63
91
|
new BN(1000).mul(QUOTE_PRECISION),
|
|
@@ -65,6 +93,11 @@ export const DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS = [
|
|
|
65
93
|
new BN(5000).mul(QUOTE_PRECISION),
|
|
66
94
|
];
|
|
67
95
|
|
|
96
|
+
/**
|
|
97
|
+
* Same as `DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS` but sized for deeper/more liquid "majors" markets
|
|
98
|
+
* ($5000/$10000/$20000/$50000, QUOTE_PRECISION 1e6). `DLOBSubscriber.getL2` selects this set for
|
|
99
|
+
* `marketIndex < 3`.
|
|
100
|
+
*/
|
|
68
101
|
export const MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS = [
|
|
69
102
|
new BN(5000).mul(QUOTE_PRECISION),
|
|
70
103
|
new BN(10000).mul(QUOTE_PRECISION),
|
|
@@ -75,15 +108,24 @@ export const MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS = [
|
|
|
75
108
|
const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
|
|
76
109
|
|
|
77
110
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
111
|
+
* Converts a generator of individual `DLOBNode`s (already sorted best-first, e.g. from
|
|
112
|
+
* `DLOB.getRestingLimitAsks`/`getRestingLimitBids`) into a generator of `L2Level`s — one level
|
|
113
|
+
* per node, not yet merged by price (merging/deduping happens in `createL2Levels`). Nodes with
|
|
114
|
+
* no order or with zero remaining size are skipped. A node owned by the well-known indicative
|
|
115
|
+
* quotes pubkey is tagged as `sources.indicative` instead of `sources.dlob`.
|
|
116
|
+
*
|
|
117
|
+
* @param dlobNodes sorted node generator, e.g. `DLOB.getRestingLimitAsks` or `DLOB.getRestingLimitBids`
|
|
118
|
+
* @param oraclePriceData oracle price data used to resolve each node's limit price
|
|
119
|
+
* @param slot current slot, used to resolve each node's limit price
|
|
120
|
+
* @param tickSize market order tick size, PRICE_PRECISION (1e6); passed through to `DLOBNode.getPriceOrThrow`
|
|
121
|
+
* @returns a generator of `L2Level`s, one per DLOB node with remaining size
|
|
122
|
+
* @throws if any yielded node has no resolvable limit price (via `getPriceOrThrow`)
|
|
82
123
|
*/
|
|
83
124
|
export function* getL2GeneratorFromDLOBNodes(
|
|
84
125
|
dlobNodes: Generator<DLOBNode>,
|
|
85
126
|
oraclePriceData: OraclePriceData,
|
|
86
|
-
slot: number
|
|
127
|
+
slot: number,
|
|
128
|
+
tickSize?: BN
|
|
87
129
|
): Generator<L2Level> {
|
|
88
130
|
for (const dlobNode of dlobNodes) {
|
|
89
131
|
if (!dlobNode.order) {
|
|
@@ -99,7 +141,7 @@ export function* getL2GeneratorFromDLOBNodes(
|
|
|
99
141
|
|
|
100
142
|
yield {
|
|
101
143
|
size,
|
|
102
|
-
price: dlobNode.getPriceOrThrow(oraclePriceData, slot),
|
|
144
|
+
price: dlobNode.getPriceOrThrow(oraclePriceData, slot, tickSize),
|
|
103
145
|
sources:
|
|
104
146
|
dlobNode.userAccount == INDICATIVE_QUOTES_PUBKEY
|
|
105
147
|
? { indicative: size }
|
|
@@ -110,6 +152,15 @@ export function* getL2GeneratorFromDLOBNodes(
|
|
|
110
152
|
}
|
|
111
153
|
}
|
|
112
154
|
|
|
155
|
+
/**
|
|
156
|
+
* Merges multiple already-sorted `L2Level` generators (e.g. DLOB liquidity plus one or more
|
|
157
|
+
* fallback sources) into a single sorted generator, using a k-way merge. Does not merge/dedupe
|
|
158
|
+
* levels that land on the same price across generators — see `createL2Levels` for that.
|
|
159
|
+
*
|
|
160
|
+
* @param l2LevelGenerators generators to merge, each already sorted in the desired final order
|
|
161
|
+
* @param compare returns true if `a` should be yielded before `b` (e.g. `a.price.lt(b.price)` for asks)
|
|
162
|
+
* @returns a single generator yielding levels in the order defined by `compare`
|
|
163
|
+
*/
|
|
113
164
|
export function* mergeL2LevelGenerators(
|
|
114
165
|
l2LevelGenerators: Generator<L2Level>[],
|
|
115
166
|
compare: (a: L2Level, b: L2Level) => boolean
|
|
@@ -151,6 +202,15 @@ export function* mergeL2LevelGenerators(
|
|
|
151
202
|
} while (next !== undefined);
|
|
152
203
|
}
|
|
153
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Materializes a sorted `L2Level` generator into an array, merging consecutive levels that share
|
|
207
|
+
* the same price (summing size and per-source sizes) and capping the result at `depth` distinct
|
|
208
|
+
* price levels.
|
|
209
|
+
*
|
|
210
|
+
* @param generator sorted level generator, e.g. output of `mergeL2LevelGenerators`
|
|
211
|
+
* @param depth maximum number of distinct price levels to return
|
|
212
|
+
* @returns up to `depth` merged `L2Level`s
|
|
213
|
+
*/
|
|
154
214
|
export function createL2Levels(
|
|
155
215
|
generator: Generator<L2Level>,
|
|
156
216
|
depth: number
|
|
@@ -182,6 +242,25 @@ export function createL2Levels(
|
|
|
182
242
|
return levels;
|
|
183
243
|
}
|
|
184
244
|
|
|
245
|
+
/**
|
|
246
|
+
* Builds an `L2OrderBookGenerator` that synthesizes vAMM (virtual AMM) liquidity levels for a
|
|
247
|
+
* perp market, for use as fallback liquidity in `DLOB.getL2`. Simulates walking the AMM's
|
|
248
|
+
* spread-adjusted reserves outward from the mid price on each side, standardizing prices to the
|
|
249
|
+
* market's `orderTickSize` and sizes to its `orderStepSize`. Returns zero liquidity on a side
|
|
250
|
+
* entirely if AMM fills are paused (`PerpOperation.AMM_FILL`) or if that side's open liquidity is
|
|
251
|
+
* less than 2x the market's `minOrderSize`.
|
|
252
|
+
*
|
|
253
|
+
* @param marketAccount perp market whose AMM reserves/config drive the simulated levels
|
|
254
|
+
* @param mmOraclePriceData market-maker oracle price data used to reprice the AMM before walking it
|
|
255
|
+
* @param numOrders total number of levels to generate per side (including any top-of-book levels)
|
|
256
|
+
* @param now unix timestamp (seconds) used for spread-reserve calculation; defaults to the current time
|
|
257
|
+
* @param topOfBookQuoteAmounts quote-notional breakpoints (QUOTE_PRECISION, 1e6) used to size the
|
|
258
|
+
* first levels more granularly near the top of book — see `DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS` /
|
|
259
|
+
* `MAJORS_TOP_OF_BOOK_QUOTE_AMOUNTS`; defaults to `[]` (all levels evenly sized)
|
|
260
|
+
* @param latestSlot most recent known slot, improves spread-reserve accuracy when provided; optional
|
|
261
|
+
* @returns a generator pair (`getL2Bids`/`getL2Asks`) yielding vAMM `L2Level`s, best price first,
|
|
262
|
+
* each tagged with `sources.vamm`
|
|
263
|
+
*/
|
|
185
264
|
export function getVammL2Generator({
|
|
186
265
|
marketAccount,
|
|
187
266
|
mmOraclePriceData,
|
|
@@ -320,6 +399,17 @@ export function getVammL2Generator({
|
|
|
320
399
|
};
|
|
321
400
|
}
|
|
322
401
|
|
|
402
|
+
/**
|
|
403
|
+
* Re-buckets an `L2OrderBook`'s levels onto a coarser price grid ("grouping"), summing size and
|
|
404
|
+
* per-source sizes of levels that land in the same bucket, and truncating each side to `depth`
|
|
405
|
+
* levels. Bids are standardized down (grouped toward the taker-friendly direction for longs),
|
|
406
|
+
* asks standardized up, matching on-chain price standardization semantics.
|
|
407
|
+
*
|
|
408
|
+
* @param l2 the ungrouped order book, e.g. from `DLOB.getL2`
|
|
409
|
+
* @param grouping price bucket size, PRICE_PRECISION (1e6) — must be a multiple of the market's tick size to produce valid on-chain prices
|
|
410
|
+
* @param depth maximum number of levels to keep per side after grouping
|
|
411
|
+
* @returns a new `L2OrderBook` with grouped bids/asks (does not mutate `l2`)
|
|
412
|
+
*/
|
|
323
413
|
export function groupL2(
|
|
324
414
|
l2: L2OrderBook,
|
|
325
415
|
grouping: BN,
|
|
@@ -428,14 +518,18 @@ const mergeByPrice = (bidsOrAsks: L2Level[]) => {
|
|
|
428
518
|
* - it will not uncross the user's liquidity
|
|
429
519
|
* - it does the uncrossing by "shifting" the crossing liquidity to the nearest uncrossed levels. Thus the output liquidity maintains the same total size.
|
|
430
520
|
*
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
*
|
|
434
|
-
* @param
|
|
435
|
-
* @param
|
|
436
|
-
* @param
|
|
437
|
-
* @param
|
|
438
|
-
* @param
|
|
521
|
+
* No-ops (returns `bids`/`asks` unchanged) if either side is empty, or if the top of book is
|
|
522
|
+
* already uncrossed (`bids[0].price < asks[0].price`).
|
|
523
|
+
*
|
|
524
|
+
* @param bids bid levels, PRICE_PRECISION (1e6) prices, best (highest) first
|
|
525
|
+
* @param asks ask levels, PRICE_PRECISION (1e6) prices, best (lowest) first
|
|
526
|
+
* @param oraclePrice current oracle price, PRICE_PRECISION (1e6)
|
|
527
|
+
* @param oracleTwap5Min 5-minute oracle price TWAP, PRICE_PRECISION (1e6)
|
|
528
|
+
* @param markTwap5Min 5-minute mark price TWAP, PRICE_PRECISION (1e6); `markTwap5Min - oracleTwap5Min` estimates the market's premium/discount to oracle, used as the reference point crossing liquidity is shifted around
|
|
529
|
+
* @param grouping minimum price gap to enforce between the shifted bid/ask, PRICE_PRECISION (1e6)
|
|
530
|
+
* @param userBids set of bid price strings (`BN.toString()`) belonging to the requesting user, which are left untouched rather than shifted
|
|
531
|
+
* @param userAsks set of ask price strings (`BN.toString()`) belonging to the requesting user, which are left untouched rather than shifted
|
|
532
|
+
* @returns new `bids`/`asks` arrays with crossing levels shifted apart by at least `grouping`; total size per side is preserved
|
|
439
533
|
*/
|
|
440
534
|
export function uncrossL2(
|
|
441
535
|
bids: L2Level[],
|
package/src/dlob/types.ts
CHANGED
|
@@ -1,22 +1,37 @@
|
|
|
1
1
|
import { DLOB } from './DLOB';
|
|
2
2
|
import { VelocityClient } from '../velocityClient';
|
|
3
3
|
|
|
4
|
+
/** Configuration for constructing a `DLOBSubscriber`. */
|
|
4
5
|
export type DLOBSubscriptionConfig = {
|
|
6
|
+
/** Client used to resolve market accounts/oracle data for `getL2`/`getL3`. Required — the constructor throws if omitted. */
|
|
5
7
|
velocityClient?: VelocityClient;
|
|
8
|
+
/** Provides the `DLOB` snapshot to poll, e.g. built from a `UserMap`. */
|
|
6
9
|
dlobSource: DLOBSource;
|
|
10
|
+
/** Provides the current slot used both to request the next `DLOB` snapshot and to price orders when serving `getL2`/`getL3`. */
|
|
7
11
|
slotSource: SlotSource;
|
|
12
|
+
/** Polling interval in milliseconds between calls to `dlobSource.getDLOB`. */
|
|
8
13
|
updateFrequency: number;
|
|
9
14
|
};
|
|
10
15
|
|
|
16
|
+
/** Events emitted by `DLOBSubscriber`'s `eventEmitter`. */
|
|
11
17
|
export interface DLOBSubscriberEvents {
|
|
18
|
+
/** Fired after each successful periodic `DLOB` refresh, with the newly fetched `DLOB`. */
|
|
12
19
|
update: (dlob: DLOB) => void;
|
|
20
|
+
/** Fired if a periodic refresh's `dlobSource.getDLOB` call throws. */
|
|
13
21
|
error: (e: Error) => void;
|
|
14
22
|
}
|
|
15
23
|
|
|
24
|
+
/** Supplies a fresh `DLOB` snapshot on demand, e.g. built from a `UserMap` of on-chain user accounts. */
|
|
16
25
|
export interface DLOBSource {
|
|
26
|
+
/**
|
|
27
|
+
* @param slot slot to build/tag the returned `DLOB` snapshot at
|
|
28
|
+
* @returns a promise resolving to a populated `DLOB`
|
|
29
|
+
*/
|
|
17
30
|
getDLOB(slot: number): Promise<DLOB>;
|
|
18
31
|
}
|
|
19
32
|
|
|
33
|
+
/** Supplies the current slot, e.g. backed by a `SlotSubscriber`. */
|
|
20
34
|
export interface SlotSource {
|
|
35
|
+
/** @returns the most recently observed slot. */
|
|
21
36
|
getSlot(): number;
|
|
22
37
|
}
|
package/src/events/eventList.ts
CHANGED
|
@@ -13,11 +13,22 @@ class Node<Type extends EventType, Event extends EventMap[Type]> {
|
|
|
13
13
|
) {}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Fixed-capacity, sorted doubly-linked list of decoded events for a single
|
|
18
|
+
* `EventType`, used internally by `EventSubscriber` to retain the most
|
|
19
|
+
* recent `maxSize` events per type in the configured order.
|
|
20
|
+
*/
|
|
16
21
|
export class EventList<Type extends EventType> {
|
|
17
22
|
size = 0;
|
|
18
23
|
head?: Node<Type, EventMap[Type]>;
|
|
19
24
|
tail?: Node<Type, EventMap[Type]>;
|
|
20
25
|
|
|
26
|
+
/**
|
|
27
|
+
* @param eventType The `EventType` this list holds.
|
|
28
|
+
* @param maxSize Max events retained; once exceeded, the tail (least-recent per `sortFn`/`orderDirection`) is evicted.
|
|
29
|
+
* @param sortFn Comparator determining insertion order (see `getSortFn`).
|
|
30
|
+
* @param orderDirection Whether `'less than'` per `sortFn` sorts toward the head (`'asc'`) or tail (`'desc'`).
|
|
31
|
+
*/
|
|
21
32
|
public constructor(
|
|
22
33
|
public eventType: Type,
|
|
23
34
|
public maxSize: number,
|
|
@@ -25,6 +36,7 @@ export class EventList<Type extends EventType> {
|
|
|
25
36
|
private orderDirection: EventSubscriptionOrderDirection
|
|
26
37
|
) {}
|
|
27
38
|
|
|
39
|
+
/** Inserts `event` in sorted position (per `sortFn`/`orderDirection`), evicting the tail if this pushes the list over `maxSize`. */
|
|
28
40
|
public insert(event: EventMap[Type]): void {
|
|
29
41
|
this.size++;
|
|
30
42
|
const newNode = new Node(event);
|
|
@@ -66,6 +78,7 @@ export class EventList<Type extends EventType> {
|
|
|
66
78
|
}
|
|
67
79
|
}
|
|
68
80
|
|
|
81
|
+
/** Removes the tail node (the least-recent event per the list's order) and decrements `size`. No-ops on an empty list. */
|
|
69
82
|
detach(): void {
|
|
70
83
|
const node = this.tail;
|
|
71
84
|
if (node === undefined) {
|
|
@@ -86,6 +99,7 @@ export class EventList<Type extends EventType> {
|
|
|
86
99
|
this.size--;
|
|
87
100
|
}
|
|
88
101
|
|
|
102
|
+
/** Materializes the list into a plain array, in current sort order. Allocates a new array — prefer iterating the list directly for hot paths. */
|
|
89
103
|
toArray(): EventMap[Type][] {
|
|
90
104
|
return Array.from(this);
|
|
91
105
|
}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Decodes all program events (OrderActionRecord, DepositRecord, LiquidationRecord,
|
|
5
|
-
* FundingPaymentRecord, etc.) from `state/events.rs` into typed TypeScript objects.
|
|
6
|
-
* Supports WebSocket and polling log providers; events are surfaced via an EventEmitter.
|
|
7
|
-
* See `events/types.ts` for the full event type union and `events/parse.ts` for log parsing.
|
|
8
|
-
*/
|
|
1
|
+
// EventSubscriber — see the class doc below for behavior. This module also
|
|
2
|
+
// wires together the LogProvider implementations (websocket/polling/events-server);
|
|
3
|
+
// see `events/types.ts` for the full event type union and `events/parse.ts` for log parsing.
|
|
9
4
|
import { Connection, PublicKey, TransactionSignature } from '@solana/web3.js';
|
|
10
5
|
import { Program } from '../isomorphic/anchor';
|
|
11
6
|
import {
|
|
@@ -34,9 +29,34 @@ import { getSortFn } from './sort';
|
|
|
34
29
|
import { parseLogs } from './parse';
|
|
35
30
|
import { EventsServerLogProvider } from './eventsServerLogProvider';
|
|
36
31
|
|
|
32
|
+
/**
|
|
33
|
+
* EventSubscriber — streams and decodes Velocity program events from
|
|
34
|
+
* transaction logs (all records emitted via `emit!` from `state/events.rs`:
|
|
35
|
+
* `DepositRecord`, `OrderActionRecord`, `LiquidationRecord`,
|
|
36
|
+
* `FundingPaymentRecord`, etc. — see `EventMap` for the full set), via a
|
|
37
|
+
* pluggable `LogProvider` (websocket, polling, or the Velocity events server),
|
|
38
|
+
* and surfaces them both through per-type `EventList`s and a `'newEvent'`
|
|
39
|
+
* `eventEmitter`.
|
|
40
|
+
*
|
|
41
|
+
* Ordering and dedup: each decoded event is tagged with `slot` and a
|
|
42
|
+
* `txSigIndex` (its position among decoded events within the same
|
|
43
|
+
* transaction); the per-event-type `EventList`s use these to sort either by
|
|
44
|
+
* blockchain order (slot, then `txSigIndex`) or by client arrival order, per
|
|
45
|
+
* `EventSubscriptionOptions.orderBy`. Whole transactions are deduped by
|
|
46
|
+
* signature via an internal LRU (`TxEventCache`, sized by `options.maxTx`):
|
|
47
|
+
* a transaction already in the cache is skipped entirely on a subsequent
|
|
48
|
+
* delivery from the *same* log provider, which protects against a
|
|
49
|
+
* websocket/polling provider redelivering the same tx. Events pushed by the
|
|
50
|
+
* events-server provider bypass this cache (it dedups upstream and supplies
|
|
51
|
+
* an authoritative `txSigIndex`). Event names are also normalized from the
|
|
52
|
+
* `@coral-xyz/anchor` 0.32+ camelCase IDL form back to the PascalCase used by
|
|
53
|
+
* `EventType`/`EventMap` before being matched against the subscribed types.
|
|
54
|
+
*/
|
|
37
55
|
export class EventSubscriber {
|
|
38
56
|
private address: PublicKey;
|
|
39
57
|
private eventListMap: Map<EventType, EventList<EventType>>;
|
|
58
|
+
/** Case-insensitive lookup from decoded (camelCase) IDL event names to subscribed `EventType` keys. */
|
|
59
|
+
private eventTypeByLowercaseName = new Map<string, EventType>();
|
|
40
60
|
private txEventCache: TxEventCache;
|
|
41
61
|
private awaitTxPromises = new Map<string, Promise<void>>();
|
|
42
62
|
private awaitTxResolver = new Map<string, () => void>();
|
|
@@ -56,6 +76,11 @@ export class EventSubscriber {
|
|
|
56
76
|
return this._logProvider;
|
|
57
77
|
}
|
|
58
78
|
|
|
79
|
+
/**
|
|
80
|
+
* @param connection RPC connection used by the polling/websocket log providers and by `fetchPreviousTx`.
|
|
81
|
+
* @param program Anchor `Program` whose IDL coder decodes event logs (see `parse.ts`).
|
|
82
|
+
* @param options Subscription options; merged over `DefaultEventSubscriptionOptions` so any field left unset uses the default.
|
|
83
|
+
*/
|
|
59
84
|
public constructor(
|
|
60
85
|
private connection: Connection,
|
|
61
86
|
private program: Program,
|
|
@@ -85,6 +110,7 @@ export class EventSubscriber {
|
|
|
85
110
|
return this.options.eventTypes;
|
|
86
111
|
}
|
|
87
112
|
|
|
113
|
+
/** The `LogProviderType` currently in use. May differ from the configured type after a fallback failover (see `updateFallbackProviderType`). */
|
|
88
114
|
get currentProviderType() {
|
|
89
115
|
return this._currentProviderType;
|
|
90
116
|
}
|
|
@@ -170,6 +196,7 @@ export class EventSubscriber {
|
|
|
170
196
|
orderDir
|
|
171
197
|
)
|
|
172
198
|
);
|
|
199
|
+
this.eventTypeByLowercaseName.set(eventType.toLowerCase(), eventType);
|
|
173
200
|
}
|
|
174
201
|
}
|
|
175
202
|
|
|
@@ -200,6 +227,19 @@ export class EventSubscriber {
|
|
|
200
227
|
this._currentProviderType = nextProviderType;
|
|
201
228
|
}
|
|
202
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Starts streaming events via the configured `LogProvider`. Idempotent —
|
|
232
|
+
* returns `true` immediately if already subscribed. (Re)initializes the
|
|
233
|
+
* per-event-type `EventList`s, so any events retained from a prior
|
|
234
|
+
* subscribe/unsubscribe cycle are discarded. For streaming providers
|
|
235
|
+
* (websocket, events-server), also wires up automatic failover: if the
|
|
236
|
+
* provider emits more than `maxReconnectAttempts` (default `Infinity`,
|
|
237
|
+
* i.e. never) reconnect attempts, the subscriber tears down and
|
|
238
|
+
* reinitializes with the next provider in the fallback chain
|
|
239
|
+
* (events-server → websocket → polling; polling has no further fallback).
|
|
240
|
+
* Does not itself backfill history — call `fetchPreviousTx` for that.
|
|
241
|
+
* @returns `true` once subscribed, or `false` if an error occurred while starting the subscription (logged to console, not thrown).
|
|
242
|
+
*/
|
|
203
243
|
public async subscribe(): Promise<boolean> {
|
|
204
244
|
try {
|
|
205
245
|
if (this.logProvider.isSubscribed()) {
|
|
@@ -319,6 +359,16 @@ export class EventSubscriber {
|
|
|
319
359
|
this.txEventCache.add(txSig, wrappedEvents);
|
|
320
360
|
}
|
|
321
361
|
|
|
362
|
+
/**
|
|
363
|
+
* Backfills historical events by walking transactions for `address` via
|
|
364
|
+
* `getSignaturesForAddress`/`getTransaction`, newest-first, until either
|
|
365
|
+
* `options.untilTx` is reached or `options.maxTx` transactions have been
|
|
366
|
+
* fetched. Each fetched transaction is decoded and inserted into the
|
|
367
|
+
* event lists exactly like a live update, so `newEvent` fires for
|
|
368
|
+
* backfilled events too. No-ops if neither `untilTx` is set nor
|
|
369
|
+
* `fetchMax` is true — the subscriber does not backfill by default.
|
|
370
|
+
* @param fetchMax If true, backfill up to `maxTx` transactions even without an `untilTx` cutoff.
|
|
371
|
+
*/
|
|
322
372
|
public async fetchPreviousTx(fetchMax?: boolean): Promise<void> {
|
|
323
373
|
if (!this.options.untilTx && !fetchMax) {
|
|
324
374
|
return;
|
|
@@ -354,6 +404,13 @@ export class EventSubscriber {
|
|
|
354
404
|
}
|
|
355
405
|
}
|
|
356
406
|
|
|
407
|
+
/**
|
|
408
|
+
* Stops the log provider and clears all in-memory state: the per-event-type
|
|
409
|
+
* `EventList`s, the `TxEventCache`, and any pending `awaitTx` promises
|
|
410
|
+
* (which are left unresolved/unrejected — callers awaiting a tx signature
|
|
411
|
+
* across an unsubscribe will hang).
|
|
412
|
+
* @returns Whatever the underlying `LogProvider.unsubscribe` returns.
|
|
413
|
+
*/
|
|
357
414
|
public async unsubscribe(): Promise<boolean> {
|
|
358
415
|
this.eventListMap.clear();
|
|
359
416
|
this.txEventCache.clear();
|
|
@@ -374,16 +431,16 @@ export class EventSubscriber {
|
|
|
374
431
|
const events = parseLogs(this.program, logs);
|
|
375
432
|
let runningEventIndex = 0;
|
|
376
433
|
for (const event of events) {
|
|
377
|
-
// @coral-xyz/anchor 0.32+ converts IDL names to camelCase;
|
|
378
|
-
//
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
if (
|
|
434
|
+
// @coral-xyz/anchor 0.32+ converts IDL names to camelCase; match
|
|
435
|
+
// case-insensitively so names with leading acronyms (LPSwapRecord →
|
|
436
|
+
// lpSwapRecord) still resolve to their PascalCase EventType keys.
|
|
437
|
+
const eventType = this.eventTypeByLowercaseName.get(
|
|
438
|
+
event.name.toLowerCase()
|
|
439
|
+
);
|
|
440
|
+
if (eventType) {
|
|
384
441
|
event.data.txSig = txSig;
|
|
385
442
|
event.data.slot = slot;
|
|
386
|
-
event.data.eventType =
|
|
443
|
+
event.data.eventType = eventType;
|
|
387
444
|
event.data.txSigIndex =
|
|
388
445
|
txSigIndex !== undefined ? txSigIndex : runningEventIndex;
|
|
389
446
|
records.push(event.data);
|
|
@@ -393,6 +450,16 @@ export class EventSubscriber {
|
|
|
393
450
|
return records;
|
|
394
451
|
}
|
|
395
452
|
|
|
453
|
+
/**
|
|
454
|
+
* Resolves once the subscriber has observed and decoded events for `txSig`
|
|
455
|
+
* (immediately if it's already in the `TxEventCache`). Useful for waiting
|
|
456
|
+
* on the events of a transaction the caller just sent, before reading them
|
|
457
|
+
* via `getEventsByTx`. Never rejects; a transaction that never arrives
|
|
458
|
+
* (e.g. it failed, or the subscriber isn't subscribed) leaves the returned
|
|
459
|
+
* promise pending forever.
|
|
460
|
+
* @param txSig Signature to wait for.
|
|
461
|
+
* @returns A promise that resolves (with no value) once that transaction's events have been processed.
|
|
462
|
+
*/
|
|
396
463
|
public awaitTx(txSig: TransactionSignature): Promise<void> {
|
|
397
464
|
const existingPromise = this.awaitTxPromises.get(txSig);
|
|
398
465
|
if (existingPromise !== undefined) {
|
|
@@ -410,17 +477,26 @@ export class EventSubscriber {
|
|
|
410
477
|
return promise;
|
|
411
478
|
}
|
|
412
479
|
|
|
480
|
+
/**
|
|
481
|
+
* Returns the live `EventList` for `eventType` — the ordered, size-bounded
|
|
482
|
+
* (`maxEventsPerType`) linked list the subscriber inserts new events into.
|
|
483
|
+
* Prefer this over `getEventsArray` to iterate without copying.
|
|
484
|
+
* @param eventType Event type to look up; must be one of `options.eventTypes` (subscribed types).
|
|
485
|
+
* @returns The `EventList` for that type, or `undefined` if `eventType` was never subscribed (list not yet populated by `subscribe()`).
|
|
486
|
+
*/
|
|
413
487
|
public getEventList<Type extends keyof EventMap>(
|
|
414
488
|
eventType: Type
|
|
415
|
-
): EventList<Type> {
|
|
416
|
-
return this.eventListMap.get(eventType) as EventList<Type
|
|
489
|
+
): EventList<Type> | undefined {
|
|
490
|
+
return this.eventListMap.get(eventType) as EventList<Type> | undefined;
|
|
417
491
|
}
|
|
418
492
|
|
|
419
493
|
/**
|
|
420
494
|
* This requires the EventList be cast to an array, which requires reallocation of memory.
|
|
421
495
|
* Would bias to using getEventList over getEvents
|
|
422
496
|
*
|
|
423
|
-
* @param eventType
|
|
497
|
+
* @param eventType Event type to snapshot.
|
|
498
|
+
* @returns All currently retained events of that type, in the `EventList`'s sort order (see `EventSubscriptionOptions.orderBy`/`orderDir`).
|
|
499
|
+
* @throws If `eventType` has no `EventList` (i.e. it isn't in `options.eventTypes`).
|
|
424
500
|
*/
|
|
425
501
|
public getEventsArray<Type extends EventType>(
|
|
426
502
|
eventType: Type
|
|
@@ -434,6 +510,11 @@ export class EventSubscriber {
|
|
|
434
510
|
return eventList.toArray() as EventMap[Type][];
|
|
435
511
|
}
|
|
436
512
|
|
|
513
|
+
/**
|
|
514
|
+
* Looks up the decoded events previously observed for a transaction.
|
|
515
|
+
* @param txSig Transaction signature to look up.
|
|
516
|
+
* @returns The wrapped events emitted by that transaction, or `undefined` if the transaction has aged out of the `TxEventCache` (bounded by `options.maxTx`) or was never observed.
|
|
517
|
+
*/
|
|
437
518
|
public getEventsByTx(txSig: TransactionSignature): WrappedEvents | undefined {
|
|
438
519
|
return this.txEventCache.get(txSig);
|
|
439
520
|
}
|
|
@@ -13,6 +13,17 @@ if (typeof window !== 'undefined' && window.WebSocket) {
|
|
|
13
13
|
const EVENT_SERVER_HEARTBEAT_INTERVAL_MS = 5000;
|
|
14
14
|
const ALLOWED_MISSED_HEARTBEATS = 3;
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* `LogProvider` backed by the Velocity-hosted events server: a websocket
|
|
18
|
+
* that pushes pre-parsed events per subscribed channel (event type),
|
|
19
|
+
* optionally filtered to one user account, instead of raw RPC logs. Expects
|
|
20
|
+
* a heartbeat message on channel `'heartbeat'` at least every
|
|
21
|
+
* `EVENT_SERVER_HEARTBEAT_INTERVAL_MS` (5s); if none arrives within 3 missed
|
|
22
|
+
* intervals it closes and resubscribes, emitting `'reconnect'` on
|
|
23
|
+
* `eventEmitter` with the attempt count. Each received event is repackaged
|
|
24
|
+
* as a synthetic 3-line log array (`invoke` / raw log / `success`) so it can
|
|
25
|
+
* be run back through the same `parseLogs` pipeline as RPC-sourced logs.
|
|
26
|
+
*/
|
|
16
27
|
export class EventsServerLogProvider implements LogProvider {
|
|
17
28
|
private ws?: WebSocket;
|
|
18
29
|
private callback?: logProviderCallback;
|
|
@@ -23,6 +34,11 @@ export class EventsServerLogProvider implements LogProvider {
|
|
|
23
34
|
private reconnectAttempts = 0;
|
|
24
35
|
eventEmitter: EventEmitter = new EventEmitter();
|
|
25
36
|
|
|
37
|
+
/**
|
|
38
|
+
* @param url Websocket URL of the Velocity events server.
|
|
39
|
+
* @param eventTypes Event type channels to subscribe to (one `subscribe` message sent per type on connect).
|
|
40
|
+
* @param userAccount If provided, scopes the subscription server-side to events for this user account (base58 pubkey string).
|
|
41
|
+
*/
|
|
26
42
|
public constructor(
|
|
27
43
|
private readonly url: string,
|
|
28
44
|
private readonly eventTypes: EventType[],
|
|
@@ -33,6 +49,7 @@ export class EventsServerLogProvider implements LogProvider {
|
|
|
33
49
|
return this.ws !== undefined;
|
|
34
50
|
}
|
|
35
51
|
|
|
52
|
+
/** Opens the websocket and sends a `subscribe` message per configured event type once connected. `skipHistory` is accepted for `LogProvider` interface compatibility but has no effect (the server only ever pushes new events). Always resolves `true`; malformed inbound messages are caught and logged, not thrown. */
|
|
36
53
|
public async subscribe(callback: logProviderCallback): Promise<boolean> {
|
|
37
54
|
if (this.ws !== undefined) {
|
|
38
55
|
return true;
|
|
@@ -40,6 +57,12 @@ export class EventsServerLogProvider implements LogProvider {
|
|
|
40
57
|
const ws = new WebSocketImpl(this.url);
|
|
41
58
|
this.ws = ws;
|
|
42
59
|
|
|
60
|
+
// reset teardown flags for a fresh subscription cycle — the `ws !== undefined`
|
|
61
|
+
// unsubscribe path (e.g. a heartbeat-timeout resubscribe) leaves isUnsubscribing
|
|
62
|
+
// set, which would otherwise disable the watchdog and reconnect on this new socket
|
|
63
|
+
this.isUnsubscribing = false;
|
|
64
|
+
this.externalUnsubscribe = false;
|
|
65
|
+
|
|
43
66
|
this.callback = callback;
|
|
44
67
|
ws.addEventListener('open', () => {
|
|
45
68
|
for (const channel of this.eventTypes) {
|
|
@@ -113,6 +136,11 @@ export class EventsServerLogProvider implements LogProvider {
|
|
|
113
136
|
return true;
|
|
114
137
|
}
|
|
115
138
|
|
|
139
|
+
/**
|
|
140
|
+
* Closes the websocket and clears the heartbeat timeout.
|
|
141
|
+
* @param external Whether this is a caller-initiated unsubscribe rather than an internal one during a reconnect cycle.
|
|
142
|
+
* @returns Always resolves `true`.
|
|
143
|
+
*/
|
|
116
144
|
public async unsubscribe(external = false): Promise<boolean> {
|
|
117
145
|
this.isUnsubscribing = true;
|
|
118
146
|
this.externalUnsubscribe = external;
|
package/src/events/fetchLogs.ts
CHANGED
|
@@ -7,10 +7,27 @@ import {
|
|
|
7
7
|
TransactionSignature,
|
|
8
8
|
VersionedTransactionResponse,
|
|
9
9
|
} from '@solana/web3.js';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
DefaultEventSubscriptionOptions,
|
|
12
|
+
EventType,
|
|
13
|
+
WrappedEvents,
|
|
14
|
+
} from './types';
|
|
11
15
|
import { promiseTimeout } from '../util/promiseTimeout';
|
|
12
16
|
import { parseLogs } from './parse';
|
|
13
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Case-insensitive lookup from decoded (camelCase) IDL event names to
|
|
20
|
+
* PascalCase `EventType` keys, mirroring `EventSubscriber`'s
|
|
21
|
+
* `eventTypeByLowercaseName` — `@coral-xyz/anchor` 0.32+ decodes event names
|
|
22
|
+
* in camelCase, but the rest of the SDK keys off the PascalCase `EventType`.
|
|
23
|
+
*/
|
|
24
|
+
const eventTypeByLowercaseName = new Map<string, EventType>(
|
|
25
|
+
(DefaultEventSubscriptionOptions.eventTypes ?? []).map((eventType) => [
|
|
26
|
+
eventType.toLowerCase(),
|
|
27
|
+
eventType,
|
|
28
|
+
])
|
|
29
|
+
);
|
|
30
|
+
|
|
14
31
|
type Log = { txSig: TransactionSignature; slot: number; logs: string[] };
|
|
15
32
|
type FetchLogsResponse = {
|
|
16
33
|
earliestTx: string;
|
|
@@ -31,6 +48,21 @@ function mapTransactionResponseToLog(
|
|
|
31
48
|
};
|
|
32
49
|
}
|
|
33
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Fetches raw transaction logs for `address`, newest-first from
|
|
53
|
+
* `getSignaturesForAddress` then batch-fetched via `getTransaction`. Used by
|
|
54
|
+
* both `PollingLogProvider` (incremental polling) and
|
|
55
|
+
* `EventSubscriber.fetchPreviousTx` (historical backfill). Failed
|
|
56
|
+
* transactions (with an `err`) are filtered out before fetching logs.
|
|
57
|
+
* @param connection RPC connection.
|
|
58
|
+
* @param address Account/program address to fetch signatures for.
|
|
59
|
+
* @param finality Commitment for both the signature list and the transaction fetches.
|
|
60
|
+
* @param beforeTx Only return signatures older than this one (pagination cursor).
|
|
61
|
+
* @param untilTx Stop at (exclusive of) this signature.
|
|
62
|
+
* @param limit Max signatures to request from `getSignaturesForAddress`; RPC default applies if omitted.
|
|
63
|
+
* @param batchSize Number of `getTransaction` calls batched per RPC round-trip; defaults to 25.
|
|
64
|
+
* @returns `undefined` if no non-failed signatures were found in range; otherwise the transaction logs plus the earliest/most-recent signature, slot, and block time observed, for use as the next `beforeTx`/`mostRecentSeenTx` cursor.
|
|
65
|
+
*/
|
|
34
66
|
export async function fetchLogs(
|
|
35
67
|
connection: Connection,
|
|
36
68
|
address: PublicKey,
|
|
@@ -89,6 +121,15 @@ export async function fetchLogs(
|
|
|
89
121
|
};
|
|
90
122
|
}
|
|
91
123
|
|
|
124
|
+
/**
|
|
125
|
+
* Fetches `getTransaction` for a batch of signatures in a single RPC batch
|
|
126
|
+
* request, with a 10-second overall timeout.
|
|
127
|
+
* @param connection RPC connection.
|
|
128
|
+
* @param signatures Signatures to fetch (fetched as `maxSupportedTransactionVersion: 0`).
|
|
129
|
+
* @param finality Commitment to fetch each transaction at.
|
|
130
|
+
* @returns One `Log` per signature that returned a result (signatures the RPC couldn't resolve are silently dropped, not padded with placeholders).
|
|
131
|
+
* @throws (rejects) if the batch RPC call doesn't complete within 10 seconds.
|
|
132
|
+
*/
|
|
92
133
|
export async function fetchTransactionLogs(
|
|
93
134
|
connection: Connection,
|
|
94
135
|
signatures: TransactionSignature[],
|
|
@@ -134,6 +175,11 @@ function chunk<T>(array: readonly T[], size: number): T[][] {
|
|
|
134
175
|
.map((begin) => array.slice(begin, begin + size));
|
|
135
176
|
}
|
|
136
177
|
|
|
178
|
+
/**
|
|
179
|
+
* Standalone helper to decode events out of an already-fetched transaction or
|
|
180
|
+
* log object, without going through `EventSubscriber`. Useful for one-off
|
|
181
|
+
* decoding (e.g. re-parsing a transaction fetched elsewhere).
|
|
182
|
+
*/
|
|
137
183
|
export class LogParser {
|
|
138
184
|
private program: Program;
|
|
139
185
|
|
|
@@ -141,6 +187,7 @@ export class LogParser {
|
|
|
141
187
|
this.program = program;
|
|
142
188
|
}
|
|
143
189
|
|
|
190
|
+
/** Decodes the events emitted in a fetched `TransactionResponse`. Assigns `txSigIndex` by decode order (0-based), not by any provider-supplied index. */
|
|
144
191
|
public parseEventsFromTransaction(
|
|
145
192
|
transaction: TransactionResponse
|
|
146
193
|
): WrappedEvents {
|
|
@@ -149,6 +196,7 @@ export class LogParser {
|
|
|
149
196
|
return this.parseEventsFromLogs(transactionLogObject);
|
|
150
197
|
}
|
|
151
198
|
|
|
199
|
+
/** Decodes the events in a `{ txSig, slot, logs }` log object. Returns an empty array if `logs` is falsy. Assigns `txSigIndex` by decode order (0-based). */
|
|
152
200
|
public parseEventsFromLogs(event: Log): WrappedEvents {
|
|
153
201
|
const records: WrappedEvents = [];
|
|
154
202
|
|
|
@@ -158,7 +206,9 @@ export class LogParser {
|
|
|
158
206
|
for (const eventLog of parseLogs(this.program, event.logs)) {
|
|
159
207
|
eventLog.data.txSig = event.txSig;
|
|
160
208
|
eventLog.data.slot = event.slot;
|
|
161
|
-
eventLog.data.eventType =
|
|
209
|
+
eventLog.data.eventType =
|
|
210
|
+
eventTypeByLowercaseName.get(eventLog.name.toLowerCase()) ??
|
|
211
|
+
eventLog.name;
|
|
162
212
|
eventLog.data.txSigIndex = runningEventIndex;
|
|
163
213
|
// @ts-ignore
|
|
164
214
|
records.push(eventLog.data);
|