@drift-labs/sdk-browser 2.119.0-beta.1 → 2.119.0-beta.3

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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.119.0-beta.1
1
+ 2.119.0-beta.3
@@ -193,6 +193,8 @@ export declare class AdminClient extends DriftClient {
193
193
  getUpdateSpotMarketFuelIx(spotMarketIndex: number, fuelBoostDeposits?: number, fuelBoostBorrows?: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostInsurance?: number): Promise<TransactionInstruction>;
194
194
  updatePerpMarketFuel(perpMarketIndex: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostPosition?: number): Promise<TransactionSignature>;
195
195
  getUpdatePerpMarketFuelIx(perpMarketIndex: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostPosition?: number): Promise<TransactionInstruction>;
196
+ updatePerpMarketProtectedMakerParams(perpMarketIndex: number, protectedMakerLimitPriceDivisor?: number, protectedMakerDynamicDivisor?: number): Promise<TransactionSignature>;
197
+ getUpdatePerpMarketProtectedMakerParamsIx(perpMarketIndex: number, protectedMakerLimitPriceDivisor?: number, protectedMakerDynamicDivisor?: number): Promise<TransactionInstruction>;
196
198
  initUserFuel(user: PublicKey, authority: PublicKey, fuelBonusDeposits?: number, fuelBonusBorrows?: number, fuelBonusTaker?: number, fuelBonusMaker?: number, fuelBonusInsurance?: number): Promise<TransactionSignature>;
197
199
  getInitUserFuelIx(user: PublicKey, authority: PublicKey, fuelBonusDeposits?: number, fuelBonusBorrows?: number, fuelBonusTaker?: number, fuelBonusMaker?: number, fuelBonusInsurance?: number): Promise<TransactionInstruction>;
198
200
  /**
@@ -1774,6 +1774,24 @@ class AdminClient extends driftClient_1.DriftClient {
1774
1774
  },
1775
1775
  });
1776
1776
  }
1777
+ async updatePerpMarketProtectedMakerParams(perpMarketIndex, protectedMakerLimitPriceDivisor, protectedMakerDynamicDivisor) {
1778
+ const updatePerpMarketProtectedMakerParamsIx = await this.getUpdatePerpMarketProtectedMakerParamsIx(perpMarketIndex, protectedMakerLimitPriceDivisor || null, protectedMakerDynamicDivisor || null);
1779
+ const tx = await this.buildTransaction(updatePerpMarketProtectedMakerParamsIx);
1780
+ const { txSig } = await this.sendTransaction(tx, [], this.opts);
1781
+ return txSig;
1782
+ }
1783
+ async getUpdatePerpMarketProtectedMakerParamsIx(perpMarketIndex, protectedMakerLimitPriceDivisor, protectedMakerDynamicDivisor) {
1784
+ const perpMarketPublicKey = await (0, pda_1.getPerpMarketPublicKey)(this.program.programId, perpMarketIndex);
1785
+ return await this.program.instruction.updatePerpMarketProtectedMakerParams(protectedMakerLimitPriceDivisor || null, protectedMakerDynamicDivisor || null, {
1786
+ accounts: {
1787
+ admin: this.isSubscribed
1788
+ ? this.getStateAccount().admin
1789
+ : this.wallet.publicKey,
1790
+ state: await this.getStatePublicKey(),
1791
+ perpMarket: perpMarketPublicKey,
1792
+ },
1793
+ });
1794
+ }
1777
1795
  async initUserFuel(user, authority, fuelBonusDeposits, fuelBonusBorrows, fuelBonusTaker, fuelBonusMaker, fuelBonusInsurance) {
1778
1796
  const updatePerpMarketFuelIx = await this.getInitUserFuelIx(user, authority, fuelBonusDeposits, fuelBonusBorrows, fuelBonusTaker, fuelBonusMaker, fuelBonusInsurance);
1779
1797
  const tx = await this.buildTransaction(updatePerpMarketFuelIx);
@@ -1,7 +1,7 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { BN, DLOBNode, OraclePriceData, PerpMarketAccount } from '..';
3
3
  import { PublicKey } from '@solana/web3.js';
4
- type liquiditySource = 'serum' | 'vamm' | 'dlob' | 'phoenix' | 'openbook';
4
+ type liquiditySource = 'serum' | 'vamm' | 'dlob' | 'phoenix' | 'openbook' | 'indicative';
5
5
  export type L2Level = {
6
6
  price: BN;
7
7
  size: BN;
@@ -30,12 +30,6 @@ export type L3OrderBook = {
30
30
  slot?: number;
31
31
  };
32
32
  export declare const DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS: BN[];
33
- /**
34
- * Get an {@link Generator<L2Level>} generator from a {@link Generator<DLOBNode>}
35
- * @param dlobNodes e.g. {@link DLOB#getRestingLimitAsks} or {@link DLOB#getRestingLimitBids}
36
- * @param oraclePriceData
37
- * @param slot
38
- */
39
33
  export declare function getL2GeneratorFromDLOBNodes(dlobNodes: Generator<DLOBNode>, oraclePriceData: OraclePriceData, slot: number): Generator<L2Level>;
40
34
  export declare function mergeL2LevelGenerators(l2LevelGenerators: Generator<L2Level>[], compare: (a: L2Level, b: L2Level) => boolean): Generator<L2Level>;
41
35
  export declare function createL2Levels(generator: Generator<L2Level>, depth: number): L2Level[];
@@ -15,15 +15,18 @@ exports.DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS = [
15
15
  * @param oraclePriceData
16
16
  * @param slot
17
17
  */
18
+ const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
18
19
  function* getL2GeneratorFromDLOBNodes(dlobNodes, oraclePriceData, slot) {
19
20
  for (const dlobNode of dlobNodes) {
20
21
  const size = dlobNode.order.baseAssetAmount.sub(dlobNode.order.baseAssetAmountFilled);
21
22
  yield {
22
23
  size,
23
24
  price: dlobNode.getPrice(oraclePriceData, slot),
24
- sources: {
25
- dlob: size,
26
- },
25
+ sources: dlobNode.userAccount == INDICATIVE_QUOTES_PUBKEY
26
+ ? { indicative: size }
27
+ : {
28
+ dlob: size,
29
+ },
27
30
  };
28
31
  }
29
32
  }
@@ -128,4 +128,5 @@ export * from './util/TransactionConfirmationManager';
128
128
  export * from './clock/clockSubscriber';
129
129
  export * from './math/userStatus';
130
130
  export * from './constants/txConstants';
131
+ export * from './indicative-quotes/indicativeQuotesSender';
131
132
  export { BN, PublicKey, pyth };
@@ -151,3 +151,4 @@ __exportStar(require("./util/TransactionConfirmationManager"), exports);
151
151
  __exportStar(require("./clock/clockSubscriber"), exports);
152
152
  __exportStar(require("./math/userStatus"), exports);
153
153
  __exportStar(require("./constants/txConstants"), exports);
154
+ __exportStar(require("./indicative-quotes/indicativeQuotesSender"), exports);
@@ -0,0 +1,31 @@
1
+ /// <reference types="bn.js" />
2
+ import { Keypair } from '@solana/web3.js';
3
+ import { BN } from '..';
4
+ type Quote = {
5
+ bidPrice: BN;
6
+ askPrice: BN;
7
+ bidBaseAssetAmount: BN;
8
+ askBaseAssetAmount: BN;
9
+ marketIndex: number;
10
+ isOracleOffset?: boolean;
11
+ };
12
+ export declare class IndicativeQuotesSender {
13
+ private endpoint;
14
+ private keypair;
15
+ private heartbeatTimeout;
16
+ private sendQuotesInterval;
17
+ private readonly heartbeatIntervalMs;
18
+ private reconnectDelay;
19
+ private ws;
20
+ private driftClient;
21
+ private connected;
22
+ private quotes;
23
+ constructor(endpoint: string, keypair: Keypair);
24
+ generateChallengeResponse(nonce: string): string;
25
+ handleAuthMessage(message: any): void;
26
+ connect(): Promise<void>;
27
+ private startHeartbeatTimer;
28
+ setQuote(quote: Quote): void;
29
+ private reconnect;
30
+ }
31
+ export {};
@@ -0,0 +1,153 @@
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.IndicativeQuotesSender = void 0;
7
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
8
+ const tweetnacl_util_1 = require("tweetnacl-util");
9
+ const ws_1 = __importDefault(require("ws"));
10
+ const SEND_INTERVAL = 500;
11
+ class IndicativeQuotesSender {
12
+ constructor(endpoint, keypair) {
13
+ this.endpoint = endpoint;
14
+ this.keypair = keypair;
15
+ this.heartbeatTimeout = null;
16
+ this.sendQuotesInterval = null;
17
+ this.heartbeatIntervalMs = 60000;
18
+ this.reconnectDelay = 1000;
19
+ this.ws = null;
20
+ this.connected = false;
21
+ this.quotes = new Map();
22
+ }
23
+ generateChallengeResponse(nonce) {
24
+ const messageBytes = (0, tweetnacl_util_1.decodeUTF8)(nonce);
25
+ const signature = tweetnacl_1.default.sign.detached(messageBytes, this.keypair.secretKey);
26
+ const signatureBase64 = Buffer.from(signature).toString('base64');
27
+ return signatureBase64;
28
+ }
29
+ handleAuthMessage(message) {
30
+ var _a, _b;
31
+ if (message['channel'] === 'auth' && message['nonce'] != null) {
32
+ const signatureBase64 = this.generateChallengeResponse(message['nonce']);
33
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({
34
+ pubkey: this.keypair.publicKey.toBase58(),
35
+ signature: signatureBase64,
36
+ }));
37
+ }
38
+ if (message['channel'] === 'auth' &&
39
+ ((_b = message['message']) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'authenticated') {
40
+ this.connected = true;
41
+ }
42
+ }
43
+ async connect() {
44
+ const ws = new ws_1.default(this.endpoint + '?pubkey=' + this.keypair.publicKey.toBase58());
45
+ this.ws = ws;
46
+ ws.on('open', async () => {
47
+ console.log('Connected to the server');
48
+ this.reconnectDelay = 1000;
49
+ ws.on('message', async (data) => {
50
+ var _a;
51
+ let message;
52
+ try {
53
+ message = JSON.parse(data.toString());
54
+ }
55
+ catch (e) {
56
+ console.warn('Failed to parse json message: ', data.toString());
57
+ return;
58
+ }
59
+ this.startHeartbeatTimer();
60
+ if (message['channel'] === 'auth') {
61
+ this.handleAuthMessage(message);
62
+ }
63
+ if (message['channel'] === 'auth' &&
64
+ ((_a = message['message']) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'authenticated') {
65
+ this.sendQuotesInterval = setInterval(() => {
66
+ var _a;
67
+ if (this.connected) {
68
+ for (const [marketIndex, quote] of this.quotes.entries()) {
69
+ const message = {
70
+ market_type: 'perp',
71
+ market_index: marketIndex,
72
+ bid_price: quote.bidPrice.toString(),
73
+ ask_price: quote.askPrice.toString(),
74
+ bid_size: quote.bidBaseAssetAmount.toString(),
75
+ ask_size: quote.askBaseAssetAmount.toString(),
76
+ is_oracle_offset: quote.isOracleOffset,
77
+ };
78
+ try {
79
+ if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === ws_1.default.OPEN) {
80
+ this.ws.send(JSON.stringify(message));
81
+ }
82
+ }
83
+ catch (err) {
84
+ console.error('Error sending quote:', err);
85
+ }
86
+ }
87
+ }
88
+ }, SEND_INTERVAL);
89
+ }
90
+ });
91
+ ws.on('close', () => {
92
+ console.log('Disconnected from the server');
93
+ this.reconnect();
94
+ });
95
+ ws.on('error', (error) => {
96
+ console.error('WebSocket error:', error);
97
+ this.reconnect();
98
+ });
99
+ });
100
+ ws.on('unexpected-response', async (request, response) => {
101
+ console.error('Unexpected response, reconnecting in 5s:', response.statusCode);
102
+ setTimeout(() => {
103
+ if (this.heartbeatTimeout)
104
+ clearTimeout(this.heartbeatTimeout);
105
+ if (this.sendQuotesInterval)
106
+ clearInterval(this.sendQuotesInterval);
107
+ this.reconnect();
108
+ }, 5000);
109
+ });
110
+ ws.on('error', async (request, response) => {
111
+ console.error('WS closed from error, reconnecting in 1s:', response);
112
+ setTimeout(() => {
113
+ if (this.heartbeatTimeout)
114
+ clearTimeout(this.heartbeatTimeout);
115
+ if (this.sendQuotesInterval)
116
+ clearInterval(this.sendQuotesInterval);
117
+ this.reconnect();
118
+ }, 1000);
119
+ });
120
+ }
121
+ startHeartbeatTimer() {
122
+ if (this.heartbeatTimeout) {
123
+ clearTimeout(this.heartbeatTimeout);
124
+ }
125
+ this.heartbeatTimeout = setTimeout(() => {
126
+ console.warn('No heartbeat received within 30 seconds, reconnecting...');
127
+ this.reconnect();
128
+ }, this.heartbeatIntervalMs);
129
+ }
130
+ setQuote(quote) {
131
+ this.quotes.set(quote.marketIndex, quote);
132
+ }
133
+ reconnect() {
134
+ if (this.ws) {
135
+ this.ws.removeAllListeners();
136
+ this.ws.terminate();
137
+ }
138
+ if (this.heartbeatTimeout) {
139
+ clearTimeout(this.heartbeatTimeout);
140
+ this.heartbeatTimeout = null;
141
+ }
142
+ if (this.sendQuotesInterval) {
143
+ clearInterval(this.sendQuotesInterval);
144
+ this.sendQuotesInterval = null;
145
+ }
146
+ console.log(`Reconnecting to WebSocket in ${this.reconnectDelay / 1000} seconds...`);
147
+ setTimeout(() => {
148
+ this.connect();
149
+ this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);
150
+ }, this.reconnectDelay);
151
+ }
152
+ }
153
+ exports.IndicativeQuotesSender = IndicativeQuotesSender;
@@ -193,6 +193,8 @@ export declare class AdminClient extends DriftClient {
193
193
  getUpdateSpotMarketFuelIx(spotMarketIndex: number, fuelBoostDeposits?: number, fuelBoostBorrows?: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostInsurance?: number): Promise<TransactionInstruction>;
194
194
  updatePerpMarketFuel(perpMarketIndex: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostPosition?: number): Promise<TransactionSignature>;
195
195
  getUpdatePerpMarketFuelIx(perpMarketIndex: number, fuelBoostTaker?: number, fuelBoostMaker?: number, fuelBoostPosition?: number): Promise<TransactionInstruction>;
196
+ updatePerpMarketProtectedMakerParams(perpMarketIndex: number, protectedMakerLimitPriceDivisor?: number, protectedMakerDynamicDivisor?: number): Promise<TransactionSignature>;
197
+ getUpdatePerpMarketProtectedMakerParamsIx(perpMarketIndex: number, protectedMakerLimitPriceDivisor?: number, protectedMakerDynamicDivisor?: number): Promise<TransactionInstruction>;
196
198
  initUserFuel(user: PublicKey, authority: PublicKey, fuelBonusDeposits?: number, fuelBonusBorrows?: number, fuelBonusTaker?: number, fuelBonusMaker?: number, fuelBonusInsurance?: number): Promise<TransactionSignature>;
197
199
  getInitUserFuelIx(user: PublicKey, authority: PublicKey, fuelBonusDeposits?: number, fuelBonusBorrows?: number, fuelBonusTaker?: number, fuelBonusMaker?: number, fuelBonusInsurance?: number): Promise<TransactionInstruction>;
198
200
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"adminClient.d.ts","sourceRoot":"","sources":["../../src/adminClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adminClient.d.ts","sourceRoot":"","sources":["../../src/adminClient.ts"],"names":[],"mappings":"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"}
@@ -1774,6 +1774,24 @@ class AdminClient extends driftClient_1.DriftClient {
1774
1774
  },
1775
1775
  });
1776
1776
  }
1777
+ async updatePerpMarketProtectedMakerParams(perpMarketIndex, protectedMakerLimitPriceDivisor, protectedMakerDynamicDivisor) {
1778
+ const updatePerpMarketProtectedMakerParamsIx = await this.getUpdatePerpMarketProtectedMakerParamsIx(perpMarketIndex, protectedMakerLimitPriceDivisor || null, protectedMakerDynamicDivisor || null);
1779
+ const tx = await this.buildTransaction(updatePerpMarketProtectedMakerParamsIx);
1780
+ const { txSig } = await this.sendTransaction(tx, [], this.opts);
1781
+ return txSig;
1782
+ }
1783
+ async getUpdatePerpMarketProtectedMakerParamsIx(perpMarketIndex, protectedMakerLimitPriceDivisor, protectedMakerDynamicDivisor) {
1784
+ const perpMarketPublicKey = await (0, pda_1.getPerpMarketPublicKey)(this.program.programId, perpMarketIndex);
1785
+ return await this.program.instruction.updatePerpMarketProtectedMakerParams(protectedMakerLimitPriceDivisor || null, protectedMakerDynamicDivisor || null, {
1786
+ accounts: {
1787
+ admin: this.isSubscribed
1788
+ ? this.getStateAccount().admin
1789
+ : this.wallet.publicKey,
1790
+ state: await this.getStatePublicKey(),
1791
+ perpMarket: perpMarketPublicKey,
1792
+ },
1793
+ });
1794
+ }
1777
1795
  async initUserFuel(user, authority, fuelBonusDeposits, fuelBonusBorrows, fuelBonusTaker, fuelBonusMaker, fuelBonusInsurance) {
1778
1796
  const updatePerpMarketFuelIx = await this.getInitUserFuelIx(user, authority, fuelBonusDeposits, fuelBonusBorrows, fuelBonusTaker, fuelBonusMaker, fuelBonusInsurance);
1779
1797
  const tx = await this.buildTransaction(updatePerpMarketFuelIx);
@@ -1,7 +1,7 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { BN, DLOBNode, OraclePriceData, PerpMarketAccount } from '..';
3
3
  import { PublicKey } from '@solana/web3.js';
4
- type liquiditySource = 'serum' | 'vamm' | 'dlob' | 'phoenix' | 'openbook';
4
+ type liquiditySource = 'serum' | 'vamm' | 'dlob' | 'phoenix' | 'openbook' | 'indicative';
5
5
  export type L2Level = {
6
6
  price: BN;
7
7
  size: BN;
@@ -30,12 +30,6 @@ export type L3OrderBook = {
30
30
  slot?: number;
31
31
  };
32
32
  export declare const DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS: BN[];
33
- /**
34
- * Get an {@link Generator<L2Level>} generator from a {@link Generator<DLOBNode>}
35
- * @param dlobNodes e.g. {@link DLOB#getRestingLimitAsks} or {@link DLOB#getRestingLimitBids}
36
- * @param oraclePriceData
37
- * @param slot
38
- */
39
33
  export declare function getL2GeneratorFromDLOBNodes(dlobNodes: Generator<DLOBNode>, oraclePriceData: OraclePriceData, slot: number): Generator<L2Level>;
40
34
  export declare function mergeL2LevelGenerators(l2LevelGenerators: Generator<L2Level>[], compare: (a: L2Level, b: L2Level) => boolean): Generator<L2Level>;
41
35
  export declare function createL2Levels(generator: Generator<L2Level>, depth: number): L2Level[];
@@ -1 +1 @@
1
- {"version":3,"file":"orderBookLevels.d.ts","sourceRoot":"","sources":["../../../src/dlob/orderBookLevels.ts"],"names":[],"mappings":";AAAA,OAAO,EAEN,EAAE,EAMF,QAAQ,EAGR,eAAe,EACf,iBAAiB,EAOjB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,KAAK,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE1E,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,EAAE,CAAC;IACV,IAAI,EAAE,EAAE,CAAC;IACT,OAAO,EAAE;SAAG,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,EAAE;KAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACpC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,EAAE,CAAC;IACV,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,iCAAiC,MAK7C,CAAC;AAEF;;;;;GAKG;AACH,wBAAiB,2BAA2B,CAC3C,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC9B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,GACV,SAAS,CAAC,OAAO,CAAC,CAapB;AAED,wBAAiB,sBAAsB,CACtC,iBAAiB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EACvC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,OAAO,GAC1C,SAAS,CAAC,OAAO,CAAC,CA+BpB;AAED,wBAAgB,cAAc,CAC7B,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,GACX,OAAO,EAAE,CAsBX;AAED,wBAAgB,kBAAkB,CAAC,EAClC,aAAa,EACb,eAAe,EACf,SAAS,EACT,GAAG,EACH,qBAAqB,GACrB,EAAE;IACF,aAAa,EAAE,iBAAiB,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,EAAE,CAAC;IACT,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;CAC7B,GAAG,oBAAoB,CAoNvB;AAED,wBAAgB,OAAO,CACtB,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,EAAE,EACZ,KAAK,EAAE,MAAM,GACX,WAAW,CAMb;AAiFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CACxB,IAAI,EAAE,OAAO,EAAE,EACf,IAAI,EAAE,OAAO,EAAE,EACf,WAAW,EAAE,EAAE,EACf,cAAc,EAAE,EAAE,EAClB,YAAY,EAAE,EAAE,EAChB,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GACnB;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAoJtC"}
1
+ {"version":3,"file":"orderBookLevels.d.ts","sourceRoot":"","sources":["../../../src/dlob/orderBookLevels.ts"],"names":[],"mappings":";AAAA,OAAO,EAEN,EAAE,EAMF,QAAQ,EAGR,eAAe,EACf,iBAAiB,EAOjB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,KAAK,eAAe,GACjB,OAAO,GACP,MAAM,GACN,MAAM,GACN,SAAS,GACT,UAAU,GACV,YAAY,CAAC;AAEhB,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,EAAE,CAAC;IACV,IAAI,EAAE,EAAE,CAAC;IACT,OAAO,EAAE;SAAG,GAAG,IAAI,eAAe,CAAC,CAAC,EAAE,EAAE;KAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACpC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;IAChC,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,OAAO,GAAG;IACrB,KAAK,EAAE,EAAE,CAAC;IACV,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,iCAAiC,MAK7C,CAAC;AASF,wBAAiB,2BAA2B,CAC3C,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAC9B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,MAAM,GACV,SAAS,CAAC,OAAO,CAAC,CAgBpB;AAED,wBAAiB,sBAAsB,CACtC,iBAAiB,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EACvC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,OAAO,GAC1C,SAAS,CAAC,OAAO,CAAC,CA+BpB;AAED,wBAAgB,cAAc,CAC7B,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,GACX,OAAO,EAAE,CAsBX;AAED,wBAAgB,kBAAkB,CAAC,EAClC,aAAa,EACb,eAAe,EACf,SAAS,EACT,GAAG,EACH,qBAAqB,GACrB,EAAE;IACF,aAAa,EAAE,iBAAiB,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,EAAE,CAAC;IACT,qBAAqB,CAAC,EAAE,EAAE,EAAE,CAAC;CAC7B,GAAG,oBAAoB,CAoNvB;AAED,wBAAgB,OAAO,CACtB,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,EAAE,EACZ,KAAK,EAAE,MAAM,GACX,WAAW,CAMb;AAiFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CACxB,IAAI,EAAE,OAAO,EAAE,EACf,IAAI,EAAE,OAAO,EAAE,EACf,WAAW,EAAE,EAAE,EACf,cAAc,EAAE,EAAE,EAClB,YAAY,EAAE,EAAE,EAChB,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GACnB;IAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAoJtC"}
@@ -15,15 +15,18 @@ exports.DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS = [
15
15
  * @param oraclePriceData
16
16
  * @param slot
17
17
  */
18
+ const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
18
19
  function* getL2GeneratorFromDLOBNodes(dlobNodes, oraclePriceData, slot) {
19
20
  for (const dlobNode of dlobNodes) {
20
21
  const size = dlobNode.order.baseAssetAmount.sub(dlobNode.order.baseAssetAmountFilled);
21
22
  yield {
22
23
  size,
23
24
  price: dlobNode.getPrice(oraclePriceData, slot),
24
- sources: {
25
- dlob: size,
26
- },
25
+ sources: dlobNode.userAccount == INDICATIVE_QUOTES_PUBKEY
26
+ ? { indicative: size }
27
+ : {
28
+ dlob: size,
29
+ },
27
30
  };
28
31
  }
29
32
  }
@@ -128,5 +128,6 @@ export * from './util/TransactionConfirmationManager';
128
128
  export * from './clock/clockSubscriber';
129
129
  export * from './math/userStatus';
130
130
  export * from './constants/txConstants';
131
+ export * from './indicative-quotes/indicativeQuotesSender';
131
132
  export { BN, PublicKey, pyth };
132
133
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -151,3 +151,4 @@ __exportStar(require("./util/TransactionConfirmationManager"), exports);
151
151
  __exportStar(require("./clock/clockSubscriber"), exports);
152
152
  __exportStar(require("./math/userStatus"), exports);
153
153
  __exportStar(require("./constants/txConstants"), exports);
154
+ __exportStar(require("./indicative-quotes/indicativeQuotesSender"), exports);
@@ -0,0 +1,32 @@
1
+ /// <reference types="bn.js" />
2
+ import { Keypair } from '@solana/web3.js';
3
+ import { BN } from '..';
4
+ type Quote = {
5
+ bidPrice: BN;
6
+ askPrice: BN;
7
+ bidBaseAssetAmount: BN;
8
+ askBaseAssetAmount: BN;
9
+ marketIndex: number;
10
+ isOracleOffset?: boolean;
11
+ };
12
+ export declare class IndicativeQuotesSender {
13
+ private endpoint;
14
+ private keypair;
15
+ private heartbeatTimeout;
16
+ private sendQuotesInterval;
17
+ private readonly heartbeatIntervalMs;
18
+ private reconnectDelay;
19
+ private ws;
20
+ private driftClient;
21
+ private connected;
22
+ private quotes;
23
+ constructor(endpoint: string, keypair: Keypair);
24
+ generateChallengeResponse(nonce: string): string;
25
+ handleAuthMessage(message: any): void;
26
+ connect(): Promise<void>;
27
+ private startHeartbeatTimer;
28
+ setQuote(quote: Quote): void;
29
+ private reconnect;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=indicativeQuotesSender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indicativeQuotesSender.d.ts","sourceRoot":"","sources":["../../../src/indicative-quotes/indicativeQuotesSender.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAe,MAAM,IAAI,CAAC;AAOrC,KAAK,KAAK,GAAG;IACZ,QAAQ,EAAE,EAAE,CAAC;IACb,QAAQ,EAAE,EAAE,CAAC;IACb,kBAAkB,EAAE,EAAE,CAAC;IACvB,kBAAkB,EAAE,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,qBAAa,sBAAsB;IAajC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IAbhB,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,kBAAkB,CAA+B;IAEzD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO,CAAC,MAAM,CAAiC;gBAGtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO;IAGzB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAOhD,iBAAiB,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAmB/B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqF9B,OAAO,CAAC,mBAAmB;IAU3B,QAAQ,CAAC,KAAK,EAAE,KAAK;IAIrB,OAAO,CAAC,SAAS;CAuBjB"}
@@ -0,0 +1,153 @@
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.IndicativeQuotesSender = void 0;
7
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
8
+ const tweetnacl_util_1 = require("tweetnacl-util");
9
+ const ws_1 = __importDefault(require("ws"));
10
+ const SEND_INTERVAL = 500;
11
+ class IndicativeQuotesSender {
12
+ constructor(endpoint, keypair) {
13
+ this.endpoint = endpoint;
14
+ this.keypair = keypair;
15
+ this.heartbeatTimeout = null;
16
+ this.sendQuotesInterval = null;
17
+ this.heartbeatIntervalMs = 60000;
18
+ this.reconnectDelay = 1000;
19
+ this.ws = null;
20
+ this.connected = false;
21
+ this.quotes = new Map();
22
+ }
23
+ generateChallengeResponse(nonce) {
24
+ const messageBytes = (0, tweetnacl_util_1.decodeUTF8)(nonce);
25
+ const signature = tweetnacl_1.default.sign.detached(messageBytes, this.keypair.secretKey);
26
+ const signatureBase64 = Buffer.from(signature).toString('base64');
27
+ return signatureBase64;
28
+ }
29
+ handleAuthMessage(message) {
30
+ var _a, _b;
31
+ if (message['channel'] === 'auth' && message['nonce'] != null) {
32
+ const signatureBase64 = this.generateChallengeResponse(message['nonce']);
33
+ (_a = this.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify({
34
+ pubkey: this.keypair.publicKey.toBase58(),
35
+ signature: signatureBase64,
36
+ }));
37
+ }
38
+ if (message['channel'] === 'auth' &&
39
+ ((_b = message['message']) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'authenticated') {
40
+ this.connected = true;
41
+ }
42
+ }
43
+ async connect() {
44
+ const ws = new ws_1.default(this.endpoint + '?pubkey=' + this.keypair.publicKey.toBase58());
45
+ this.ws = ws;
46
+ ws.on('open', async () => {
47
+ console.log('Connected to the server');
48
+ this.reconnectDelay = 1000;
49
+ ws.on('message', async (data) => {
50
+ var _a;
51
+ let message;
52
+ try {
53
+ message = JSON.parse(data.toString());
54
+ }
55
+ catch (e) {
56
+ console.warn('Failed to parse json message: ', data.toString());
57
+ return;
58
+ }
59
+ this.startHeartbeatTimer();
60
+ if (message['channel'] === 'auth') {
61
+ this.handleAuthMessage(message);
62
+ }
63
+ if (message['channel'] === 'auth' &&
64
+ ((_a = message['message']) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'authenticated') {
65
+ this.sendQuotesInterval = setInterval(() => {
66
+ var _a;
67
+ if (this.connected) {
68
+ for (const [marketIndex, quote] of this.quotes.entries()) {
69
+ const message = {
70
+ market_type: 'perp',
71
+ market_index: marketIndex,
72
+ bid_price: quote.bidPrice.toString(),
73
+ ask_price: quote.askPrice.toString(),
74
+ bid_size: quote.bidBaseAssetAmount.toString(),
75
+ ask_size: quote.askBaseAssetAmount.toString(),
76
+ is_oracle_offset: quote.isOracleOffset,
77
+ };
78
+ try {
79
+ if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === ws_1.default.OPEN) {
80
+ this.ws.send(JSON.stringify(message));
81
+ }
82
+ }
83
+ catch (err) {
84
+ console.error('Error sending quote:', err);
85
+ }
86
+ }
87
+ }
88
+ }, SEND_INTERVAL);
89
+ }
90
+ });
91
+ ws.on('close', () => {
92
+ console.log('Disconnected from the server');
93
+ this.reconnect();
94
+ });
95
+ ws.on('error', (error) => {
96
+ console.error('WebSocket error:', error);
97
+ this.reconnect();
98
+ });
99
+ });
100
+ ws.on('unexpected-response', async (request, response) => {
101
+ console.error('Unexpected response, reconnecting in 5s:', response.statusCode);
102
+ setTimeout(() => {
103
+ if (this.heartbeatTimeout)
104
+ clearTimeout(this.heartbeatTimeout);
105
+ if (this.sendQuotesInterval)
106
+ clearInterval(this.sendQuotesInterval);
107
+ this.reconnect();
108
+ }, 5000);
109
+ });
110
+ ws.on('error', async (request, response) => {
111
+ console.error('WS closed from error, reconnecting in 1s:', response);
112
+ setTimeout(() => {
113
+ if (this.heartbeatTimeout)
114
+ clearTimeout(this.heartbeatTimeout);
115
+ if (this.sendQuotesInterval)
116
+ clearInterval(this.sendQuotesInterval);
117
+ this.reconnect();
118
+ }, 1000);
119
+ });
120
+ }
121
+ startHeartbeatTimer() {
122
+ if (this.heartbeatTimeout) {
123
+ clearTimeout(this.heartbeatTimeout);
124
+ }
125
+ this.heartbeatTimeout = setTimeout(() => {
126
+ console.warn('No heartbeat received within 30 seconds, reconnecting...');
127
+ this.reconnect();
128
+ }, this.heartbeatIntervalMs);
129
+ }
130
+ setQuote(quote) {
131
+ this.quotes.set(quote.marketIndex, quote);
132
+ }
133
+ reconnect() {
134
+ if (this.ws) {
135
+ this.ws.removeAllListeners();
136
+ this.ws.terminate();
137
+ }
138
+ if (this.heartbeatTimeout) {
139
+ clearTimeout(this.heartbeatTimeout);
140
+ this.heartbeatTimeout = null;
141
+ }
142
+ if (this.sendQuotesInterval) {
143
+ clearInterval(this.sendQuotesInterval);
144
+ this.sendQuotesInterval = null;
145
+ }
146
+ console.log(`Reconnecting to WebSocket in ${this.reconnectDelay / 1000} seconds...`);
147
+ setTimeout(() => {
148
+ this.connect();
149
+ this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);
150
+ }, this.reconnectDelay);
151
+ }
152
+ }
153
+ exports.IndicativeQuotesSender = IndicativeQuotesSender;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk-browser",
3
- "version": "2.119.0-beta.1",
3
+ "version": "2.119.0-beta.3",
4
4
  "main": "lib/node/index.js",
5
5
  "types": "lib/node/index.d.ts",
6
6
  "browser": "./lib/browser/index.js",
@@ -3858,6 +3858,51 @@ export class AdminClient extends DriftClient {
3858
3858
  );
3859
3859
  }
3860
3860
 
3861
+ public async updatePerpMarketProtectedMakerParams(
3862
+ perpMarketIndex: number,
3863
+ protectedMakerLimitPriceDivisor?: number,
3864
+ protectedMakerDynamicDivisor?: number
3865
+ ): Promise<TransactionSignature> {
3866
+ const updatePerpMarketProtectedMakerParamsIx =
3867
+ await this.getUpdatePerpMarketProtectedMakerParamsIx(
3868
+ perpMarketIndex,
3869
+ protectedMakerLimitPriceDivisor || null,
3870
+ protectedMakerDynamicDivisor || null
3871
+ );
3872
+
3873
+ const tx = await this.buildTransaction(
3874
+ updatePerpMarketProtectedMakerParamsIx
3875
+ );
3876
+ const { txSig } = await this.sendTransaction(tx, [], this.opts);
3877
+
3878
+ return txSig;
3879
+ }
3880
+
3881
+ public async getUpdatePerpMarketProtectedMakerParamsIx(
3882
+ perpMarketIndex: number,
3883
+ protectedMakerLimitPriceDivisor?: number,
3884
+ protectedMakerDynamicDivisor?: number
3885
+ ): Promise<TransactionInstruction> {
3886
+ const perpMarketPublicKey = await getPerpMarketPublicKey(
3887
+ this.program.programId,
3888
+ perpMarketIndex
3889
+ );
3890
+
3891
+ return await this.program.instruction.updatePerpMarketProtectedMakerParams(
3892
+ protectedMakerLimitPriceDivisor || null,
3893
+ protectedMakerDynamicDivisor || null,
3894
+ {
3895
+ accounts: {
3896
+ admin: this.isSubscribed
3897
+ ? this.getStateAccount().admin
3898
+ : this.wallet.publicKey,
3899
+ state: await this.getStatePublicKey(),
3900
+ perpMarket: perpMarketPublicKey,
3901
+ },
3902
+ }
3903
+ );
3904
+ }
3905
+
3861
3906
  public async initUserFuel(
3862
3907
  user: PublicKey,
3863
3908
  authority: PublicKey,
@@ -21,7 +21,13 @@ import {
21
21
  import { PublicKey } from '@solana/web3.js';
22
22
  import { assert } from '../assert/assert';
23
23
 
24
- type liquiditySource = 'serum' | 'vamm' | 'dlob' | 'phoenix' | 'openbook';
24
+ type liquiditySource =
25
+ | 'serum'
26
+ | 'vamm'
27
+ | 'dlob'
28
+ | 'phoenix'
29
+ | 'openbook'
30
+ | 'indicative';
25
31
 
26
32
  export type L2Level = {
27
33
  price: BN;
@@ -66,6 +72,7 @@ export const DEFAULT_TOP_OF_BOOK_QUOTE_AMOUNTS = [
66
72
  * @param oraclePriceData
67
73
  * @param slot
68
74
  */
75
+ const INDICATIVE_QUOTES_PUBKEY = 'inDNdu3ML4vG5LNExqcwuCQtLcCU8KfK5YM2qYV3JJz';
69
76
  export function* getL2GeneratorFromDLOBNodes(
70
77
  dlobNodes: Generator<DLOBNode>,
71
78
  oraclePriceData: OraclePriceData,
@@ -78,9 +85,12 @@ export function* getL2GeneratorFromDLOBNodes(
78
85
  yield {
79
86
  size,
80
87
  price: dlobNode.getPrice(oraclePriceData, slot),
81
- sources: {
82
- dlob: size,
83
- },
88
+ sources:
89
+ dlobNode.userAccount == INDICATIVE_QUOTES_PUBKEY
90
+ ? { indicative: size }
91
+ : {
92
+ dlob: size,
93
+ },
84
94
  };
85
95
  }
86
96
  }
package/src/index.ts CHANGED
@@ -129,5 +129,6 @@ export * from './util/TransactionConfirmationManager';
129
129
  export * from './clock/clockSubscriber';
130
130
  export * from './math/userStatus';
131
131
  export * from './constants/txConstants';
132
+ export * from './indicative-quotes/indicativeQuotesSender';
132
133
 
133
134
  export { BN, PublicKey, pyth };
@@ -0,0 +1,183 @@
1
+ import { Keypair } from '@solana/web3.js';
2
+ import { BN, DriftClient } from '..';
3
+ import nacl from 'tweetnacl';
4
+ import { decodeUTF8 } from 'tweetnacl-util';
5
+ import WebSocket from 'ws';
6
+
7
+ const SEND_INTERVAL = 500;
8
+
9
+ type Quote = {
10
+ bidPrice: BN;
11
+ askPrice: BN;
12
+ bidBaseAssetAmount: BN;
13
+ askBaseAssetAmount: BN;
14
+ marketIndex: number;
15
+ isOracleOffset?: boolean;
16
+ };
17
+
18
+ export class IndicativeQuotesSender {
19
+ private heartbeatTimeout: NodeJS.Timeout | null = null;
20
+ private sendQuotesInterval: NodeJS.Timeout | null = null;
21
+
22
+ private readonly heartbeatIntervalMs = 60000;
23
+ private reconnectDelay = 1000;
24
+ private ws: WebSocket | null = null;
25
+ private driftClient: DriftClient;
26
+ private connected = false;
27
+
28
+ private quotes: Map<number, Quote> = new Map();
29
+
30
+ constructor(
31
+ private endpoint: string,
32
+ private keypair: Keypair
33
+ ) {}
34
+
35
+ generateChallengeResponse(nonce: string): string {
36
+ const messageBytes = decodeUTF8(nonce);
37
+ const signature = nacl.sign.detached(messageBytes, this.keypair.secretKey);
38
+ const signatureBase64 = Buffer.from(signature).toString('base64');
39
+ return signatureBase64;
40
+ }
41
+
42
+ handleAuthMessage(message: any): void {
43
+ if (message['channel'] === 'auth' && message['nonce'] != null) {
44
+ const signatureBase64 = this.generateChallengeResponse(message['nonce']);
45
+ this.ws?.send(
46
+ JSON.stringify({
47
+ pubkey: this.keypair.publicKey.toBase58(),
48
+ signature: signatureBase64,
49
+ })
50
+ );
51
+ }
52
+
53
+ if (
54
+ message['channel'] === 'auth' &&
55
+ message['message']?.toLowerCase() === 'authenticated'
56
+ ) {
57
+ this.connected = true;
58
+ }
59
+ }
60
+
61
+ async connect(): Promise<void> {
62
+ const ws = new WebSocket(
63
+ this.endpoint + '?pubkey=' + this.keypair.publicKey.toBase58()
64
+ );
65
+ this.ws = ws;
66
+ ws.on('open', async () => {
67
+ console.log('Connected to the server');
68
+ this.reconnectDelay = 1000;
69
+
70
+ ws.on('message', async (data: WebSocket.Data) => {
71
+ let message: string;
72
+ try {
73
+ message = JSON.parse(data.toString());
74
+ } catch (e) {
75
+ console.warn('Failed to parse json message: ', data.toString());
76
+ return;
77
+ }
78
+ this.startHeartbeatTimer();
79
+
80
+ if (message['channel'] === 'auth') {
81
+ this.handleAuthMessage(message);
82
+ }
83
+
84
+ if (
85
+ message['channel'] === 'auth' &&
86
+ message['message']?.toLowerCase() === 'authenticated'
87
+ ) {
88
+ this.sendQuotesInterval = setInterval(() => {
89
+ if (this.connected) {
90
+ for (const [marketIndex, quote] of this.quotes.entries()) {
91
+ const message = {
92
+ market_type: 'perp',
93
+ market_index: marketIndex,
94
+ bid_price: quote.bidPrice.toString(),
95
+ ask_price: quote.askPrice.toString(),
96
+ bid_size: quote.bidBaseAssetAmount.toString(),
97
+ ask_size: quote.askBaseAssetAmount.toString(),
98
+ is_oracle_offset: quote.isOracleOffset,
99
+ };
100
+ try {
101
+ if (this.ws?.readyState === WebSocket.OPEN) {
102
+ this.ws.send(JSON.stringify(message));
103
+ }
104
+ } catch (err) {
105
+ console.error('Error sending quote:', err);
106
+ }
107
+ }
108
+ }
109
+ }, SEND_INTERVAL);
110
+ }
111
+ });
112
+
113
+ ws.on('close', () => {
114
+ console.log('Disconnected from the server');
115
+ this.reconnect();
116
+ });
117
+
118
+ ws.on('error', (error: Error) => {
119
+ console.error('WebSocket error:', error);
120
+ this.reconnect();
121
+ });
122
+ });
123
+
124
+ ws.on('unexpected-response', async (request, response) => {
125
+ console.error(
126
+ 'Unexpected response, reconnecting in 5s:',
127
+ response.statusCode
128
+ );
129
+ setTimeout(() => {
130
+ if (this.heartbeatTimeout) clearTimeout(this.heartbeatTimeout);
131
+ if (this.sendQuotesInterval) clearInterval(this.sendQuotesInterval);
132
+ this.reconnect();
133
+ }, 5000);
134
+ });
135
+
136
+ ws.on('error', async (request, response) => {
137
+ console.error('WS closed from error, reconnecting in 1s:', response);
138
+ setTimeout(() => {
139
+ if (this.heartbeatTimeout) clearTimeout(this.heartbeatTimeout);
140
+ if (this.sendQuotesInterval) clearInterval(this.sendQuotesInterval);
141
+ this.reconnect();
142
+ }, 1000);
143
+ });
144
+ }
145
+
146
+ private startHeartbeatTimer() {
147
+ if (this.heartbeatTimeout) {
148
+ clearTimeout(this.heartbeatTimeout);
149
+ }
150
+ this.heartbeatTimeout = setTimeout(() => {
151
+ console.warn('No heartbeat received within 30 seconds, reconnecting...');
152
+ this.reconnect();
153
+ }, this.heartbeatIntervalMs);
154
+ }
155
+
156
+ setQuote(quote: Quote) {
157
+ this.quotes.set(quote.marketIndex, quote);
158
+ }
159
+
160
+ private reconnect() {
161
+ if (this.ws) {
162
+ this.ws.removeAllListeners();
163
+ this.ws.terminate();
164
+ }
165
+
166
+ if (this.heartbeatTimeout) {
167
+ clearTimeout(this.heartbeatTimeout);
168
+ this.heartbeatTimeout = null;
169
+ }
170
+ if (this.sendQuotesInterval) {
171
+ clearInterval(this.sendQuotesInterval);
172
+ this.sendQuotesInterval = null;
173
+ }
174
+
175
+ console.log(
176
+ `Reconnecting to WebSocket in ${this.reconnectDelay / 1000} seconds...`
177
+ );
178
+ setTimeout(() => {
179
+ this.connect();
180
+ this.reconnectDelay = Math.min(this.reconnectDelay * 2, 30000);
181
+ }, this.reconnectDelay);
182
+ }
183
+ }