@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 +1 -1
- package/lib/constants/perpMarkets.js +20 -0
- package/lib/events/eventSubscriber.js +3 -3
- package/lib/events/fetchLogs.js +3 -3
- package/lib/events/types.d.ts +1 -0
- package/lib/user.js +9 -6
- package/package.json +1 -1
- package/src/constants/perpMarkets.ts +20 -0
- package/src/events/eventSubscriber.ts +3 -3
- package/src/events/fetchLogs.ts +3 -3
- package/src/events/types.ts +1 -1
- package/src/user.ts +14 -6
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.37.1-beta.
|
|
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
|
|
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
|
-
|
|
112
|
+
event.data.txSigIndex = runningEventIndex;
|
|
113
113
|
records.push(event.data);
|
|
114
114
|
}
|
|
115
|
-
|
|
115
|
+
runningEventIndex++;
|
|
116
116
|
}
|
|
117
117
|
return records;
|
|
118
118
|
}
|
package/lib/events/fetchLogs.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
91
|
+
eventLog.data.txSigIndex = runningEventIndex;
|
|
92
92
|
records.push(eventLog.data);
|
|
93
|
-
|
|
93
|
+
runningEventIndex++;
|
|
94
94
|
}
|
|
95
95
|
return records;
|
|
96
96
|
}
|
package/lib/events/types.d.ts
CHANGED
|
@@ -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
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
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
|
@@ -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
|
|
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
|
-
|
|
179
|
+
event.data.txSigIndex = runningEventIndex;
|
|
180
180
|
records.push(event.data);
|
|
181
181
|
}
|
|
182
|
-
|
|
182
|
+
runningEventIndex++;
|
|
183
183
|
}
|
|
184
184
|
return records;
|
|
185
185
|
}
|
package/src/events/fetchLogs.ts
CHANGED
|
@@ -155,14 +155,14 @@ export class LogParser {
|
|
|
155
155
|
event.logs,
|
|
156
156
|
false
|
|
157
157
|
);
|
|
158
|
-
let
|
|
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
|
-
|
|
163
|
+
eventLog.data.txSigIndex = runningEventIndex;
|
|
164
164
|
records.push(eventLog.data);
|
|
165
|
-
|
|
165
|
+
runningEventIndex++;
|
|
166
166
|
}
|
|
167
167
|
return records;
|
|
168
168
|
}
|
package/src/events/types.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
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),
|