aftermath-ts-sdk 1.3.23-perps.22 → 1.3.23-perps.24

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.
@@ -22,7 +22,6 @@ var __rest = (this && this.__rest) || function (s, e) {
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.PerpetualsAccount = void 0;
24
24
  const caller_1 = require("../../general/utils/caller");
25
- const types_1 = require("../../types");
26
25
  const utils_1 = require("../../general/utils");
27
26
  const perpetuals_1 = require("./perpetuals");
28
27
  const __1 = require("..");
@@ -38,203 +37,6 @@ class PerpetualsAccount extends caller_1.Caller {
38
37
  this.account = account;
39
38
  this.accountCap = accountCap;
40
39
  this.Provider = Provider;
41
- // public async getOwnedWithdrawRequests() {
42
- // return new Perpetuals(
43
- // this.config,
44
- // this.Provider
45
- // ).getOwnedWithdrawRequests({
46
- // walletAddress: this.ownerAddress(),
47
- // });
48
- // }
49
- // =========================================================================
50
- // Calculations
51
- // =========================================================================
52
- this.calcFreeCollateralForPosition = (inputs) => {
53
- var _a, _b;
54
- const marketId = inputs.market.marketId;
55
- const position = (_b = (_a = inputs.position) !== null && _a !== void 0 ? _a : this.positionForMarketId({ marketId })) !== null && _b !== void 0 ? _b : inputs.market.emptyPosition();
56
- const funding = this.calcUnrealizedFundingsForPosition(inputs);
57
- const { pnl, minInitialMargin } = this.calcPnLAndMarginForPosition(inputs);
58
- let collateralUsd = position.collateral * inputs.collateralPrice;
59
- collateralUsd += funding;
60
- let cappedMargin;
61
- if (pnl < 0) {
62
- cappedMargin = collateralUsd + pnl;
63
- }
64
- else {
65
- cappedMargin = collateralUsd;
66
- }
67
- if (cappedMargin >= minInitialMargin) {
68
- return (cappedMargin - minInitialMargin) / inputs.collateralPrice;
69
- }
70
- else
71
- return 0;
72
- };
73
- this.calcMarginRatioAndLeverageForPosition = (inputs) => {
74
- var _a, _b;
75
- const { market, indexPrice, collateralPrice } = inputs;
76
- const marketId = market.marketId;
77
- const position = (_b = (_a = inputs.position) !== null && _a !== void 0 ? _a : this.positionForMarketId({ marketId })) !== null && _b !== void 0 ? _b : market.emptyPosition();
78
- const funding = this.calcUnrealizedFundingsForPosition({
79
- market,
80
- position,
81
- });
82
- const collateralUsd = (position === null || position === void 0 ? void 0 : position.collateral) * collateralPrice + funding;
83
- const { pnl, netAbsBaseValue } = this.calcPnLAndMarginForPosition({
84
- market,
85
- indexPrice,
86
- position,
87
- });
88
- const marginRatio = netAbsBaseValue === 0 ? 0 : (collateralUsd + pnl) / netAbsBaseValue;
89
- const leverage = marginRatio === 0 ? 0 : 1 / marginRatio;
90
- return {
91
- marginRatio,
92
- leverage,
93
- };
94
- };
95
- this.calcUnrealizedFundings = (inputs) => {
96
- let totalFunding = 0;
97
- inputs.markets.forEach((market) => {
98
- totalFunding += this.calcUnrealizedFundingsForPosition({
99
- market,
100
- });
101
- });
102
- return totalFunding;
103
- };
104
- this.calcUnrealizedFundingsForPosition = (inputs) => {
105
- var _a, _b;
106
- const marketId = inputs.market.marketId;
107
- const position = (_b = (_a = inputs.position) !== null && _a !== void 0 ? _a : this.positionForMarketId({ marketId })) !== null && _b !== void 0 ? _b : inputs.market.emptyPosition();
108
- const baseAmount = position.baseAssetAmount;
109
- const isLong = Math.sign(baseAmount);
110
- if (isLong < 0) {
111
- const fundingShort = position.cumFundingRateShort;
112
- const marketFundingShort = inputs.market.marketState.cumFundingRateShort;
113
- return -baseAmount * (marketFundingShort - fundingShort);
114
- }
115
- else {
116
- const fundingLong = position.cumFundingRateLong;
117
- const marketFundingLong = inputs.market.marketState.cumFundingRateLong;
118
- return -baseAmount * (marketFundingLong - fundingLong);
119
- }
120
- };
121
- this.calcPnLAndMarginForPosition = (inputs) => {
122
- var _a, _b;
123
- const marketId = inputs.market.marketId;
124
- const position = (_b = (_a = inputs.position) !== null && _a !== void 0 ? _a : this.positionForMarketId({ marketId })) !== null && _b !== void 0 ? _b : inputs.market.emptyPosition();
125
- const marginRatioInitial = 1 / (position.leverage || 1);
126
- // const marginRatioInitial = inputs.market.initialMarginRatio();
127
- const marginRatioMaintenance = inputs.market.marketParams.marginRatioMaintenance;
128
- const baseAssetAmount = position.baseAssetAmount;
129
- const quoteAssetAmount = position.quoteAssetNotionalAmount;
130
- const bidsQuantity = position.bidsQuantity;
131
- const asksQuantity = position.asksQuantity;
132
- const pnl = baseAssetAmount * inputs.indexPrice - quoteAssetAmount;
133
- const netAbs = Math.max(Math.abs(baseAssetAmount + bidsQuantity), Math.abs(baseAssetAmount - asksQuantity));
134
- const netAbsBaseValue = netAbs * inputs.indexPrice;
135
- const minInitialMargin = netAbsBaseValue * marginRatioInitial;
136
- const minMaintenanceMargin = netAbsBaseValue * marginRatioMaintenance;
137
- return { pnl, minInitialMargin, minMaintenanceMargin, netAbsBaseValue };
138
- };
139
- this.calcLiquidationPriceForPosition = (inputs) => {
140
- var _a, _b;
141
- const marketId = inputs.market.marketId;
142
- const position = (_b = (_a = inputs.position) !== null && _a !== void 0 ? _a : this.positionForMarketId({ marketId })) !== null && _b !== void 0 ? _b : inputs.market.emptyPosition();
143
- const funding = this.calcUnrealizedFundingsForPosition(inputs);
144
- const baseAssetAmount = position.baseAssetAmount;
145
- const quoteAssetAmount = position.quoteAssetNotionalAmount;
146
- const numerator = position.collateral * inputs.collateralPrice +
147
- funding -
148
- quoteAssetAmount;
149
- const MMR = inputs.market.marketParams.marginRatioMaintenance;
150
- const bidsQuantity = position.bidsQuantity;
151
- const asksQuantity = position.asksQuantity;
152
- const netAbs = Math.max(Math.abs(baseAssetAmount + bidsQuantity), Math.abs(baseAssetAmount - asksQuantity));
153
- const denominator = netAbs * MMR - baseAssetAmount;
154
- if (!denominator)
155
- return 0;
156
- const liquidationPrice = numerator / denominator;
157
- return liquidationPrice <= 0 ? 0 : liquidationPrice;
158
- };
159
- this.calcFreeMarginUsdForPosition = (inputs) => {
160
- var _a, _b;
161
- const marketId = inputs.market.marketId;
162
- const position = (_b = (_a = inputs.position) !== null && _a !== void 0 ? _a : this.positionForMarketId({ marketId })) !== null && _b !== void 0 ? _b : inputs.market.emptyPosition();
163
- const totalFunding = this.calcUnrealizedFundingsForPosition(inputs);
164
- const { pnl, minInitialMargin } = this.calcPnLAndMarginForPosition(inputs);
165
- let collateralUsd = position.collateral * inputs.collateralPrice;
166
- const margin = collateralUsd + totalFunding + pnl;
167
- if (margin >= minInitialMargin) {
168
- return margin - minInitialMargin;
169
- }
170
- else
171
- return 0;
172
- };
173
- this.calcAccountState = (inputs) => {
174
- const zipped = utils_1.Helpers.zip(inputs.markets, inputs.indexPrices);
175
- let accountEquity = 0;
176
- let totalPnL = 0;
177
- let totalFunding = 0;
178
- let totalCollateralAllocated = 0;
179
- zipped.forEach(([market, indexPrice]) => {
180
- var _a;
181
- const marketId = market.marketId;
182
- const position = (_a = this.positionForMarketId({ marketId })) !== null && _a !== void 0 ? _a : market.emptyPosition();
183
- const funding = this.calcUnrealizedFundingsForPosition({
184
- market,
185
- position,
186
- });
187
- const { pnl } = this.calcPnLAndMarginForPosition({
188
- market,
189
- indexPrice,
190
- position,
191
- });
192
- let collateralUsd = position.collateral * inputs.collateralPrice;
193
- totalPnL += pnl;
194
- totalFunding += funding;
195
- totalCollateralAllocated += collateralUsd;
196
- accountEquity += collateralUsd + funding + pnl;
197
- });
198
- return {
199
- accountEquity,
200
- totalPnL,
201
- totalFunding,
202
- totalCollateralAllocated,
203
- };
204
- };
205
- this.closePositionTxInputs = (inputs) => {
206
- var _a;
207
- const { size, market, orderDatas, collateralPrice } = inputs;
208
- const marketId = market.marketId;
209
- const position = (_a = this.positionForMarketId({ marketId })) !== null && _a !== void 0 ? _a : market.emptyPosition();
210
- // TODO: move conversion to helper function, since used often
211
- const ordersCollateral = utils_1.Helpers.sum(orderDatas
212
- .filter((orderData) => orderData.marketId === market.marketId)
213
- .map((orderData) => market.calcCollateralUsedForOrder(Object.assign(Object.assign({}, inputs), { orderData, leverage: position.leverage })).collateral));
214
- const fullPositionCollateralChange = Math.max(this.calcFreeMarginUsdForPosition(inputs) / collateralPrice -
215
- ordersCollateral *
216
- (1 -
217
- PerpetualsAccount.constants
218
- .closePositionMarginOfError), 0) * -1;
219
- // NOTE: is this safe / correct ?
220
- const collateralChange = Number(fullPositionCollateralChange) *
221
- (Number(size) /
222
- utils_1.Casting.Fixed.fixedOneN9 /
223
- position.baseAssetAmount);
224
- const positionSide = perpetuals_1.Perpetuals.positionSide(position);
225
- return {
226
- size,
227
- marketId,
228
- collateralChange,
229
- // leverage: position.leverage || 1,
230
- // leverage: undefined,
231
- side: positionSide === types_1.PerpetualsOrderSide.Bid
232
- ? types_1.PerpetualsOrderSide.Ask
233
- : types_1.PerpetualsOrderSide.Bid,
234
- // hasPosition: this.positionForMarketId({ marketId }) !== undefined,
235
- reduceOnly: true,
236
- };
237
- };
238
40
  this.vaultId = vaultId;
239
41
  }
240
42
  // =========================================================================
@@ -473,22 +275,41 @@ class PerpetualsAccount extends caller_1.Caller {
473
275
  });
474
276
  });
475
277
  }
476
- getReduceOrderTx(inputs) {
477
- return __awaiter(this, void 0, void 0, function* () {
478
- var _a;
479
- const { tx } = inputs, otherInputs = __rest(inputs, ["tx"]);
480
- return this.fetchApiTxObject(`${this.vaultId ? "vault" : "account"}/` +
481
- "transactions/reduce-order", Object.assign(Object.assign(Object.assign({}, otherInputs), { txKind: yield ((_a = this.Provider) === null || _a === void 0 ? void 0 : _a.Transactions().fetchBase64TxKindFromTx({ tx })), walletAddress: this.ownerAddress() }), ("vaultId" in this.accountCap
482
- ? {
483
- vaultId: this.accountCap.vaultId,
484
- }
485
- : {
486
- accountId: this.accountCap.accountId,
487
- })), undefined, {
488
- txKind: true,
489
- });
490
- });
491
- }
278
+ // public async getReduceOrderTx(inputs: {
279
+ // tx?: Transaction;
280
+ // collateralChange: number;
281
+ // marketId: PerpetualsMarketId;
282
+ // orderId: PerpetualsOrderId;
283
+ // sizeToSubtract: bigint;
284
+ // leverage?: number;
285
+ // }) {
286
+ // const { tx, ...otherInputs } = inputs;
287
+ // return this.fetchApiTxObject<
288
+ // ApiPerpetualsReduceOrderBody,
289
+ // ApiTransactionResponse
290
+ // >(
291
+ // `${this.vaultId ? "vault" : "account"}/` +
292
+ // "transactions/reduce-order",
293
+ // {
294
+ // ...otherInputs,
295
+ // txKind: await this.Provider?.Transactions().fetchBase64TxKindFromTx(
296
+ // { tx }
297
+ // ),
298
+ // walletAddress: this.ownerAddress(),
299
+ // ...("vaultId" in this.accountCap
300
+ // ? {
301
+ // vaultId: this.accountCap.vaultId,
302
+ // }
303
+ // : {
304
+ // accountId: this.accountCap.accountId,
305
+ // }),
306
+ // },
307
+ // undefined,
308
+ // {
309
+ // txKind: true,
310
+ // }
311
+ // );
312
+ // }
492
313
  getSetLeverageTx(inputs) {
493
314
  return __awaiter(this, void 0, void 0, function* () {
494
315
  var _a;
@@ -510,11 +331,18 @@ class PerpetualsAccount extends caller_1.Caller {
510
331
  // =========================================================================
511
332
  // Position Txs
512
333
  // =========================================================================
513
- getClosePositionTx(inputs) {
514
- return __awaiter(this, void 0, void 0, function* () {
515
- return this.getPlaceMarketOrderTx(Object.assign({}, this.closePositionTxInputs(inputs)));
516
- });
517
- }
334
+ // public async getClosePositionTx(inputs: {
335
+ // size: bigint;
336
+ // market: PerpetualsMarket;
337
+ // orderDatas: PerpetualsOrderData[];
338
+ // indexPrice: number;
339
+ // collateralPrice: number;
340
+ // }) {
341
+ // throw new Error("TODO");
342
+ // // return this.getPlaceMarketOrderTx({
343
+ // // ...this.closePositionTxInputs(inputs),
344
+ // // });
345
+ // }
518
346
  // =========================================================================
519
347
  // Interactions
520
348
  // =========================================================================
@@ -563,25 +391,25 @@ class PerpetualsAccount extends caller_1.Caller {
563
391
  getPlaceMarketOrderPreview(inputs, abortSignal) {
564
392
  return __awaiter(this, void 0, void 0, function* () {
565
393
  return this.fetchApi(`${this.vaultId ? "vault" : "account"}/` +
566
- "previews/place-market-order", Object.assign(Object.assign(Object.assign({}, inputs), ("vaultId" in this.accountCap
394
+ "previews/place-market-order", Object.assign(Object.assign({}, inputs), ("vaultId" in this.accountCap
567
395
  ? {
568
396
  vaultId: this.accountCap.vaultId,
569
397
  }
570
398
  : {
571
399
  accountId: this.accountCap.accountId,
572
- })), { collateralCoinType: this.accountCap.collateralCoinType }), abortSignal);
400
+ })), abortSignal);
573
401
  });
574
402
  }
575
403
  getPlaceLimitOrderPreview(inputs, abortSignal) {
576
404
  return __awaiter(this, void 0, void 0, function* () {
577
405
  return this.fetchApi(`${this.vaultId ? "vault" : "account"}/` +
578
- "previews/place-limit-order", Object.assign(Object.assign(Object.assign({}, inputs), ("vaultId" in this.accountCap
406
+ "previews/place-limit-order", Object.assign(Object.assign({}, inputs), ("vaultId" in this.accountCap
579
407
  ? {
580
408
  vaultId: this.accountCap.vaultId,
581
409
  }
582
410
  : {
583
411
  accountId: this.accountCap.accountId,
584
- })), { collateralCoinType: this.accountCap.collateralCoinType }), abortSignal);
412
+ })), abortSignal);
585
413
  });
586
414
  }
587
415
  getCancelOrdersPreview(inputs, abortSignal) {
@@ -592,39 +420,99 @@ class PerpetualsAccount extends caller_1.Caller {
592
420
  collateralChange: 0,
593
421
  marketIdsToPositionAfterCancelOrders: {},
594
422
  };
595
- return this.fetchApi(`${this.vaultId ? "vault" : "account"}/` + "previews/cancel-orders", Object.assign(Object.assign(Object.assign({}, inputs), ("vaultId" in this.accountCap
423
+ return this.fetchApi(`${this.vaultId ? "vault" : "account"}/` + "previews/cancel-orders", Object.assign(Object.assign({}, inputs), ("vaultId" in this.accountCap
596
424
  ? {
597
425
  vaultId: this.accountCap.vaultId,
598
426
  }
599
427
  : {
600
428
  accountId: this.accountCap.accountId,
601
- })), { collateralCoinType: this.accountCap.collateralCoinType }), abortSignal);
602
- });
603
- }
604
- getReduceOrderPreview(inputs, abortSignal) {
605
- return __awaiter(this, void 0, void 0, function* () {
606
- return this.fetchApi(`${this.vaultId ? "vault" : "account"}/` + "previews/reduce-order", Object.assign(Object.assign(Object.assign({}, inputs), ("vaultId" in this.accountCap
607
- ? {
608
- vaultId: this.accountCap.vaultId,
609
- }
610
- : {
611
- accountId: this.accountCap.accountId,
612
- })), { collateralCoinType: this.accountCap.collateralCoinType }), abortSignal);
429
+ })), abortSignal);
613
430
  });
614
431
  }
432
+ // public async getReduceOrderPreview(
433
+ // inputs: {
434
+ // marketId: PerpetualsMarketId;
435
+ // orderId: PerpetualsOrderId;
436
+ // sizeToSubtract: bigint;
437
+ // leverage?: number;
438
+ // },
439
+ // abortSignal?: AbortSignal
440
+ // ): Promise<
441
+ // | {
442
+ // positionAfterReduceOrder: PerpetualsPosition;
443
+ // collateralChange: number;
444
+ // }
445
+ // | {
446
+ // error: string;
447
+ // }
448
+ // > {
449
+ // return this.fetchApi<
450
+ // ApiPerpetualsPreviewReduceOrderResponse,
451
+ // ApiPerpetualsPreviewReduceOrderBody
452
+ // >(
453
+ // `${this.vaultId ? "vault" : "account"}/` + "previews/reduce-order",
454
+ // {
455
+ // ...inputs,
456
+ // ...("vaultId" in this.accountCap
457
+ // ? {
458
+ // vaultId: this.accountCap.vaultId,
459
+ // }
460
+ // : {
461
+ // accountId: this.accountCap.accountId,
462
+ // }),
463
+ // },
464
+ // abortSignal
465
+ // );
466
+ // }
615
467
  getSetLeveragePreview(inputs, abortSignal) {
616
468
  return __awaiter(this, void 0, void 0, function* () {
617
469
  const { marketId, leverage } = inputs;
618
- return this.fetchApi(`${this.vaultId ? "vault" : "account"}/` + "previews/set-leverage", Object.assign(Object.assign({ marketId,
470
+ return this.fetchApi(`${this.vaultId ? "vault" : "account"}/` + "previews/set-leverage", Object.assign({ marketId,
619
471
  leverage }, ("vaultId" in this.accountCap
620
472
  ? {
621
473
  vaultId: this.accountCap.vaultId,
622
474
  }
623
475
  : {
624
476
  accountId: this.accountCap.accountId,
625
- })), { collateralCoinType: this.accountCap.collateralCoinType }), abortSignal);
477
+ })), abortSignal);
626
478
  });
627
479
  }
480
+ // public getPlaceClosePositionOrderPreview = async (
481
+ // inputs: {
482
+ // size: bigint;
483
+ // marketId: PerpetualsMarketId;
484
+ // leverage?: number;
485
+ // } & (
486
+ // | {
487
+ // accountId: PerpetualsAccountId;
488
+ // }
489
+ // | {
490
+ // vaultId: ObjectId;
491
+ // }
492
+ // ),
493
+ // abortSignal?: AbortSignal
494
+ // ): Promise<ReturnType<PerpetualsAccount["getPlaceMarketOrderPreview"]>> => {
495
+ // // TODO: make this fetch instead ?
496
+ // const position = this.positionForMarketId({
497
+ // marketId: inputs.marketId,
498
+ // });
499
+ // if (!position)
500
+ // throw new Error(
501
+ // `Account has no position for market id: ${inputs.marketId}`
502
+ // );
503
+ // return this.getPlaceMarketOrderPreview(
504
+ // {
505
+ // ...inputs,
506
+ // reduceOnly: true,
507
+ // side:
508
+ // Perpetuals.positionSide(position) ===
509
+ // PerpetualsOrderSide.Ask
510
+ // ? PerpetualsOrderSide.Bid
511
+ // : PerpetualsOrderSide.Ask,
512
+ // },
513
+ // abortSignal
514
+ // );
515
+ // };
628
516
  getOrderDatas() {
629
517
  return __awaiter(this, void 0, void 0, function* () {
630
518
  const orderDatas = this.account.positions.reduce((acc, position) => [
@@ -672,6 +560,14 @@ class PerpetualsAccount extends caller_1.Caller {
672
560
  });
673
561
  });
674
562
  }
563
+ // public async getOwnedWithdrawRequests() {
564
+ // return new Perpetuals(
565
+ // this.config,
566
+ // this.Provider
567
+ // ).getOwnedWithdrawRequests({
568
+ // walletAddress: this.ownerAddress(),
569
+ // });
570
+ // }
675
571
  // =========================================================================
676
572
  // Helpers
677
573
  // =========================================================================
@@ -53,9 +53,7 @@ export declare class PerpetualsMarket extends Caller {
53
53
  }>;
54
54
  timeUntilNextFundingMs: () => Timestamp;
55
55
  nextFundingTimeMs: () => Timestamp;
56
- estimatedFundingRate: (inputs: {
57
- indexPrice: number;
58
- }) => number;
56
+ estimatedFundingRate: () => Percentage;
59
57
  calcCollateralUsedForOrder: (inputs: {
60
58
  leverage: number;
61
59
  orderData: PerpetualsOrderData;
@@ -1 +1 @@
1
- {"version":3,"file":"perpetualsMarket.d.ts","sourceRoot":"","sources":["../../../src/packages/perpetuals/perpetualsMarket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"perpetualsMarket.d.ts","sourceRoot":"","sources":["../../../src/packages/perpetuals/perpetualsMarket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAIN,QAAQ,EAKR,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EAGnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAElB,SAAS,EAET,oBAAoB,EAKpB,qBAAqB,EACrB,gCAAgC,EAChC,YAAY,EACZ,UAAU,EAEV,yBAAyB,EAEzB,yCAAyC,EAEzC,0CAA0C,EAC1C,mBAAmB,EACnB,MAAM,aAAa,CAAC;AAIrB,qBAAa,gBAAiB,SAAQ,MAAM;IAiBnC,UAAU,EAAE,oBAAoB;IAZxC,SAAgB,QAAQ,EAAE,kBAAkB,CAAC;IAC7C,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,eAAe,EAAE,MAAM,CAAC;IACxC,SAAgB,kBAAkB,EAAE,QAAQ,CAAC;IAC7C,SAAgB,YAAY,EAAE,sBAAsB,CAAC;IACrD,SAAgB,WAAW,EAAE,qBAAqB,CAAC;gBAO3C,UAAU,EAAE,oBAAoB,EACvC,MAAM,CAAC,EAAE,YAAY;IAiBf,oBAAoB;IAWd,YAAY,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAOlD,YAAY;IAwBlB,eAAe,GAAU,QAAQ;QACvC,SAAS,EAAE,mBAAmB,CAAC;QAC/B,IAAI,EAAE,mBAAmB,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf;sBAIgB,MAAM;OAUrB;IAEW,0BAA0B,CACtC,MAAM,EAAE,0CAA0C,EAClD,WAAW,CAAC,EAAE,WAAW,GACvB,OAAO,CACP;QACA,KAAK,EAAE,MAAM,CAAC;KACb,GACD;QACA,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,UAAU,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACtB,CACH;IAcY,yBAAyB,CACrC,MAAM,EAAE,yCAAyC,EACjD,WAAW,CAAC,EAAE,WAAW,GACvB,OAAO,CACP;QACA,KAAK,EAAE,MAAM,CAAC;KACb,GACD;QACA,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,UAAU,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;KACtB,CACH;IAkBY,eAAe,CAAC,MAAM,EAAE,qBAAqB,CAAC,SAAS,CAAC;IAgBxD,SAAS,IAAI,OAAO,CAAC;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACxB,CAAC;IAeK,sBAAsB,QAAO,SAAS,CAE3C;IAEK,iBAAiB,QAAO,SAAS,CAKtC;IAKK,oBAAoB,QAAO,UAAU,CAE1C;IAEK,0BAA0B,GAAI,QAAQ;QAC5C,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,mBAAmB,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;KACxB,KAAG;QACH,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;KACtB,CAkBC;IAMK,OAAO;IAIP,QAAQ;IAIR,WAAW;IAIX,kBAAkB;IAIlB,sBAAsB;IAQtB,iBAAiB,GAAI,QAAQ;QACnC,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KACf,YASC;IAEK,uBAAuB,GAAI,QAAQ;QACzC,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KACf,YAcC;IAEK,gBAAgB,GAAI,QAAQ;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KACf,YASC;IAEK,sBAAsB,GAAI,QAAQ;QACxC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KACf,YAcC;IAEK,aAAa,QAAO,kBAAkB,CAyB3C;CAqGF"}
@@ -40,22 +40,16 @@ class PerpetualsMarket extends caller_1.Caller {
40
40
  return this.nextFundingTimeMs() - Date.now();
41
41
  };
42
42
  this.nextFundingTimeMs = () => {
43
- const fundingFrequencyMs = Number(this.marketParams.fundingFrequencyMs);
44
- const lastFundingIntervalNumber = Math.floor(this.marketState.fundingLastUpdateTimestamp / fundingFrequencyMs);
45
- return (lastFundingIntervalNumber + 1) * fundingFrequencyMs;
43
+ return this.marketData.nextFundingTimestampMs >
44
+ BigInt(Number.MAX_SAFE_INTEGER)
45
+ ? Number.MAX_SAFE_INTEGER
46
+ : Number(this.marketData.nextFundingTimestampMs);
46
47
  };
47
48
  // The funding rate as the difference between book and index TWAPs relative to the index price,
48
49
  // scaled by the funding period adjustment:
49
50
  // (bookTwap - indexTwap) / indexPrice * (fundingFrequency / fundingPeriod)
50
- //
51
- // To get the rate as a percentage, multiply the output by 100.
52
- this.estimatedFundingRate = (inputs) => {
53
- const { indexPrice } = inputs;
54
- const premiumTwap = this.marketState.premiumTwap;
55
- const relativePremium = premiumTwap / indexPrice;
56
- const periodAdjustment = Number(this.marketParams.fundingFrequencyMs) /
57
- Number(this.marketParams.fundingPeriodMs);
58
- return relativePremium * periodAdjustment;
51
+ this.estimatedFundingRate = () => {
52
+ return this.marketData.estimatedFundingRate;
59
53
  };
60
54
  this.calcCollateralUsedForOrder = (inputs) => {
61
55
  const { leverage, orderData, indexPrice, collateralPrice } = inputs;
@@ -117,8 +111,9 @@ class PerpetualsMarket extends caller_1.Caller {
117
111
  this.emptyPosition = () => {
118
112
  return {
119
113
  marketId: this.marketId,
120
- collateralCoinType: this.marketData.collateralCoinType,
114
+ // collateralCoinType: this.marketData.collateralCoinType,
121
115
  collateral: 0,
116
+ collateralUsd: 0,
122
117
  baseAssetAmount: 0,
123
118
  quoteAssetNotionalAmount: 0,
124
119
  cumFundingRateLong: this.marketData.marketState.cumFundingRateLong,
@@ -129,6 +124,13 @@ class PerpetualsMarket extends caller_1.Caller {
129
124
  makerFee: 1, // 100%
130
125
  takerFee: 1, // 100%
131
126
  leverage: 1,
127
+ entryPrice: 0,
128
+ freeCollateral: 0,
129
+ freeMarginUsd: 0,
130
+ liquidationPrice: 0,
131
+ marginRatio: 1,
132
+ unrealizedFundingsUsd: 0,
133
+ unrealizedPnlUsd: 0,
132
134
  };
133
135
  };
134
136
  this.marketId = marketData.objectId;
@@ -169,12 +171,12 @@ class PerpetualsMarket extends caller_1.Caller {
169
171
  }
170
172
  getPlaceMarketOrderPreview(inputs, abortSignal) {
171
173
  return __awaiter(this, void 0, void 0, function* () {
172
- return this.fetchApi("account/previews/place-market-order", Object.assign(Object.assign({}, inputs), { collateralCoinType: this.collateralCoinType, accountId: undefined }), abortSignal);
174
+ return this.fetchApi("account/previews/place-market-order", Object.assign(Object.assign({}, inputs), { accountId: undefined }), abortSignal);
173
175
  });
174
176
  }
175
177
  getPlaceLimitOrderPreview(inputs, abortSignal) {
176
178
  return __awaiter(this, void 0, void 0, function* () {
177
- return this.fetchApi("account/previews/place-limit-order", Object.assign(Object.assign({}, inputs), { collateralCoinType: this.collateralCoinType, accountId: undefined }), abortSignal);
179
+ return this.fetchApi("account/previews/place-limit-order", Object.assign(Object.assign({}, inputs), { accountId: undefined }), abortSignal);
178
180
  });
179
181
  }
180
182
  // =========================================================================