@drift-labs/sdk 2.115.0-beta.13 → 2.115.0-beta.14

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.
Files changed (32) hide show
  1. package/VERSION +1 -1
  2. package/lib/browser/index.d.ts +0 -1
  3. package/lib/browser/index.js +0 -1
  4. package/lib/node/index.d.ts +0 -1
  5. package/lib/node/index.d.ts.map +1 -1
  6. package/lib/node/index.js +0 -1
  7. package/package.json +1 -1
  8. package/src/index.ts +0 -1
  9. package/lib/browser/fastlane/fastlaneOrderSubscriber.d.ts +0 -33
  10. package/lib/browser/fastlane/fastlaneOrderSubscriber.js +0 -137
  11. package/lib/browser/fastlane/grpcSignedMsgUserAccountSubscriber.d.ts +0 -22
  12. package/lib/browser/fastlane/grpcSignedMsgUserAccountSubscriber.js +0 -57
  13. package/lib/browser/fastlane/index.d.ts +0 -3
  14. package/lib/browser/fastlane/index.js +0 -19
  15. package/lib/browser/fastlane/signedMsgUserAccountSubscriber.d.ts +0 -43
  16. package/lib/browser/fastlane/signedMsgUserAccountSubscriber.js +0 -116
  17. package/lib/node/fastlane/fastlaneOrderSubscriber.d.ts +0 -34
  18. package/lib/node/fastlane/fastlaneOrderSubscriber.d.ts.map +0 -1
  19. package/lib/node/fastlane/fastlaneOrderSubscriber.js +0 -137
  20. package/lib/node/fastlane/grpcSignedMsgUserAccountSubscriber.d.ts +0 -23
  21. package/lib/node/fastlane/grpcSignedMsgUserAccountSubscriber.d.ts.map +0 -1
  22. package/lib/node/fastlane/grpcSignedMsgUserAccountSubscriber.js +0 -57
  23. package/lib/node/fastlane/index.d.ts +0 -4
  24. package/lib/node/fastlane/index.d.ts.map +0 -1
  25. package/lib/node/fastlane/index.js +0 -19
  26. package/lib/node/fastlane/signedMsgUserAccountSubscriber.d.ts +0 -44
  27. package/lib/node/fastlane/signedMsgUserAccountSubscriber.d.ts.map +0 -1
  28. package/lib/node/fastlane/signedMsgUserAccountSubscriber.js +0 -116
  29. package/src/fastlane/fastlaneOrderSubscriber.ts +0 -230
  30. package/src/fastlane/grpcSignedMsgUserAccountSubscriber.ts +0 -95
  31. package/src/fastlane/index.ts +0 -3
  32. package/src/fastlane/signedMsgUserAccountSubscriber.ts +0 -234
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.115.0-beta.13
1
+ 2.115.0-beta.14
@@ -87,7 +87,6 @@ export * from './oracles/pythPullClient';
87
87
  export * from './oracles/pythLazerClient';
88
88
  export * from './oracles/switchboardOnDemandClient';
89
89
  export * from './oracles/oracleId';
90
- export * from './fastlane/fastlaneOrderSubscriber';
91
90
  export * from './swift/swiftOrderSubscriber';
92
91
  export * from './swift/signedMsgUserAccountSubscriber';
93
92
  export * from './swift/grpcSignedMsgUserAccountSubscriber';
@@ -110,7 +110,6 @@ __exportStar(require("./oracles/pythPullClient"), exports);
110
110
  __exportStar(require("./oracles/pythLazerClient"), exports);
111
111
  __exportStar(require("./oracles/switchboardOnDemandClient"), exports);
112
112
  __exportStar(require("./oracles/oracleId"), exports);
113
- __exportStar(require("./fastlane/fastlaneOrderSubscriber"), exports);
114
113
  __exportStar(require("./swift/swiftOrderSubscriber"), exports);
115
114
  __exportStar(require("./swift/signedMsgUserAccountSubscriber"), exports);
116
115
  __exportStar(require("./swift/grpcSignedMsgUserAccountSubscriber"), exports);
@@ -87,7 +87,6 @@ export * from './oracles/pythPullClient';
87
87
  export * from './oracles/pythLazerClient';
88
88
  export * from './oracles/switchboardOnDemandClient';
89
89
  export * from './oracles/oracleId';
90
- export * from './fastlane/fastlaneOrderSubscriber';
91
90
  export * from './swift/swiftOrderSubscriber';
92
91
  export * from './swift/signedMsgUserAccountSubscriber';
93
92
  export * from './swift/grpcSignedMsgUserAccountSubscriber';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/lib/node/index.js CHANGED
@@ -110,7 +110,6 @@ __exportStar(require("./oracles/pythPullClient"), exports);
110
110
  __exportStar(require("./oracles/pythLazerClient"), exports);
111
111
  __exportStar(require("./oracles/switchboardOnDemandClient"), exports);
112
112
  __exportStar(require("./oracles/oracleId"), exports);
113
- __exportStar(require("./fastlane/fastlaneOrderSubscriber"), exports);
114
113
  __exportStar(require("./swift/swiftOrderSubscriber"), exports);
115
114
  __exportStar(require("./swift/signedMsgUserAccountSubscriber"), exports);
116
115
  __exportStar(require("./swift/grpcSignedMsgUserAccountSubscriber"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "2.115.0-beta.13",
3
+ "version": "2.115.0-beta.14",
4
4
  "main": "lib/node/index.js",
5
5
  "types": "lib/node/index.d.ts",
6
6
  "browser": "./lib/browser/index.js",
package/src/index.ts CHANGED
@@ -88,7 +88,6 @@ export * from './oracles/pythPullClient';
88
88
  export * from './oracles/pythLazerClient';
89
89
  export * from './oracles/switchboardOnDemandClient';
90
90
  export * from './oracles/oracleId';
91
- export * from './fastlane/fastlaneOrderSubscriber';
92
91
  export * from './swift/swiftOrderSubscriber';
93
92
  export * from './swift/signedMsgUserAccountSubscriber';
94
93
  export * from './swift/grpcSignedMsgUserAccountSubscriber';
@@ -1,33 +0,0 @@
1
- import { DriftClient, DriftEnv, OptionalOrderParams, SignedMsgOrderParamsMessage, UserMap } from '..';
2
- import { Keypair, TransactionInstruction } from '@solana/web3.js';
3
- export type FastlaneOrderSubscriberConfig = {
4
- driftClient: DriftClient;
5
- userMap: UserMap;
6
- driftEnv: DriftEnv;
7
- endpoint?: string;
8
- marketIndexes: number[];
9
- /**
10
- In the future, this will be used for verifying $DRIFT stake as we add
11
- authentication for delegate signers
12
- For now, pass a new keypair or a keypair to an empty wallet
13
- */
14
- keypair: Keypair;
15
- };
16
- export declare class FastlaneOrderSubscriber {
17
- private config;
18
- private heartbeatTimeout;
19
- private readonly heartbeatIntervalMs;
20
- private ws;
21
- private driftClient;
22
- userMap: UserMap;
23
- onOrder: (orderMessageRaw: any, signedMsgOrderParamsMessage: SignedMsgOrderParamsMessage) => Promise<void>;
24
- subscribed: boolean;
25
- constructor(config: FastlaneOrderSubscriberConfig);
26
- getSymbolForMarketIndex(marketIndex: number): string;
27
- generateChallengeResponse(nonce: string): string;
28
- handleAuthMessage(message: any): void;
29
- subscribe(onOrder: (orderMessageRaw: any, signedMsgOrderParamsMessage: SignedMsgOrderParamsMessage) => Promise<void>): Promise<void>;
30
- getPlaceAndMakeSignedMsgOrderIxs(orderMessageRaw: any, signedMsgOrderParamsMessage: SignedMsgOrderParamsMessage, makerOrderParams: OptionalOrderParams): Promise<TransactionInstruction[]>;
31
- private startHeartbeatTimer;
32
- private reconnect;
33
- }
@@ -1,137 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.FastlaneOrderSubscriber = void 0;
7
- const __1 = require("..");
8
- const web3_js_1 = require("@solana/web3.js");
9
- const tweetnacl_1 = __importDefault(require("tweetnacl"));
10
- const tweetnacl_util_1 = require("tweetnacl-util");
11
- const ws_1 = __importDefault(require("ws"));
12
- class FastlaneOrderSubscriber {
13
- constructor(config) {
14
- this.config = config;
15
- this.heartbeatTimeout = null;
16
- this.heartbeatIntervalMs = 60000;
17
- this.ws = null;
18
- this.subscribed = false;
19
- this.driftClient = config.driftClient;
20
- this.userMap = config.userMap;
21
- }
22
- getSymbolForMarketIndex(marketIndex) {
23
- const markets = this.config.driftEnv === 'devnet'
24
- ? __1.DevnetPerpMarkets
25
- : __1.MainnetPerpMarkets;
26
- return markets[marketIndex].symbol;
27
- }
28
- generateChallengeResponse(nonce) {
29
- const messageBytes = (0, tweetnacl_util_1.decodeUTF8)(nonce);
30
- const signature = tweetnacl_1.default.sign.detached(messageBytes, this.config.keypair.secretKey);
31
- const signatureBase64 = Buffer.from(signature).toString('base64');
32
- return signatureBase64;
33
- }
34
- handleAuthMessage(message) {
35
- var _a, _b;
36
- if (message['channel'] === 'auth' && message['nonce'] != null) {
37
- const signatureBase64 = this.generateChallengeResponse(message['nonce']);
38
- (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({
39
- pubkey: this.config.keypair.publicKey.toBase58(),
40
- signature: signatureBase64,
41
- }));
42
- }
43
- if (message['channel'] === 'auth' &&
44
- ((_b = message['message']) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'authenticated') {
45
- this.subscribed = true;
46
- this.config.marketIndexes.forEach(async (marketIndex) => {
47
- var _a;
48
- (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({
49
- action: 'subscribe',
50
- market_type: 'perp',
51
- market_name: this.getSymbolForMarketIndex(marketIndex),
52
- }));
53
- await new Promise((resolve) => setTimeout(resolve, 100));
54
- });
55
- }
56
- }
57
- async subscribe(onOrder) {
58
- this.onOrder = onOrder;
59
- const endpoint = this.config.endpoint || this.config.driftEnv === 'devnet'
60
- ? 'wss://master.fastlane.drift.trade/ws'
61
- : 'wss://fastlane.drift.trade/ws';
62
- const ws = new ws_1.default(endpoint + '?pubkey=' + this.config.keypair.publicKey.toBase58());
63
- this.ws = ws;
64
- ws.on('open', async () => {
65
- console.log('Connected to the server');
66
- ws.on('message', async (data) => {
67
- const message = JSON.parse(data.toString());
68
- this.startHeartbeatTimer();
69
- if (message['channel'] === 'auth') {
70
- this.handleAuthMessage(message);
71
- }
72
- if (message['order']) {
73
- const order = message['order'];
74
- const signedMsgOrderParamsBuf = Buffer.from(order['order_message'], 'hex');
75
- const signedMsgOrderParamsMessage = this.driftClient.decodeSignedMsgOrderParamsMessage(signedMsgOrderParamsBuf);
76
- if (!signedMsgOrderParamsMessage.signedMsgOrderParams.price) {
77
- console.error(`order has no price: ${JSON.stringify(signedMsgOrderParamsMessage.signedMsgOrderParams)}`);
78
- return;
79
- }
80
- onOrder(order, signedMsgOrderParamsMessage);
81
- }
82
- });
83
- ws.on('close', () => {
84
- console.log('Disconnected from the server');
85
- this.reconnect();
86
- });
87
- ws.on('error', (error) => {
88
- console.error('WebSocket error:', error);
89
- this.reconnect();
90
- });
91
- });
92
- }
93
- async getPlaceAndMakeSignedMsgOrderIxs(orderMessageRaw, signedMsgOrderParamsMessage, makerOrderParams) {
94
- const signedMsgOrderParamsBuf = Buffer.from(orderMessageRaw['order_message'], 'hex');
95
- const takerAuthority = new web3_js_1.PublicKey(orderMessageRaw['taker_authority']);
96
- const signingAuthority = new web3_js_1.PublicKey(orderMessageRaw['signing_authority']);
97
- const takerUserPubkey = await (0, __1.getUserAccountPublicKey)(this.driftClient.program.programId, takerAuthority, signedMsgOrderParamsMessage.subAccountId);
98
- const takerUserAccount = (await this.userMap.mustGet(takerUserPubkey.toString())).getUserAccount();
99
- const ixs = await this.driftClient.getPlaceAndMakeSignedMsgPerpOrderIxs({
100
- orderParams: signedMsgOrderParamsBuf,
101
- signature: Buffer.from(orderMessageRaw['order_signature'], 'base64'),
102
- }, (0, tweetnacl_util_1.decodeUTF8)(orderMessageRaw['uuid']), {
103
- taker: takerUserPubkey,
104
- takerUserAccount,
105
- takerStats: (0, __1.getUserStatsAccountPublicKey)(this.driftClient.program.programId, takerUserAccount.authority),
106
- signingAuthority: signingAuthority,
107
- }, Object.assign({}, makerOrderParams, {
108
- postOnly: __1.PostOnlyParams.MUST_POST_ONLY,
109
- immediateOrCancel: true,
110
- marketType: __1.MarketType.PERP,
111
- }));
112
- return ixs;
113
- }
114
- startHeartbeatTimer() {
115
- if (this.heartbeatTimeout) {
116
- clearTimeout(this.heartbeatTimeout);
117
- }
118
- if (!this.onOrder) {
119
- throw new Error('onOrder callback function must be set');
120
- }
121
- this.heartbeatTimeout = setTimeout(() => {
122
- console.warn('No heartbeat received within 30 seconds, reconnecting...');
123
- this.reconnect();
124
- }, this.heartbeatIntervalMs);
125
- }
126
- reconnect() {
127
- if (this.ws) {
128
- this.ws.removeAllListeners();
129
- this.ws.terminate();
130
- }
131
- console.log('Reconnecting to WebSocket...');
132
- setTimeout(() => {
133
- this.subscribe(this.onOrder);
134
- }, 1000);
135
- }
136
- }
137
- exports.FastlaneOrderSubscriber = FastlaneOrderSubscriber;
@@ -1,22 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { Commitment } from '@solana/web3.js';
4
- import { grpcProgramAccountSubscriber } from '../accounts/grpcProgramAccountSubscriber';
5
- import { GrpcConfigs, ResubOpts } from '../accounts/types';
6
- import { SignedMsgUserOrdersAccount } from '../types';
7
- import { SignedMsgUserOrdersAccountSubscriber } from './signedMsgUserAccountSubscriber';
8
- import { DriftClient } from '../driftClient';
9
- export declare class grpcSignedMsgUserOrdersAccountSubscriber extends SignedMsgUserOrdersAccountSubscriber {
10
- private grpcConfigs;
11
- subscriber: grpcProgramAccountSubscriber<SignedMsgUserOrdersAccount>;
12
- constructor({ grpcConfigs, driftClient, commitment, resubOpts, decodeFn, resyncIntervalMs, }: {
13
- grpcConfigs: GrpcConfigs;
14
- driftClient: DriftClient;
15
- commitment: Commitment;
16
- resubOpts?: ResubOpts;
17
- decodeFn: (name: string, data: Buffer) => SignedMsgUserOrdersAccount;
18
- resyncIntervalMs?: number;
19
- });
20
- subscribe(): Promise<void>;
21
- unsubscribe(): Promise<void>;
22
- }
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.grpcSignedMsgUserOrdersAccountSubscriber = void 0;
4
- const grpcProgramAccountSubscriber_1 = require("../accounts/grpcProgramAccountSubscriber");
5
- const memcmp_1 = require("../memcmp");
6
- const signedMsgUserAccountSubscriber_1 = require("./signedMsgUserAccountSubscriber");
7
- class grpcSignedMsgUserOrdersAccountSubscriber extends signedMsgUserAccountSubscriber_1.SignedMsgUserOrdersAccountSubscriber {
8
- constructor({ grpcConfigs, driftClient, commitment, resubOpts, decodeFn, resyncIntervalMs, }) {
9
- super({
10
- driftClient,
11
- commitment,
12
- resubOpts,
13
- decodeFn,
14
- resyncIntervalMs,
15
- });
16
- this.grpcConfigs = grpcConfigs;
17
- }
18
- async subscribe() {
19
- if (!this.subscriber) {
20
- this.subscriber =
21
- await grpcProgramAccountSubscriber_1.grpcProgramAccountSubscriber.create(this.grpcConfigs, 'OrderSubscriber', 'User', this.driftClient.program, this.decodeFn, {
22
- filters: [(0, memcmp_1.getSignedMsgUserOrdersFilter)()],
23
- }, this.resubOpts);
24
- }
25
- await this.subscriber.subscribe((_accountId, account, context) => {
26
- this.tryUpdateSignedMsgUserOrdersAccount(account, 'decoded', context.slot);
27
- });
28
- if (this.resyncIntervalMs) {
29
- const recursiveResync = () => {
30
- this.resyncTimeoutId = setTimeout(() => {
31
- this.fetch()
32
- .catch((e) => {
33
- console.error('Failed to resync in OrderSubscriber');
34
- console.log(e);
35
- })
36
- .finally(() => {
37
- if (!this.resyncTimeoutId)
38
- return;
39
- recursiveResync();
40
- });
41
- }, this.resyncIntervalMs);
42
- };
43
- recursiveResync();
44
- }
45
- }
46
- async unsubscribe() {
47
- if (!this.subscriber)
48
- return;
49
- await this.subscriber.unsubscribe();
50
- this.subscriber = undefined;
51
- if (this.resyncTimeoutId !== undefined) {
52
- clearTimeout(this.resyncTimeoutId);
53
- this.resyncTimeoutId = undefined;
54
- }
55
- }
56
- }
57
- exports.grpcSignedMsgUserOrdersAccountSubscriber = grpcSignedMsgUserOrdersAccountSubscriber;
@@ -1,3 +0,0 @@
1
- export * from './fastlaneOrderSubscriber';
2
- export * from './signedMsgUserAccountSubscriber';
3
- export * from './grpcSignedMsgUserAccountSubscriber';
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./fastlaneOrderSubscriber"), exports);
18
- __exportStar(require("./signedMsgUserAccountSubscriber"), exports);
19
- __exportStar(require("./grpcSignedMsgUserAccountSubscriber"), exports);
@@ -1,43 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- import { WebSocketProgramAccountSubscriber } from '../accounts/webSocketProgramAccountSubscriber';
6
- import { SignedMsgOrderId, SignedMsgUserOrdersAccount } from '../types';
7
- import { Commitment, PublicKey } from '@solana/web3.js';
8
- import { ResubOpts } from '../accounts/types';
9
- import { DriftClient } from '../driftClient';
10
- import StrictEventEmitter from 'strict-event-emitter-types';
11
- import { EventEmitter } from 'events';
12
- export interface SignedMsgUserOrdersAccountSubscriberEvents {
13
- onAccountUpdate: (activeSignedMsgOrderIds: SignedMsgOrderId[], authorityPubkey: PublicKey, slot: number) => void;
14
- newSignedMsgOrderIds: (newSignedMsgOrderIds: SignedMsgOrderId[], authorityPubkey: PublicKey, slot: number) => void;
15
- }
16
- export declare class SignedMsgUserOrdersAccountSubscriber {
17
- protected driftClient: DriftClient;
18
- protected commitment: Commitment;
19
- protected resubOpts?: ResubOpts;
20
- protected resyncTimeoutId?: NodeJS.Timeout;
21
- protected resyncIntervalMs?: number;
22
- protected decodeFn: (name: string, data: Buffer) => SignedMsgUserOrdersAccount;
23
- protected signedMsgUserOrderAccounts: Map<string, {
24
- slot: number;
25
- signedMsgUserOrdersAccount: SignedMsgUserOrdersAccount;
26
- }>;
27
- mostRecentSlot: number;
28
- fetchPromise?: Promise<void>;
29
- fetchPromiseResolver: () => void;
30
- protected subscriber: WebSocketProgramAccountSubscriber<SignedMsgUserOrdersAccount>;
31
- eventEmitter: StrictEventEmitter<EventEmitter, SignedMsgUserOrdersAccountSubscriberEvents>;
32
- constructor({ driftClient, commitment, resubOpts, decodeFn, resyncIntervalMs, }: {
33
- driftClient: DriftClient;
34
- commitment: Commitment;
35
- resubOpts?: ResubOpts;
36
- decodeFn: (name: string, data: Buffer) => SignedMsgUserOrdersAccount;
37
- resyncIntervalMs?: number;
38
- });
39
- subscribe(): Promise<void>;
40
- fetch(): Promise<void>;
41
- tryUpdateSignedMsgUserOrdersAccount(data: Buffer | SignedMsgUserOrdersAccount, dataType: 'buffer' | 'decoded', slot: number, skipEventEmitting?: boolean): void;
42
- unsubscribe(): Promise<void>;
43
- }
@@ -1,116 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SignedMsgUserOrdersAccountSubscriber = void 0;
4
- const memcmp_1 = require("../memcmp");
5
- const webSocketProgramAccountSubscriber_1 = require("../accounts/webSocketProgramAccountSubscriber");
6
- const events_1 = require("events");
7
- class SignedMsgUserOrdersAccountSubscriber {
8
- constructor({ driftClient, commitment, resubOpts, decodeFn, resyncIntervalMs, }) {
9
- this.signedMsgUserOrderAccounts = new Map();
10
- this.commitment = commitment;
11
- this.resubOpts = resubOpts;
12
- this.decodeFn = decodeFn;
13
- this.driftClient = driftClient;
14
- this.resyncIntervalMs = resyncIntervalMs;
15
- this.eventEmitter = new events_1.EventEmitter();
16
- this.resubOpts = resubOpts;
17
- }
18
- async subscribe() {
19
- if (!this.subscriber) {
20
- const filters = [(0, memcmp_1.getSignedMsgUserOrdersFilter)()];
21
- this.subscriber =
22
- new webSocketProgramAccountSubscriber_1.WebSocketProgramAccountSubscriber('SingedMsgUserOrdersAccountMap', 'SignedMsgUserOrders', this.driftClient.program, this.decodeFn, {
23
- filters,
24
- commitment: this.commitment,
25
- }, this.resubOpts);
26
- }
27
- await this.subscriber.subscribe((_accountId, account, context) => {
28
- this.tryUpdateSignedMsgUserOrdersAccount(account, 'decoded', context.slot);
29
- });
30
- await this.fetch();
31
- if (this.resyncIntervalMs) {
32
- const recursiveResync = () => {
33
- this.resyncTimeoutId = setTimeout(() => {
34
- this.fetch()
35
- .catch((e) => {
36
- console.error('Failed to resync in OrderSubscriber');
37
- console.log(e);
38
- })
39
- .finally(() => {
40
- if (!this.resyncTimeoutId)
41
- return;
42
- recursiveResync();
43
- });
44
- }, this.resyncIntervalMs);
45
- };
46
- recursiveResync();
47
- }
48
- }
49
- async fetch() {
50
- if (this.fetchPromise) {
51
- return this.fetchPromise;
52
- }
53
- this.fetchPromise = new Promise((resolver) => {
54
- this.fetchPromiseResolver = resolver;
55
- });
56
- const skipEventEmitting = this.signedMsgUserOrderAccounts.size === 0;
57
- try {
58
- const rpcResponseAndContext = await this.driftClient.connection.getProgramAccounts(this.driftClient.program.programId, {
59
- commitment: this.commitment,
60
- filters: [(0, memcmp_1.getSignedMsgUserOrdersFilter)()],
61
- encoding: 'base64',
62
- withContext: true,
63
- });
64
- const slot = rpcResponseAndContext.context.slot;
65
- for (const programAccount of rpcResponseAndContext.value) {
66
- this.tryUpdateSignedMsgUserOrdersAccount(programAccount.account.data, 'buffer', slot, skipEventEmitting);
67
- await new Promise((resolve) => setTimeout(resolve, 0));
68
- }
69
- }
70
- catch (e) {
71
- console.error(e);
72
- }
73
- finally {
74
- this.fetchPromiseResolver();
75
- this.fetchPromise = undefined;
76
- }
77
- }
78
- tryUpdateSignedMsgUserOrdersAccount(data, dataType, slot, skipEventEmitting = false) {
79
- var _a;
80
- if (!this.mostRecentSlot || slot > this.mostRecentSlot) {
81
- this.mostRecentSlot = slot;
82
- }
83
- const signedMsgUserOrdersAccount = dataType === 'buffer'
84
- ? this.decodeFn('SignedMsgUserOrders', data)
85
- : data;
86
- const key = signedMsgUserOrdersAccount.authorityPubkey.toBase58();
87
- const slotAndSignedMsgUserOrdersAccount = this.signedMsgUserOrderAccounts.get(key);
88
- if (!slotAndSignedMsgUserOrdersAccount ||
89
- slotAndSignedMsgUserOrdersAccount.slot <= slot) {
90
- if (!skipEventEmitting) {
91
- this.eventEmitter.emit('onAccountUpdate', signedMsgUserOrdersAccount.signedMsgOrderData.filter((signedMsgOrderId) => signedMsgOrderId.orderId !== 0), signedMsgUserOrdersAccount.authorityPubkey, slot);
92
- }
93
- const existingSignedMsgOrderIds = (_a = slotAndSignedMsgUserOrdersAccount === null || slotAndSignedMsgUserOrdersAccount === void 0 ? void 0 : slotAndSignedMsgUserOrdersAccount.signedMsgUserOrdersAccount.signedMsgOrderData.map((signedMsgOrderId) => signedMsgOrderId.orderId)) !== null && _a !== void 0 ? _a : [];
94
- const newSignedMsgOrderIds = signedMsgUserOrdersAccount.signedMsgOrderData.filter((signedMsgOrderId) => !existingSignedMsgOrderIds.includes(signedMsgOrderId.orderId) &&
95
- signedMsgOrderId.orderId !== 0);
96
- if (newSignedMsgOrderIds.length > 0 && !skipEventEmitting) {
97
- this.eventEmitter.emit('newSignedMsgOrderIds', newSignedMsgOrderIds, signedMsgUserOrdersAccount.authorityPubkey, slot);
98
- }
99
- this.signedMsgUserOrderAccounts.set(key, {
100
- slot,
101
- signedMsgUserOrdersAccount,
102
- });
103
- }
104
- }
105
- async unsubscribe() {
106
- if (!this.subscriber)
107
- return;
108
- await this.subscriber.unsubscribe();
109
- this.subscriber = undefined;
110
- if (this.resyncTimeoutId !== undefined) {
111
- clearTimeout(this.resyncTimeoutId);
112
- this.resyncTimeoutId = undefined;
113
- }
114
- }
115
- }
116
- exports.SignedMsgUserOrdersAccountSubscriber = SignedMsgUserOrdersAccountSubscriber;
@@ -1,34 +0,0 @@
1
- import { DriftClient, DriftEnv, OptionalOrderParams, SignedMsgOrderParamsMessage, UserMap } from '..';
2
- import { Keypair, TransactionInstruction } from '@solana/web3.js';
3
- export type FastlaneOrderSubscriberConfig = {
4
- driftClient: DriftClient;
5
- userMap: UserMap;
6
- driftEnv: DriftEnv;
7
- endpoint?: string;
8
- marketIndexes: number[];
9
- /**
10
- In the future, this will be used for verifying $DRIFT stake as we add
11
- authentication for delegate signers
12
- For now, pass a new keypair or a keypair to an empty wallet
13
- */
14
- keypair: Keypair;
15
- };
16
- export declare class FastlaneOrderSubscriber {
17
- private config;
18
- private heartbeatTimeout;
19
- private readonly heartbeatIntervalMs;
20
- private ws;
21
- private driftClient;
22
- userMap: UserMap;
23
- onOrder: (orderMessageRaw: any, signedMsgOrderParamsMessage: SignedMsgOrderParamsMessage) => Promise<void>;
24
- subscribed: boolean;
25
- constructor(config: FastlaneOrderSubscriberConfig);
26
- getSymbolForMarketIndex(marketIndex: number): string;
27
- generateChallengeResponse(nonce: string): string;
28
- handleAuthMessage(message: any): void;
29
- subscribe(onOrder: (orderMessageRaw: any, signedMsgOrderParamsMessage: SignedMsgOrderParamsMessage) => Promise<void>): Promise<void>;
30
- getPlaceAndMakeSignedMsgOrderIxs(orderMessageRaw: any, signedMsgOrderParamsMessage: SignedMsgOrderParamsMessage, makerOrderParams: OptionalOrderParams): Promise<TransactionInstruction[]>;
31
- private startHeartbeatTimer;
32
- private reconnect;
33
- }
34
- //# sourceMappingURL=fastlaneOrderSubscriber.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fastlaneOrderSubscriber.d.ts","sourceRoot":"","sources":["../../../src/fastlane/fastlaneOrderSubscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,WAAW,EACX,QAAQ,EAKR,mBAAmB,EAEnB,2BAA2B,EAC3B,OAAO,EACP,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,OAAO,EAAa,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAK7E,MAAM,MAAM,6BAA6B,GAAG;IAC3C,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;;;MAIE;IACF,OAAO,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qBAAa,uBAAuB;IAavB,OAAO,CAAC,MAAM;IAZ1B,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAc;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,CACf,eAAe,EAAE,GAAG,EACpB,2BAA2B,EAAE,2BAA2B,KACpD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,UAAU,UAAS;gBAEC,MAAM,EAAE,6BAA6B;IAKzD,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAQpD,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAUhD,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IA6B/B,SAAS,CACd,OAAO,EAAE,CACR,eAAe,EAAE,GAAG,EACpB,2BAA2B,EAAE,2BAA2B,KACpD,OAAO,CAAC,IAAI,CAAC,GAChB,OAAO,CAAC,IAAI,CAAC;IA0DV,gCAAgC,CACrC,eAAe,EAAE,GAAG,EACpB,2BAA2B,EAAE,2BAA2B,EACxD,gBAAgB,EAAE,mBAAmB,GACnC,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAyCpC,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,SAAS;CAWjB"}