@drift-labs/sdk 2.37.1-beta.4 → 2.37.1-beta.5

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.37.1-beta.4
1
+ 2.37.1-beta.5
@@ -144,6 +144,16 @@ exports.DevnetPerpMarkets = [
144
144
  launchTs: 1689270550000,
145
145
  oracleSource: __1.OracleSource.PYTH,
146
146
  },
147
+ {
148
+ fullName: 'HNT',
149
+ category: ['IoT'],
150
+ symbol: 'HNT-PERP',
151
+ baseAssetSymbol: 'HNT',
152
+ marketIndex: 14,
153
+ oracle: new web3_js_1.PublicKey('6Eg8YdfFJQF2HHonzPUBSCCmyUEhrStg9VBLK957sBe6'),
154
+ launchTs: 16922949550000,
155
+ oracleSource: __1.OracleSource.PYTH,
156
+ },
147
157
  ];
148
158
  exports.MainnetPerpMarkets = [
149
159
  {
@@ -286,6 +296,16 @@ exports.MainnetPerpMarkets = [
286
296
  launchTs: 1689270550000,
287
297
  oracleSource: __1.OracleSource.PYTH,
288
298
  },
299
+ {
300
+ fullName: 'HNT',
301
+ category: ['IoT'],
302
+ symbol: 'HNT-PERP',
303
+ baseAssetSymbol: 'HNT',
304
+ marketIndex: 14,
305
+ oracle: new web3_js_1.PublicKey('7moA1i5vQUpfDwSpK6Pw9s56ahB7WFGidtbL2ujWrVvm'),
306
+ launchTs: 16922949550000,
307
+ oracleSource: __1.OracleSource.PYTH,
308
+ },
289
309
  ];
290
310
  exports.PerpMarkets = {
291
311
  devnet: exports.DevnetPerpMarkets,
@@ -101,7 +101,7 @@ class EventSubscriber {
101
101
  const records = [];
102
102
  // @ts-ignore
103
103
  const events = (0, parse_1.parseLogs)(this.program, slot, logs);
104
- let _runningEventIndex = 0;
104
+ let runningEventIndex = 0;
105
105
  for (const event of events) {
106
106
  // @ts-ignore
107
107
  const expectRecordType = this.eventListMap.has(event.name);
@@ -109,10 +109,10 @@ class EventSubscriber {
109
109
  event.data.txSig = txSig;
110
110
  event.data.slot = slot;
111
111
  event.data.eventType = event.name;
112
- //event.data.txSigIndex = _runningEventIndex;
112
+ event.data.txSigIndex = runningEventIndex;
113
113
  records.push(event.data);
114
114
  }
115
- _runningEventIndex++;
115
+ runningEventIndex++;
116
116
  }
117
117
  return records;
118
118
  }
@@ -83,14 +83,14 @@ class LogParser {
83
83
  const records = [];
84
84
  // @ts-ignore
85
85
  const eventGenerator = this.program._events._eventParser.parseLogs(event.logs, false);
86
- let _runningEventIndex = 0;
86
+ let runningEventIndex = 0;
87
87
  for (const eventLog of eventGenerator) {
88
88
  eventLog.data.txSig = event.txSig;
89
89
  eventLog.data.slot = event.slot;
90
90
  eventLog.data.eventType = eventLog.name;
91
- //eventLog.data.txSigIndex = _runningEventIndex;
91
+ eventLog.data.txSigIndex = runningEventIndex;
92
92
  records.push(eventLog.data);
93
- _runningEventIndex++;
93
+ runningEventIndex++;
94
94
  }
95
95
  return records;
96
96
  }
@@ -17,6 +17,7 @@ export type EventSubscriptionOrderDirection = 'asc' | 'desc';
17
17
  export type Event<T> = T & {
18
18
  txSig: TransactionSignature;
19
19
  slot: number;
20
+ txSigIndex: number;
20
21
  };
21
22
  export type WrappedEvent<Type extends EventType> = EventMap[Type] & {
22
23
  eventType: Type;
package/lib/user.js CHANGED
@@ -1606,12 +1606,15 @@ class User {
1606
1606
  if (canBypass) {
1607
1607
  withdrawLimit = _1.BN.max(withdrawLimit, userDepositAmount);
1608
1608
  }
1609
- const amountWithdrawable = freeCollateral
1610
- .mul(numericConstants_1.MARGIN_PRECISION)
1611
- .div(new _1.BN(spotMarket.initialAssetWeight))
1612
- .mul(numericConstants_1.PRICE_PRECISION)
1613
- .div(oracleData.price)
1614
- .mul(precisionIncrease);
1609
+ const assetWeight = (0, spotBalance_1.calculateAssetWeight)(userDepositAmount, spotMarket, 'Initial');
1610
+ const amountWithdrawable = assetWeight.eq(numericConstants_1.ZERO)
1611
+ ? userDepositAmount
1612
+ : freeCollateral
1613
+ .mul(numericConstants_1.MARGIN_PRECISION)
1614
+ .div(assetWeight)
1615
+ .mul(numericConstants_1.PRICE_PRECISION)
1616
+ .div(oracleData.price)
1617
+ .mul(precisionIncrease);
1615
1618
  const maxWithdrawValue = _1.BN.min(_1.BN.min(amountWithdrawable, userDepositAmount), withdrawLimit.abs());
1616
1619
  if (reduceOnly) {
1617
1620
  return _1.BN.max(maxWithdrawValue, numericConstants_1.ZERO);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk",
3
- "version": "2.37.1-beta.4",
3
+ "version": "2.37.1-beta.5",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "author": "crispheaney",
@@ -154,6 +154,16 @@ export const DevnetPerpMarkets: PerpMarketConfig[] = [
154
154
  launchTs: 1689270550000,
155
155
  oracleSource: OracleSource.PYTH,
156
156
  },
157
+ {
158
+ fullName: 'HNT',
159
+ category: ['IoT'],
160
+ symbol: 'HNT-PERP',
161
+ baseAssetSymbol: 'HNT',
162
+ marketIndex: 14,
163
+ oracle: new PublicKey('6Eg8YdfFJQF2HHonzPUBSCCmyUEhrStg9VBLK957sBe6'),
164
+ launchTs: 16922949550000,
165
+ oracleSource: OracleSource.PYTH,
166
+ },
157
167
  ];
158
168
 
159
169
  export const MainnetPerpMarkets: PerpMarketConfig[] = [
@@ -297,6 +307,16 @@ export const MainnetPerpMarkets: PerpMarketConfig[] = [
297
307
  launchTs: 1689270550000,
298
308
  oracleSource: OracleSource.PYTH,
299
309
  },
310
+ {
311
+ fullName: 'HNT',
312
+ category: ['IoT'],
313
+ symbol: 'HNT-PERP',
314
+ baseAssetSymbol: 'HNT',
315
+ marketIndex: 14,
316
+ oracle: new PublicKey('7moA1i5vQUpfDwSpK6Pw9s56ahB7WFGidtbL2ujWrVvm'),
317
+ launchTs: 16922949550000,
318
+ oracleSource: OracleSource.PYTH,
319
+ },
300
320
  ];
301
321
 
302
322
  export const PerpMarkets: { [key in DriftEnv]: PerpMarketConfig[] } = {
@@ -168,7 +168,7 @@ export class EventSubscriber {
168
168
  const records = [];
169
169
  // @ts-ignore
170
170
  const events = parseLogs(this.program, slot, logs);
171
- let _runningEventIndex = 0;
171
+ let runningEventIndex = 0;
172
172
  for (const event of events) {
173
173
  // @ts-ignore
174
174
  const expectRecordType = this.eventListMap.has(event.name);
@@ -176,10 +176,10 @@ export class EventSubscriber {
176
176
  event.data.txSig = txSig;
177
177
  event.data.slot = slot;
178
178
  event.data.eventType = event.name;
179
- //event.data.txSigIndex = _runningEventIndex;
179
+ event.data.txSigIndex = runningEventIndex;
180
180
  records.push(event.data);
181
181
  }
182
- _runningEventIndex++;
182
+ runningEventIndex++;
183
183
  }
184
184
  return records;
185
185
  }
@@ -155,14 +155,14 @@ export class LogParser {
155
155
  event.logs,
156
156
  false
157
157
  );
158
- let _runningEventIndex = 0;
158
+ let runningEventIndex = 0;
159
159
  for (const eventLog of eventGenerator) {
160
160
  eventLog.data.txSig = event.txSig;
161
161
  eventLog.data.slot = event.slot;
162
162
  eventLog.data.eventType = eventLog.name;
163
- //eventLog.data.txSigIndex = _runningEventIndex;
163
+ eventLog.data.txSigIndex = runningEventIndex;
164
164
  records.push(eventLog.data);
165
- _runningEventIndex++;
165
+ runningEventIndex++;
166
166
  }
167
167
  return records;
168
168
  }
@@ -64,7 +64,7 @@ export type EventSubscriptionOrderDirection = 'asc' | 'desc';
64
64
  export type Event<T> = T & {
65
65
  txSig: TransactionSignature;
66
66
  slot: number;
67
- //txSigIndex: number; // Unique index for each event inside a tx
67
+ txSigIndex: number; // Unique index for each event inside a tx
68
68
  };
69
69
 
70
70
  export type WrappedEvent<Type extends EventType> = EventMap[Type] & {
package/src/user.ts CHANGED
@@ -2937,12 +2937,20 @@ export class User {
2937
2937
  withdrawLimit = BN.max(withdrawLimit, userDepositAmount);
2938
2938
  }
2939
2939
 
2940
- const amountWithdrawable = freeCollateral
2941
- .mul(MARGIN_PRECISION)
2942
- .div(new BN(spotMarket.initialAssetWeight))
2943
- .mul(PRICE_PRECISION)
2944
- .div(oracleData.price)
2945
- .mul(precisionIncrease);
2940
+ const assetWeight = calculateAssetWeight(
2941
+ userDepositAmount,
2942
+ spotMarket,
2943
+ 'Initial'
2944
+ );
2945
+
2946
+ const amountWithdrawable = assetWeight.eq(ZERO)
2947
+ ? userDepositAmount
2948
+ : freeCollateral
2949
+ .mul(MARGIN_PRECISION)
2950
+ .div(assetWeight)
2951
+ .mul(PRICE_PRECISION)
2952
+ .div(oracleData.price)
2953
+ .mul(precisionIncrease);
2946
2954
 
2947
2955
  const maxWithdrawValue = BN.min(
2948
2956
  BN.min(amountWithdrawable, userDepositAmount),