@drift-labs/sdk 2.146.0-beta.0 → 2.146.0-beta.2

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.
@@ -84,6 +84,11 @@ export function decodeUser(buffer: Buffer): UserAccount {
84
84
  const quoteAssetAmount = readSignedBigInt64LE(buffer, offset + 16);
85
85
  const lpShares = readUnsignedBigInt64LE(buffer, offset + 64);
86
86
  const openOrders = buffer.readUInt8(offset + 94);
87
+ const positionFlag = buffer.readUInt8(offset + 95);
88
+ const isolatedPositionScaledBalance = readUnsignedBigInt64LE(
89
+ buffer,
90
+ offset + 96
91
+ );
87
92
 
88
93
  if (
89
94
  baseAssetAmount.eq(ZERO) &&
@@ -135,6 +140,8 @@ export function decodeUser(buffer: Buffer): UserAccount {
135
140
  openOrders,
136
141
  perLpBase,
137
142
  maxMarginRatio,
143
+ isolatedPositionScaledBalance,
144
+ positionFlag,
138
145
  });
139
146
  }
140
147
 
@@ -406,6 +406,8 @@ export class DriftClient {
406
406
  resubTimeoutMs: config.accountSubscription?.resubTimeoutMs,
407
407
  logResubMessages: config.accountSubscription?.logResubMessages,
408
408
  commitment: config.accountSubscription?.commitment,
409
+ programUserAccountSubscriber:
410
+ config.accountSubscription?.programUserAccountSubscriber,
409
411
  };
410
412
  this.userStatsAccountSubscriptionConfig = {
411
413
  type: 'websocket',
@@ -474,7 +476,10 @@ export class DriftClient {
474
476
  }
475
477
  );
476
478
  } else {
477
- this.accountSubscriber = new WebSocketDriftClientAccountSubscriber(
479
+ const accountSubscriberClass =
480
+ config.accountSubscription?.driftClientAccountSubscriber ??
481
+ WebSocketDriftClientAccountSubscriber;
482
+ this.accountSubscriber = new accountSubscriberClass(
478
483
  this.program,
479
484
  config.perpMarketIndexes ?? [],
480
485
  config.spotMarketIndexes ?? [],
@@ -485,9 +490,7 @@ export class DriftClient {
485
490
  resubTimeoutMs: config.accountSubscription?.resubTimeoutMs,
486
491
  logResubMessages: config.accountSubscription?.logResubMessages,
487
492
  },
488
- config.accountSubscription?.commitment,
489
- config.accountSubscription?.perpMarketAccountSubscriber,
490
- config.accountSubscription?.oracleAccountSubscriber
493
+ config.accountSubscription?.commitment
491
494
  );
492
495
  }
493
496
  this.eventEmitter = this.accountSubscriber.eventEmitter;
@@ -5,7 +5,7 @@ import {
5
5
  PublicKey,
6
6
  TransactionVersion,
7
7
  } from '@solana/web3.js';
8
- import { IWallet, TxParams } from './types';
8
+ import { IWallet, TxParams, UserAccount } from './types';
9
9
  import { OracleInfo } from './oracles/types';
10
10
  import { BulkAccountLoader } from './accounts/bulkAccountLoader';
11
11
  import { DriftEnv } from './config';
@@ -22,6 +22,9 @@ import { WebSocketAccountSubscriberV2 } from './accounts/webSocketAccountSubscri
22
22
  import { grpcDriftClientAccountSubscriberV2 } from './accounts/grpcDriftClientAccountSubscriberV2';
23
23
  import { grpcDriftClientAccountSubscriber } from './accounts/grpcDriftClientAccountSubscriber';
24
24
  import { grpcMultiUserAccountSubscriber } from './accounts/grpcMultiUserAccountSubscriber';
25
+ import { WebSocketProgramAccountSubscriber } from './accounts/webSocketProgramAccountSubscriber';
26
+ import { WebSocketDriftClientAccountSubscriber } from './accounts/webSocketDriftClientAccountSubscriber';
27
+ import { WebSocketDriftClientAccountSubscriberV2 } from './accounts/webSocketDriftClientAccountSubscriberV2';
25
28
 
26
29
  export type DriftClientConfig = {
27
30
  connection: Connection;
@@ -78,6 +81,7 @@ export type DriftClientSubscriptionConfig =
78
81
  resubTimeoutMs?: number;
79
82
  logResubMessages?: boolean;
80
83
  commitment?: Commitment;
84
+ programUserAccountSubscriber?: WebSocketProgramAccountSubscriber<UserAccount>;
81
85
  perpMarketAccountSubscriber?: new (
82
86
  accountName: string,
83
87
  program: Program,
@@ -86,14 +90,17 @@ export type DriftClientSubscriptionConfig =
86
90
  resubOpts?: ResubOpts,
87
91
  commitment?: Commitment
88
92
  ) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>;
89
- oracleAccountSubscriber?: new (
90
- accountName: string,
93
+ /** If you use V2 here, whatever you pass for perpMarketAccountSubscriber will be ignored and it will use v2 under the hood regardless */
94
+ driftClientAccountSubscriber?: new (
91
95
  program: Program,
92
- accountPublicKey: PublicKey,
93
- decodeBuffer?: (buffer: Buffer) => any,
94
- resubOpts?: ResubOpts,
95
- commitment?: Commitment
96
- ) => WebSocketAccountSubscriberV2<any> | WebSocketAccountSubscriber<any>;
96
+ perpMarketIndexes: number[],
97
+ spotMarketIndexes: number[],
98
+ oracleInfos: OracleInfo[],
99
+ shouldFindAllMarketsAndOracles: boolean,
100
+ delistedMarketSetting: DelistedMarketSetting
101
+ ) =>
102
+ | WebSocketDriftClientAccountSubscriber
103
+ | WebSocketDriftClientAccountSubscriberV2;
97
104
  }
98
105
  | {
99
106
  type: 'polling';
package/src/index.ts CHANGED
@@ -12,6 +12,10 @@ export * from './accounts/webSocketDriftClientAccountSubscriber';
12
12
  export * from './accounts/webSocketInsuranceFundStakeAccountSubscriber';
13
13
  export * from './accounts/webSocketHighLeverageModeConfigAccountSubscriber';
14
14
  export { WebSocketAccountSubscriberV2 } from './accounts/webSocketAccountSubscriberV2';
15
+ export { WebSocketProgramAccountSubscriber } from './accounts/webSocketProgramAccountSubscriber';
16
+ export { WebSocketProgramUserAccountSubscriber } from './accounts/websocketProgramUserAccountSubscriber';
17
+ export { WebSocketProgramAccountsSubscriberV2 } from './accounts/webSocketProgramAccountsSubscriberV2';
18
+ export { WebSocketDriftClientAccountSubscriberV2 } from './accounts/webSocketDriftClientAccountSubscriberV2';
15
19
  export * from './accounts/bulkAccountLoader';
16
20
  export * from './accounts/bulkUserSubscription';
17
21
  export * from './accounts/bulkUserStatsSubscription';
package/src/types.ts CHANGED
@@ -1136,6 +1136,8 @@ export type PerpPosition = {
1136
1136
  lastBaseAssetAmountPerLp: BN;
1137
1137
  lastQuoteAssetAmountPerLp: BN;
1138
1138
  perLpBase: number;
1139
+ isolatedPositionScaledBalance: BN;
1140
+ positionFlag: number;
1139
1141
  };
1140
1142
 
1141
1143
  export type UserStatsAccount = {
package/src/user.ts CHANGED
@@ -338,6 +338,8 @@ export class User {
338
338
  lastQuoteAssetAmountPerLp: ZERO,
339
339
  perLpBase: 0,
340
340
  maxMarginRatio: 0,
341
+ isolatedPositionScaledBalance: ZERO,
342
+ positionFlag: 0,
341
343
  };
342
344
  }
343
345