@velocity-exchange/sdk 0.4.0 → 0.6.1
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/README.md +3 -3
- package/lib/browser/adminClient.d.ts +52 -0
- package/lib/browser/adminClient.js +97 -0
- package/lib/browser/config.js +6 -7
- package/lib/browser/constants/numericConstants.d.ts +1 -1
- package/lib/browser/constants/numericConstants.js +1 -1
- package/lib/browser/decode/user.js +5 -1
- package/lib/browser/idl/velocity.d.ts +191 -15
- package/lib/browser/idl/velocity.json +192 -16
- package/lib/browser/orderSubscriber/OrderSubscriber.d.ts +1 -0
- package/lib/browser/orderSubscriber/OrderSubscriber.js +10 -4
- package/lib/browser/pyth/pythLazerSubscriber.js +37 -27
- package/lib/browser/types.d.ts +6 -0
- package/lib/browser/user.d.ts +20 -3
- package/lib/browser/user.js +52 -4
- package/lib/browser/velocityClient.d.ts +46 -10
- package/lib/browser/velocityClient.js +107 -35
- package/lib/node/adminClient.d.ts +52 -0
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +97 -0
- package/lib/node/config.d.ts.map +1 -1
- package/lib/node/config.js +6 -7
- package/lib/node/constants/numericConstants.d.ts +1 -1
- package/lib/node/constants/numericConstants.d.ts.map +1 -1
- package/lib/node/constants/numericConstants.js +1 -1
- package/lib/node/decode/user.d.ts.map +1 -1
- package/lib/node/decode/user.js +5 -1
- package/lib/node/idl/velocity.d.ts +191 -15
- package/lib/node/idl/velocity.d.ts.map +1 -1
- package/lib/node/idl/velocity.json +192 -16
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts +1 -0
- package/lib/node/orderSubscriber/OrderSubscriber.d.ts.map +1 -1
- package/lib/node/orderSubscriber/OrderSubscriber.js +10 -4
- package/lib/node/pyth/pythLazerSubscriber.d.ts.map +1 -1
- package/lib/node/pyth/pythLazerSubscriber.js +37 -27
- package/lib/node/types.d.ts +6 -0
- package/lib/node/types.d.ts.map +1 -1
- package/lib/node/user.d.ts +20 -3
- package/lib/node/user.d.ts.map +1 -1
- package/lib/node/user.js +52 -4
- package/lib/node/velocityClient.d.ts +46 -10
- package/lib/node/velocityClient.d.ts.map +1 -1
- package/lib/node/velocityClient.js +107 -35
- package/package.json +7 -3
- package/.prettierignore +0 -1
- package/CHANGELOG.md +0 -132
- package/build-browser.js +0 -58
- package/bunfig.toml +0 -3
- package/esbuild-shims.js +0 -12
- package/scripts/deposit-isolated-positions.ts +0 -110
- package/scripts/find-flagged-users.ts +0 -213
- package/scripts/grpc-client-test-comparison.ts +0 -372
- package/scripts/grpc-multiuser-client-test-comparison.ts +0 -158
- package/scripts/postbuild.js +0 -95
- package/scripts/single-grpc-client-test.ts +0 -284
- package/scripts/withdraw-isolated-positions.ts +0 -174
- package/src/accounts/README_WebSocketAccountSubscriberV2.md +0 -95
- package/src/accounts/README_WebSocketProgramAccountSubscriberV2.md +0 -135
- package/src/accounts/basicUserAccountSubscriber.ts +0 -79
- package/src/accounts/basicUserStatsAccountSubscriber.ts +0 -87
- package/src/accounts/bulkAccountLoader.ts +0 -358
- package/src/accounts/bulkUserStatsSubscription.ts +0 -40
- package/src/accounts/bulkUserSubscription.ts +0 -39
- package/src/accounts/customizedCadenceBulkAccountLoader.ts +0 -250
- package/src/accounts/fetch.ts +0 -200
- package/src/accounts/grpcAccountSubscriber.ts +0 -225
- package/src/accounts/grpcInsuranceFundStakeAccountSubscriber.ts +0 -73
- package/src/accounts/grpcMultiAccountSubscriber.ts +0 -566
- package/src/accounts/grpcMultiUserAccountSubscriber.ts +0 -328
- package/src/accounts/grpcProgramAccountSubscriber.ts +0 -264
- package/src/accounts/grpcUserAccountSubscriber.ts +0 -63
- package/src/accounts/grpcUserStatsAccountSubscriber.ts +0 -65
- package/src/accounts/grpcVelocityClientAccountSubscriber.ts +0 -257
- package/src/accounts/grpcVelocityClientAccountSubscriberV2.ts +0 -941
- package/src/accounts/laserProgramAccountSubscriber.ts +0 -266
- package/src/accounts/oneShotUserAccountSubscriber.ts +0 -88
- package/src/accounts/oneShotUserStatsAccountSubscriber.ts +0 -94
- package/src/accounts/pollingInsuranceFundStakeAccountSubscriber.ts +0 -223
- package/src/accounts/pollingOracleAccountSubscriber.ts +0 -151
- package/src/accounts/pollingTokenAccountSubscriber.ts +0 -147
- package/src/accounts/pollingUserAccountSubscriber.ts +0 -198
- package/src/accounts/pollingUserStatsAccountSubscriber.ts +0 -180
- package/src/accounts/pollingVelocityClientAccountSubscriber.ts +0 -774
- package/src/accounts/testBulkAccountLoader.ts +0 -59
- package/src/accounts/types.ts +0 -428
- package/src/accounts/utils.ts +0 -90
- package/src/accounts/webSocketAccountSubscriber.ts +0 -304
- package/src/accounts/webSocketAccountSubscriberV2.ts +0 -536
- package/src/accounts/webSocketInsuranceFundStakeAccountSubscriber.ts +0 -171
- package/src/accounts/webSocketProgramAccountSubscriber.ts +0 -244
- package/src/accounts/webSocketProgramAccountSubscriberV2.ts +0 -1048
- package/src/accounts/webSocketProgramAccountsSubscriberV2.ts +0 -1042
- package/src/accounts/webSocketUserAccountSubscriber.ts +0 -139
- package/src/accounts/webSocketUserStatsAccountSubsriber.ts +0 -131
- package/src/accounts/webSocketVelocityClientAccountSubscriber.ts +0 -865
- package/src/accounts/webSocketVelocityClientAccountSubscriberV2.ts +0 -897
- package/src/accounts/websocketProgramUserAccountSubscriber.ts +0 -127
- package/src/addresses/marketAddresses.ts +0 -28
- package/src/addresses/pda.ts +0 -620
- package/src/adminClient.ts +0 -8136
- package/src/assert/assert.ts +0 -5
- package/src/auctionSubscriber/auctionSubscriber.ts +0 -86
- package/src/auctionSubscriber/auctionSubscriberGrpc.ts +0 -99
- package/src/auctionSubscriber/index.ts +0 -9
- package/src/auctionSubscriber/types.ts +0 -30
- package/src/bankrun/bankrunConnection.ts +0 -630
- package/src/blockhashSubscriber/BlockhashSubscriber.ts +0 -160
- package/src/blockhashSubscriber/index.ts +0 -6
- package/src/blockhashSubscriber/types.ts +0 -13
- package/src/clock/clockSubscriber.ts +0 -146
- package/src/config.ts +0 -312
- package/src/constants/index.ts +0 -9
- package/src/constants/numericConstants.ts +0 -194
- package/src/constants/perpMarkets.ts +0 -127
- package/src/constants/spotMarkets.ts +0 -104
- package/src/constants/txConstants.ts +0 -2
- package/src/constituentMap/constituentMap.ts +0 -305
- package/src/constituentMap/pollingConstituentAccountSubscriber.ts +0 -99
- package/src/constituentMap/webSocketConstituentAccountSubscriber.ts +0 -121
- package/src/core/VelocityCore.ts +0 -606
- package/src/core/index.ts +0 -12
- package/src/core/instructions/deposit.ts +0 -64
- package/src/core/instructions/fill.ts +0 -51
- package/src/core/instructions/funding.ts +0 -33
- package/src/core/instructions/liquidation.ts +0 -55
- package/src/core/instructions/orders.ts +0 -84
- package/src/core/instructions/perpOrders.ts +0 -312
- package/src/core/instructions/settlement.ts +0 -40
- package/src/core/instructions/trigger.ts +0 -41
- package/src/core/instructions/withdraw.ts +0 -65
- package/src/core/remainingAccounts.ts +0 -320
- package/src/core/signedMsg.ts +0 -109
- package/src/decode/customCoder.ts +0 -148
- package/src/decode/user.ts +0 -401
- package/src/dlob/DLOB.ts +0 -2793
- package/src/dlob/DLOBNode.ts +0 -305
- package/src/dlob/DLOBSubscriber.ts +0 -269
- package/src/dlob/NodeList.ts +0 -244
- package/src/dlob/orderBookLevels.ts +0 -695
- package/src/dlob/types.ts +0 -37
- package/src/events/eventList.ts +0 -114
- package/src/events/eventSubscriber.ts +0 -521
- package/src/events/eventsServerLogProvider.ts +0 -189
- package/src/events/fetchLogs.ts +0 -219
- package/src/events/parse.ts +0 -271
- package/src/events/pollingLogProvider.ts +0 -113
- package/src/events/sort.ts +0 -51
- package/src/events/txEventCache.ts +0 -92
- package/src/events/types.ts +0 -337
- package/src/events/webSocketLogProvider.ts +0 -152
- package/src/factory/bigNum.ts +0 -709
- package/src/factory/oracleClient.ts +0 -73
- package/src/idl/pyth.json +0 -142
- package/src/idl/pyth.ts +0 -97
- package/src/idl/pyth_solana_receiver.json +0 -628
- package/src/idl/token_faucet.json +0 -229
- package/src/idl/token_faucet.ts +0 -197
- package/src/idl/velocity.json +0 -23974
- package/src/idl/velocity.ts +0 -23980
- package/src/index.ts +0 -150
- package/src/indicative-quotes/indicativeQuotesSender.ts +0 -233
- package/src/isomorphic/README.md +0 -19
- package/src/isomorphic/anchor.browser.ts +0 -44
- package/src/isomorphic/anchor.node.ts +0 -1
- package/src/isomorphic/anchor.ts +0 -1
- package/src/isomorphic/anchor29.browser.ts +0 -24
- package/src/isomorphic/anchor29.node.ts +0 -1
- package/src/isomorphic/anchor29.ts +0 -1
- package/src/isomorphic/grpc.browser.ts +0 -4
- package/src/isomorphic/grpc.node.ts +0 -130
- package/src/isomorphic/grpc.ts +0 -1
- package/src/jupiter/jupiterClient.ts +0 -502
- package/src/keypair.ts +0 -32
- package/src/margin/README.md +0 -138
- package/src/marginCalculation.ts +0 -407
- package/src/marinade/idl/idl.json +0 -1962
- package/src/marinade/index.ts +0 -73
- package/src/marinade/types.ts +0 -3925
- package/src/math/amm.ts +0 -1758
- package/src/math/auction.ts +0 -480
- package/src/math/bankruptcy.ts +0 -138
- package/src/math/builder.ts +0 -130
- package/src/math/conversion.ts +0 -45
- package/src/math/exchangeStatus.ts +0 -261
- package/src/math/funding.ts +0 -498
- package/src/math/insurance.ts +0 -171
- package/src/math/liquidation.ts +0 -433
- package/src/math/margin.ts +0 -327
- package/src/math/market.ts +0 -487
- package/src/math/oracles.ts +0 -477
- package/src/math/orders.ts +0 -500
- package/src/math/position.ts +0 -381
- package/src/math/repeg.ts +0 -223
- package/src/math/spotBalance.ts +0 -996
- package/src/math/spotMarket.ts +0 -115
- package/src/math/spotPosition.ts +0 -263
- package/src/math/state.ts +0 -71
- package/src/math/superStake.ts +0 -602
- package/src/math/tiers.ts +0 -73
- package/src/math/trade.ts +0 -879
- package/src/math/utils.ts +0 -183
- package/src/memcmp.ts +0 -279
- package/src/oracles/oracleClientCache.ts +0 -41
- package/src/oracles/oracleId.ts +0 -99
- package/src/oracles/prelaunchOracleClient.ts +0 -63
- package/src/oracles/pythClient.ts +0 -125
- package/src/oracles/pythLazerClient.ts +0 -141
- package/src/oracles/quoteAssetOracleClient.ts +0 -43
- package/src/oracles/strictOraclePrice.ts +0 -40
- package/src/oracles/types.ts +0 -82
- package/src/oracles/utils.ts +0 -45
- package/src/orderParams.ts +0 -117
- package/src/orderSubscriber/OrderSubscriber.ts +0 -378
- package/src/orderSubscriber/PollingSubscription.ts +0 -50
- package/src/orderSubscriber/WebsocketSubscription.ts +0 -137
- package/src/orderSubscriber/grpcSubscription.ts +0 -155
- package/src/orderSubscriber/index.ts +0 -7
- package/src/orderSubscriber/types.ts +0 -64
- package/src/priorityFee/averageOverSlotsStrategy.ts +0 -17
- package/src/priorityFee/averageStrategy.ts +0 -13
- package/src/priorityFee/ewmaStrategy.ts +0 -51
- package/src/priorityFee/heliusPriorityFeeMethod.ts +0 -68
- package/src/priorityFee/index.ts +0 -16
- package/src/priorityFee/maxOverSlotsStrategy.ts +0 -18
- package/src/priorityFee/maxStrategy.ts +0 -8
- package/src/priorityFee/priorityFeeSubscriber.ts +0 -328
- package/src/priorityFee/priorityFeeSubscriberMap.ts +0 -134
- package/src/priorityFee/solanaPriorityFeeMethod.ts +0 -46
- package/src/priorityFee/types.ts +0 -82
- package/src/priorityFee/velocityPriorityFeeMethod.ts +0 -53
- package/src/pyth/constants.ts +0 -9
- package/src/pyth/index.ts +0 -15
- package/src/pyth/pythLazerSubscriber.ts +0 -365
- package/src/pyth/types.ts +0 -4451
- package/src/pyth/utils.ts +0 -13
- package/src/slot/SlotSubscriber.ts +0 -126
- package/src/slot/SlothashSubscriber.ts +0 -163
- package/src/swap/UnifiedSwapClient.ts +0 -315
- package/src/swift/grpcSignedMsgUserAccountSubscriber.ts +0 -81
- package/src/swift/index.ts +0 -10
- package/src/swift/signedMsgUserAccountSubscriber.ts +0 -251
- package/src/swift/swiftOrderSubscriber.ts +0 -351
- package/src/testClient.ts +0 -42
- package/src/titan/titanClient.ts +0 -438
- package/src/token/index.ts +0 -13
- package/src/tokenFaucet.ts +0 -296
- package/src/tx/baseTxSender.ts +0 -651
- package/src/tx/blockhashFetcher/baseBlockhashFetcher.ts +0 -31
- package/src/tx/blockhashFetcher/cachedBlockhashFetcher.ts +0 -105
- package/src/tx/blockhashFetcher/types.ts +0 -9
- package/src/tx/fastSingleTxSender.ts +0 -200
- package/src/tx/forwardOnlyTxSender.ts +0 -193
- package/src/tx/priorityFeeCalculator.ts +0 -117
- package/src/tx/reportTransactionError.ts +0 -176
- package/src/tx/retryTxSender.ts +0 -177
- package/src/tx/txHandler.ts +0 -1009
- package/src/tx/txParamProcessor.ts +0 -225
- package/src/tx/types.ts +0 -117
- package/src/tx/utils.ts +0 -133
- package/src/tx/whileValidTxSender.ts +0 -377
- package/src/types.ts +0 -2575
- package/src/user.ts +0 -5316
- package/src/userConfig.ts +0 -38
- package/src/userMap/PollingSubscription.ts +0 -61
- package/src/userMap/WebsocketSubscription.ts +0 -93
- package/src/userMap/grpcSubscription.ts +0 -93
- package/src/userMap/referrerMap.ts +0 -360
- package/src/userMap/revenueShareEscrowMap.ts +0 -342
- package/src/userMap/userMap.ts +0 -784
- package/src/userMap/userMapConfig.ts +0 -82
- package/src/userMap/userStatsMap.ts +0 -393
- package/src/userName.ts +0 -37
- package/src/userStats.ts +0 -159
- package/src/userStatsConfig.ts +0 -35
- package/src/util/TransactionConfirmationManager.ts +0 -333
- package/src/util/chainClock.ts +0 -65
- package/src/util/computeUnits.ts +0 -101
- package/src/util/digest.ts +0 -33
- package/src/util/ed25519Utils.ts +0 -95
- package/src/util/promiseTimeout.ts +0 -23
- package/src/velocityClient.ts +0 -14802
- package/src/velocityClientConfig.ts +0 -119
- package/src/wallet.ts +0 -91
- package/tests/VelocityCore/builder_escrow.test.ts +0 -121
- package/tests/VelocityCore/decode.test.ts +0 -16
- package/tests/VelocityCore/fill_trigger.test.ts +0 -73
- package/tests/VelocityCore/instructions.test.ts +0 -46
- package/tests/VelocityCore/pdas.test.ts +0 -30
- package/tests/VelocityCore/perp_orders.test.ts +0 -205
- package/tests/VelocityCore/remainingAccounts.test.ts +0 -72
- package/tests/VelocityCore/settlement_liquidation.test.ts +0 -69
- package/tests/accounts/customizedCadenceBulkAccountLoader.test.ts +0 -211
- package/tests/amm/test.ts +0 -2402
- package/tests/auctions/test.ts +0 -81
- package/tests/bn/test.ts +0 -355
- package/tests/builder/builderFee.test.ts +0 -42
- package/tests/ci/verifyConstants.ts +0 -393
- package/tests/decode/test.ts +0 -262
- package/tests/decode/userAccountBufferStrings.ts +0 -102
- package/tests/dlob/helpers.ts +0 -748
- package/tests/dlob/test.ts +0 -6969
- package/tests/dlob/tickSizeStandardization.ts +0 -545
- package/tests/events/parseLogsForCuUsage.ts +0 -139
- package/tests/exchangeStatus/test.ts +0 -45
- package/tests/insurance/test.ts +0 -40
- package/tests/liquidation/test.ts +0 -125
- package/tests/oracles/mmOracleGate.test.ts +0 -379
- package/tests/oracles/pythPegSnap.test.ts +0 -76
- package/tests/sdkParity/enumParity.test.ts +0 -84
- package/tests/sdkParity/marginCategoryFill.test.ts +0 -143
- package/tests/sdkParity/memcmpOffsets.test.ts +0 -139
- package/tests/spot/test.ts +0 -281
- package/tests/tx/TransactionConfirmationManager.test.ts +0 -312
- package/tests/tx/cachedBlockhashFetcher.test.ts +0 -96
- package/tests/tx/priorityFeeCalculator.ts +0 -77
- package/tests/tx/priorityFeeStrategy.ts +0 -95
- package/tests/user/bankruptcy.ts +0 -165
- package/tests/user/feeAndWithdrawLimits.ts +0 -284
- package/tests/user/getMarginCalculation.ts +0 -586
- package/tests/user/helpers.ts +0 -184
- package/tests/user/liquidations.ts +0 -129
- package/tests/user/marginCalculations.test.ts +0 -321
- package/tests/user/test.ts +0 -833
- package/tsconfig.browser.json +0 -18
- package/tsconfig.json +0 -36
package/src/assert/assert.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { AuctionSubscriberConfig, AuctionSubscriberEvents } from './types';
|
|
2
|
-
import { VelocityClient } from '../velocityClient';
|
|
3
|
-
import { getUserFilter, getUserWithAuctionFilter } from '../memcmp';
|
|
4
|
-
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
5
|
-
import { EventEmitter } from 'events';
|
|
6
|
-
import { UserAccount } from '../types';
|
|
7
|
-
import { ConfirmOptions, Context, PublicKey } from '@solana/web3.js';
|
|
8
|
-
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
|
|
9
|
-
import { ResubOpts } from '../accounts/types';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* AuctionSubscriber — websocket program-account subscription scoped to
|
|
13
|
-
* `User` accounts that currently have at least one order in its auction
|
|
14
|
-
* window (`getUserWithAuctionFilter`). Used by keepers/fillers to react to
|
|
15
|
-
* auction-eligible orders (JIT-fillable or approaching the end of a Dutch
|
|
16
|
-
* auction) without scanning every user account.
|
|
17
|
-
*/
|
|
18
|
-
export class AuctionSubscriber {
|
|
19
|
-
private velocityClient: VelocityClient;
|
|
20
|
-
private opts: ConfirmOptions;
|
|
21
|
-
private resubOpts?: ResubOpts;
|
|
22
|
-
|
|
23
|
-
eventEmitter: StrictEventEmitter<EventEmitter, AuctionSubscriberEvents>;
|
|
24
|
-
private subscriber?: WebSocketProgramAccountSubscriber<UserAccount>;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @param velocityClient Client whose `program`/`connection` back the subscription; also supplies default `opts` if `opts` is omitted.
|
|
28
|
-
* @param opts Confirm options (commitment) for the subscription; defaults to `velocityClient.opts`.
|
|
29
|
-
* @param resubTimeoutMs Max time with no update before resubscribing.
|
|
30
|
-
* @param logResubMessages Whether to log resubscribe attempts.
|
|
31
|
-
*/
|
|
32
|
-
constructor({
|
|
33
|
-
velocityClient,
|
|
34
|
-
opts,
|
|
35
|
-
resubTimeoutMs,
|
|
36
|
-
logResubMessages,
|
|
37
|
-
}: AuctionSubscriberConfig) {
|
|
38
|
-
// Type-system guarantees at least one of the two is supplied.
|
|
39
|
-
this.velocityClient = velocityClient!;
|
|
40
|
-
this.opts = opts || this.velocityClient.opts || {};
|
|
41
|
-
this.eventEmitter = new EventEmitter();
|
|
42
|
-
this.resubOpts = { resubTimeoutMs, logResubMessages };
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/** Establishes the filtered program-account subscription (idempotent — reuses the existing subscriber if already created) and emits `onAccountUpdate` for each matching account update. */
|
|
46
|
-
public async subscribe() {
|
|
47
|
-
let subscriber = this.subscriber;
|
|
48
|
-
if (!subscriber) {
|
|
49
|
-
subscriber = new WebSocketProgramAccountSubscriber<UserAccount>(
|
|
50
|
-
'AuctionSubscriber',
|
|
51
|
-
'user',
|
|
52
|
-
this.velocityClient.program,
|
|
53
|
-
(
|
|
54
|
-
this.velocityClient.program.account as any
|
|
55
|
-
).user.coder.accounts.decode.bind(
|
|
56
|
-
(this.velocityClient.program.account as any).user.coder.accounts
|
|
57
|
-
),
|
|
58
|
-
{
|
|
59
|
-
filters: [getUserFilter(), getUserWithAuctionFilter()],
|
|
60
|
-
commitment: this.opts.commitment,
|
|
61
|
-
},
|
|
62
|
-
this.resubOpts
|
|
63
|
-
);
|
|
64
|
-
this.subscriber = subscriber;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
await subscriber.subscribe(
|
|
68
|
-
(accountId: PublicKey, data: UserAccount, context: Context) => {
|
|
69
|
-
this.eventEmitter.emit(
|
|
70
|
-
'onAccountUpdate',
|
|
71
|
-
data,
|
|
72
|
-
accountId,
|
|
73
|
-
context.slot
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** Tears down the subscription. No-op if never subscribed. */
|
|
80
|
-
public async unsubscribe() {
|
|
81
|
-
if (!this.subscriber) {
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
this.subscriber.unsubscribe();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { AuctionSubscriberConfig, AuctionSubscriberEvents } from './types';
|
|
2
|
-
import { VelocityClient } from '../velocityClient';
|
|
3
|
-
import { getUserFilter, getUserWithAuctionFilter } from '../memcmp';
|
|
4
|
-
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
5
|
-
import { EventEmitter } from 'events';
|
|
6
|
-
import { UserAccount } from '../types';
|
|
7
|
-
import { ConfirmOptions, Context, PublicKey } from '@solana/web3.js';
|
|
8
|
-
import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
|
|
9
|
-
import { GrpcConfigs, ResubOpts } from '../accounts/types';
|
|
10
|
-
import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Same as `AuctionSubscriber` (auction-eligible `User` accounts via
|
|
14
|
-
* `getUserWithAuctionFilter`) but sourced from a gRPC/Geyser stream
|
|
15
|
-
* (`grpcProgramAccountSubscriber`) instead of a websocket program-account
|
|
16
|
-
* subscription. Requires `grpcConfigs`.
|
|
17
|
-
*/
|
|
18
|
-
export class AuctionSubscriberGrpc {
|
|
19
|
-
private velocityClient: VelocityClient;
|
|
20
|
-
private opts: ConfirmOptions;
|
|
21
|
-
private resubOpts?: ResubOpts;
|
|
22
|
-
private grpcConfigs?: GrpcConfigs;
|
|
23
|
-
|
|
24
|
-
eventEmitter: StrictEventEmitter<EventEmitter, AuctionSubscriberEvents>;
|
|
25
|
-
private subscriber?: WebSocketProgramAccountSubscriber<UserAccount>;
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @param velocityClient Client whose `program` backs the subscription; also supplies default `opts` if `opts` is omitted.
|
|
29
|
-
* @param opts Confirm options (commitment) for the subscription; defaults to `velocityClient.opts`.
|
|
30
|
-
* @param grpcConfigs gRPC/Geyser endpoint config; required to call `subscribe()`.
|
|
31
|
-
* @param resubTimeoutMs Max time with no update before resubscribing.
|
|
32
|
-
* @param logResubMessages Whether to log resubscribe attempts.
|
|
33
|
-
*/
|
|
34
|
-
constructor({
|
|
35
|
-
velocityClient,
|
|
36
|
-
opts,
|
|
37
|
-
grpcConfigs,
|
|
38
|
-
resubTimeoutMs,
|
|
39
|
-
logResubMessages,
|
|
40
|
-
}: AuctionSubscriberConfig) {
|
|
41
|
-
// Type-system guarantees at least one of the two is supplied.
|
|
42
|
-
this.velocityClient = velocityClient!;
|
|
43
|
-
this.opts = opts || this.velocityClient.opts || {};
|
|
44
|
-
this.eventEmitter = new EventEmitter();
|
|
45
|
-
this.resubOpts = { resubTimeoutMs, logResubMessages };
|
|
46
|
-
this.grpcConfigs = grpcConfigs;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Establishes the filtered gRPC subscription (idempotent) and emits
|
|
51
|
-
* `onAccountUpdate` for each matching account update.
|
|
52
|
-
* @throws If `grpcConfigs` was not provided at construction.
|
|
53
|
-
*/
|
|
54
|
-
public async subscribe() {
|
|
55
|
-
let subscriber = this.subscriber;
|
|
56
|
-
if (!subscriber) {
|
|
57
|
-
if (!this.grpcConfigs) {
|
|
58
|
-
throw new Error(
|
|
59
|
-
'grpcConfigs must be provided to use AuctionSubscriberGrpc'
|
|
60
|
-
);
|
|
61
|
-
}
|
|
62
|
-
subscriber = await grpcProgramAccountSubscriber.create<UserAccount>(
|
|
63
|
-
this.grpcConfigs,
|
|
64
|
-
'AuctionSubscriber',
|
|
65
|
-
'user',
|
|
66
|
-
this.velocityClient.program,
|
|
67
|
-
(
|
|
68
|
-
this.velocityClient.program.account as any
|
|
69
|
-
).user.coder.accounts.decode.bind(
|
|
70
|
-
(this.velocityClient.program.account as any).user.coder.accounts
|
|
71
|
-
),
|
|
72
|
-
{
|
|
73
|
-
filters: [getUserFilter(), getUserWithAuctionFilter()],
|
|
74
|
-
},
|
|
75
|
-
this.resubOpts
|
|
76
|
-
);
|
|
77
|
-
this.subscriber = subscriber;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
await subscriber.subscribe(
|
|
81
|
-
(accountId: PublicKey, data: UserAccount, context: Context) => {
|
|
82
|
-
this.eventEmitter.emit(
|
|
83
|
-
'onAccountUpdate',
|
|
84
|
-
data,
|
|
85
|
-
accountId,
|
|
86
|
-
context.slot
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/** Tears down the subscription. No-op if never subscribed. */
|
|
93
|
-
public async unsubscribe() {
|
|
94
|
-
if (!this.subscriber) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
this.subscriber.unsubscribe();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auction-eligible order tracking — filtered `User`-account subscriptions
|
|
3
|
-
* (`AuctionSubscriber` over websocket, `AuctionSubscriberGrpc` over gRPC/Geyser)
|
|
4
|
-
* scoped to accounts with at least one order currently in its auction window,
|
|
5
|
-
* for keepers/fillers reacting to JIT-fillable or expiring-auction orders.
|
|
6
|
-
*/
|
|
7
|
-
export * from './types';
|
|
8
|
-
export * from './auctionSubscriber';
|
|
9
|
-
export * from './auctionSubscriberGrpc';
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { GrpcConfigs } from '../accounts/types';
|
|
2
|
-
import { VelocityClient } from '../velocityClient';
|
|
3
|
-
import { UserAccount } from '../types';
|
|
4
|
-
import { ConfirmOptions, PublicKey } from '@solana/web3.js';
|
|
5
|
-
|
|
6
|
-
type AuctionSubscriberConfigBase = {
|
|
7
|
-
/** Confirm options (notably `commitment`) for the underlying program-account subscription; defaults to `velocityClient.opts`. */
|
|
8
|
-
opts?: ConfirmOptions;
|
|
9
|
-
/** Max time with no update before the subscription resubscribes. */
|
|
10
|
-
resubTimeoutMs?: number;
|
|
11
|
-
/** Whether to log resubscribe attempts. */
|
|
12
|
-
logResubMessages?: boolean;
|
|
13
|
-
/** gRPC/Geyser endpoint config; only consumed by `AuctionSubscriberGrpc`, ignored by `AuctionSubscriber`. */
|
|
14
|
-
grpcConfigs?: GrpcConfigs;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
/** Configuration for `AuctionSubscriber`/`AuctionSubscriberGrpc`. */
|
|
18
|
-
export type AuctionSubscriberConfig = AuctionSubscriberConfigBase & {
|
|
19
|
-
velocityClient: VelocityClient;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
/** Events emitted on `AuctionSubscriber`/`AuctionSubscriberGrpc`'s `eventEmitter`. */
|
|
23
|
-
export interface AuctionSubscriberEvents {
|
|
24
|
-
/** Fired whenever a `User` account with at least one order currently in its auction window is created or updated. */
|
|
25
|
-
onAccountUpdate: (
|
|
26
|
-
account: UserAccount,
|
|
27
|
-
pubkey: PublicKey,
|
|
28
|
-
slot: number
|
|
29
|
-
) => void;
|
|
30
|
-
}
|