aftermath-ts-sdk 1.3.12-perps.19 → 1.3.12-perps.21
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/dist/general/types/generalTypes.d.ts +3 -0
- package/dist/general/types/generalTypes.d.ts.map +1 -1
- package/dist/general/utils/caller.d.ts +14 -2
- package/dist/general/utils/caller.d.ts.map +1 -1
- package/dist/general/utils/caller.js +25 -0
- package/dist/packages/perpetuals/api/perpetualsApi.js +2 -2
- package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts +2 -6
- package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts.map +1 -1
- package/dist/packages/perpetuals/api/perpetualsApiCasting.js +74 -66
- package/dist/packages/perpetuals/index.d.ts +1 -0
- package/dist/packages/perpetuals/index.d.ts.map +1 -1
- package/dist/packages/perpetuals/index.js +1 -0
- package/dist/packages/perpetuals/perpetuals.d.ts +50 -14
- package/dist/packages/perpetuals/perpetuals.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetuals.js +73 -45
- package/dist/packages/perpetuals/perpetualsAccount.d.ts +54 -21
- package/dist/packages/perpetuals/perpetualsAccount.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetualsAccount.js +227 -111
- package/dist/packages/perpetuals/perpetualsMarket.d.ts +15 -16
- package/dist/packages/perpetuals/perpetualsMarket.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetualsMarket.js +45 -57
- package/dist/packages/perpetuals/perpetualsTypes.d.ts +324 -150
- package/dist/packages/perpetuals/perpetualsTypes.d.ts.map +1 -1
- package/dist/packages/perpetuals/perpetualsVault.d.ts +109 -0
- package/dist/packages/perpetuals/perpetualsVault.d.ts.map +1 -0
- package/dist/packages/perpetuals/perpetualsVault.js +290 -0
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Caller } from "../../general/utils/caller";
|
|
2
|
-
import { CoinType,
|
|
2
|
+
import { CoinType, PerpetualsMarketId, PerpetualsMarketParams, PerpetualsMarketState, PerpetualsOrderData, PerpetualsOrderSide, PerpetualsOrderbook, PerpetualsPosition, Timestamp, PerpetualsMarketData, ApiDataWithCursorBody, PerpetualsTradeHistoryWithCursor, CallerConfig, Percentage, PerpetualsMarket24hrStats, SdkPerpetualsPlaceLimitOrderPreviewInputs, SdkPerpetualsPlaceMarketOrderPreviewInputs, PerpetualsAccountId } from "../../types";
|
|
3
3
|
export declare class PerpetualsMarket extends Caller {
|
|
4
4
|
marketData: PerpetualsMarketData;
|
|
5
5
|
readonly marketId: PerpetualsMarketId;
|
|
@@ -12,13 +12,14 @@ export declare class PerpetualsMarket extends Caller {
|
|
|
12
12
|
getOrderbookMidPrice(): Promise<number | undefined>;
|
|
13
13
|
get24hrStats(): Promise<PerpetualsMarket24hrStats>;
|
|
14
14
|
getOrderbook(): Promise<PerpetualsOrderbook>;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
indexPrice: number;
|
|
15
|
+
getMaxOrderSize: (inputs: {
|
|
16
|
+
accountId: PerpetualsAccountId;
|
|
18
17
|
side: PerpetualsOrderSide;
|
|
19
|
-
leverage
|
|
20
|
-
price?:
|
|
21
|
-
}) => Promise<
|
|
18
|
+
leverage?: number;
|
|
19
|
+
price?: number;
|
|
20
|
+
}) => Promise<{
|
|
21
|
+
maxOrderSize: bigint;
|
|
22
|
+
}>;
|
|
22
23
|
getPlaceMarketOrderPreview(inputs: SdkPerpetualsPlaceMarketOrderPreviewInputs, abortSignal?: AbortSignal): Promise<{
|
|
23
24
|
error: string;
|
|
24
25
|
} | {
|
|
@@ -55,12 +56,6 @@ export declare class PerpetualsMarket extends Caller {
|
|
|
55
56
|
estimatedFundingRate: (inputs: {
|
|
56
57
|
indexPrice: number;
|
|
57
58
|
}) => number;
|
|
58
|
-
priceToOrderPrice: (inputs: {
|
|
59
|
-
price: number;
|
|
60
|
-
}) => PerpetualsOrderPrice;
|
|
61
|
-
orderPriceToPrice: (inputs: {
|
|
62
|
-
orderPrice: PerpetualsOrderPrice;
|
|
63
|
-
}) => number;
|
|
64
59
|
calcCollateralUsedForOrder: (inputs: {
|
|
65
60
|
leverage: number;
|
|
66
61
|
orderData: PerpetualsOrderData;
|
|
@@ -75,12 +70,16 @@ export declare class PerpetualsMarket extends Caller {
|
|
|
75
70
|
maxLeverage(): number;
|
|
76
71
|
initialMarginRatio(): number;
|
|
77
72
|
maintenanceMarginRatio(): number;
|
|
78
|
-
orderPrice(inputs: {
|
|
79
|
-
orderId: PerpetualsOrderId;
|
|
80
|
-
}): number;
|
|
81
73
|
roundToValidPrice: (inputs: {
|
|
82
74
|
price: number;
|
|
75
|
+
floor?: boolean;
|
|
76
|
+
ceil?: boolean;
|
|
83
77
|
}) => number;
|
|
78
|
+
roundToValidPriceBigInt: (inputs: {
|
|
79
|
+
price: number;
|
|
80
|
+
floor?: boolean;
|
|
81
|
+
ceil?: boolean;
|
|
82
|
+
}) => bigint;
|
|
84
83
|
roundToValidSize: (inputs: {
|
|
85
84
|
size: number;
|
|
86
85
|
floor?: boolean;
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"perpetualsMarket.d.ts","sourceRoot":"","sources":["../../../src/packages/perpetuals/perpetualsMarket.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.PerpetualsMarket = void 0;
|
|
13
13
|
const __1 = require("../..");
|
|
14
14
|
const caller_1 = require("../../general/utils/caller");
|
|
15
|
-
const iFixedUtils_1 = require("../../general/utils/iFixedUtils");
|
|
16
15
|
const perpetuals_1 = require("./perpetuals");
|
|
17
|
-
const utils_1 = require("./utils");
|
|
18
16
|
class PerpetualsMarket extends caller_1.Caller {
|
|
19
17
|
// =========================================================================
|
|
20
18
|
// Constructor
|
|
@@ -25,17 +23,15 @@ class PerpetualsMarket extends caller_1.Caller {
|
|
|
25
23
|
super(config, "perpetuals");
|
|
26
24
|
this.marketData = marketData;
|
|
27
25
|
// TODO: move/add to account ?
|
|
28
|
-
this.
|
|
29
|
-
const { side, price,
|
|
30
|
-
|
|
26
|
+
this.getMaxOrderSize = (inputs) => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const { side, price, accountId, leverage } = inputs;
|
|
28
|
+
return this.fetchApi("account/max-order-size", {
|
|
31
29
|
side,
|
|
32
30
|
price,
|
|
33
31
|
leverage,
|
|
34
|
-
|
|
32
|
+
accountId,
|
|
35
33
|
marketId: this.marketId,
|
|
36
34
|
});
|
|
37
|
-
// TODO: perform calculation on endpoint ?
|
|
38
|
-
return Number(maxSize) * this.lotSize() * indexPrice;
|
|
39
35
|
});
|
|
40
36
|
// =========================================================================
|
|
41
37
|
// Calculations
|
|
@@ -45,7 +41,7 @@ class PerpetualsMarket extends caller_1.Caller {
|
|
|
45
41
|
};
|
|
46
42
|
this.nextFundingTimeMs = () => {
|
|
47
43
|
const fundingFrequencyMs = Number(this.marketParams.fundingFrequencyMs);
|
|
48
|
-
const lastFundingIntervalNumber = Math.floor(this.marketState.
|
|
44
|
+
const lastFundingIntervalNumber = Math.floor(this.marketState.fundingLastUpdateTimestamp / fundingFrequencyMs);
|
|
49
45
|
return (lastFundingIntervalNumber + 1) * fundingFrequencyMs;
|
|
50
46
|
};
|
|
51
47
|
// The funding rate as the difference between book and index TWAPs relative to the index price,
|
|
@@ -55,32 +51,12 @@ class PerpetualsMarket extends caller_1.Caller {
|
|
|
55
51
|
// To get the rate as a percentage, multiply the output by 100.
|
|
56
52
|
this.estimatedFundingRate = (inputs) => {
|
|
57
53
|
const { indexPrice } = inputs;
|
|
58
|
-
const premiumTwap =
|
|
54
|
+
const premiumTwap = this.marketState.premiumTwap;
|
|
59
55
|
const relativePremium = premiumTwap / indexPrice;
|
|
60
56
|
const periodAdjustment = Number(this.marketParams.fundingFrequencyMs) /
|
|
61
57
|
Number(this.marketParams.fundingPeriodMs);
|
|
62
58
|
return relativePremium * periodAdjustment;
|
|
63
59
|
};
|
|
64
|
-
this.priceToOrderPrice = (inputs) => {
|
|
65
|
-
const { price } = inputs;
|
|
66
|
-
const lotSize = this.marketParams.lotSize;
|
|
67
|
-
const tickSize = this.marketParams.tickSize;
|
|
68
|
-
return perpetuals_1.Perpetuals.priceToOrderPrice({
|
|
69
|
-
price,
|
|
70
|
-
lotSize,
|
|
71
|
-
tickSize,
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
this.orderPriceToPrice = (inputs) => {
|
|
75
|
-
const { orderPrice } = inputs;
|
|
76
|
-
const lotSize = this.marketParams.lotSize;
|
|
77
|
-
const tickSize = this.marketParams.tickSize;
|
|
78
|
-
return perpetuals_1.Perpetuals.orderPriceToPrice({
|
|
79
|
-
orderPrice,
|
|
80
|
-
lotSize,
|
|
81
|
-
tickSize,
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
60
|
this.calcCollateralUsedForOrder = (inputs) => {
|
|
85
61
|
const { leverage, orderData, indexPrice, collateralPrice } = inputs;
|
|
86
62
|
const imr = 1 / (leverage || 1);
|
|
@@ -95,8 +71,27 @@ class PerpetualsMarket extends caller_1.Caller {
|
|
|
95
71
|
collateral,
|
|
96
72
|
};
|
|
97
73
|
};
|
|
74
|
+
// =========================================================================
|
|
75
|
+
// Helpers
|
|
76
|
+
// =========================================================================
|
|
98
77
|
this.roundToValidPrice = (inputs) => {
|
|
99
|
-
|
|
78
|
+
const ticks = inputs.price / this.tickSize();
|
|
79
|
+
return ((inputs.floor
|
|
80
|
+
? Math.floor(ticks)
|
|
81
|
+
: inputs.ceil
|
|
82
|
+
? Math.ceil(ticks)
|
|
83
|
+
: Math.round(ticks)) * this.lotSize());
|
|
84
|
+
};
|
|
85
|
+
this.roundToValidPriceBigInt = (inputs) => {
|
|
86
|
+
const scaledPrice = Number(inputs.price * __1.Casting.Fixed.fixedOneN9);
|
|
87
|
+
// TODO: make sure this calc is safe
|
|
88
|
+
return ((BigInt(inputs.floor
|
|
89
|
+
? Math.floor(scaledPrice)
|
|
90
|
+
: inputs.ceil
|
|
91
|
+
? Math.ceil(scaledPrice)
|
|
92
|
+
: Math.round(scaledPrice)) /
|
|
93
|
+
this.marketParams.tickSize) *
|
|
94
|
+
this.marketParams.tickSize);
|
|
100
95
|
};
|
|
101
96
|
this.roundToValidSize = (inputs) => {
|
|
102
97
|
const lots = inputs.size / this.lotSize();
|
|
@@ -107,28 +102,30 @@ class PerpetualsMarket extends caller_1.Caller {
|
|
|
107
102
|
: Math.round(lots)) * this.lotSize());
|
|
108
103
|
};
|
|
109
104
|
this.roundToValidSizeBigInt = (inputs) => {
|
|
110
|
-
const
|
|
105
|
+
const scaledSize = Number(inputs.size * __1.Casting.Fixed.fixedOneN9);
|
|
111
106
|
// TODO: make sure this calc is safe
|
|
112
|
-
return (BigInt(inputs.floor
|
|
113
|
-
? Math.floor(
|
|
107
|
+
return ((BigInt(inputs.floor
|
|
108
|
+
? Math.floor(scaledSize)
|
|
114
109
|
: inputs.ceil
|
|
115
|
-
? Math.ceil(
|
|
116
|
-
: Math.round(
|
|
110
|
+
? Math.ceil(scaledSize)
|
|
111
|
+
: Math.round(scaledSize)) /
|
|
112
|
+
this.marketParams.lotSize) *
|
|
113
|
+
this.marketParams.lotSize);
|
|
117
114
|
};
|
|
118
115
|
this.emptyPosition = () => {
|
|
119
116
|
return {
|
|
120
117
|
marketId: this.marketId,
|
|
121
118
|
collateralCoinType: this.marketData.collateralCoinType,
|
|
122
|
-
collateral:
|
|
123
|
-
baseAssetAmount:
|
|
124
|
-
quoteAssetNotionalAmount:
|
|
119
|
+
collateral: 0,
|
|
120
|
+
baseAssetAmount: 0,
|
|
121
|
+
quoteAssetNotionalAmount: 0,
|
|
125
122
|
cumFundingRateLong: this.marketData.marketState.cumFundingRateLong,
|
|
126
123
|
cumFundingRateShort: this.marketData.marketState.cumFundingRateShort,
|
|
127
|
-
asksQuantity:
|
|
128
|
-
bidsQuantity:
|
|
124
|
+
asksQuantity: 0,
|
|
125
|
+
bidsQuantity: 0,
|
|
129
126
|
pendingOrders: [],
|
|
130
|
-
makerFee:
|
|
131
|
-
takerFee:
|
|
127
|
+
makerFee: 1, // 100%
|
|
128
|
+
takerFee: 1, // 100%
|
|
132
129
|
leverage: 1,
|
|
133
130
|
};
|
|
134
131
|
};
|
|
@@ -170,12 +167,12 @@ class PerpetualsMarket extends caller_1.Caller {
|
|
|
170
167
|
}
|
|
171
168
|
getPlaceMarketOrderPreview(inputs, abortSignal) {
|
|
172
169
|
return __awaiter(this, void 0, void 0, function* () {
|
|
173
|
-
return this.fetchApi("previews/place-market-order", Object.assign(Object.assign({}, inputs), { collateralCoinType: this.collateralCoinType,
|
|
170
|
+
return this.fetchApi("previews/place-market-order", Object.assign(Object.assign({}, inputs), { collateralCoinType: this.collateralCoinType, accountId: undefined }), abortSignal);
|
|
174
171
|
});
|
|
175
172
|
}
|
|
176
173
|
getPlaceLimitOrderPreview(inputs, abortSignal) {
|
|
177
174
|
return __awaiter(this, void 0, void 0, function* () {
|
|
178
|
-
return this.fetchApi("previews/place-limit-order", Object.assign(Object.assign({}, inputs), { collateralCoinType: this.collateralCoinType,
|
|
175
|
+
return this.fetchApi("previews/place-limit-order", Object.assign(Object.assign({}, inputs), { collateralCoinType: this.collateralCoinType, accountId: undefined }), abortSignal);
|
|
179
176
|
});
|
|
180
177
|
}
|
|
181
178
|
// =========================================================================
|
|
@@ -208,22 +205,13 @@ class PerpetualsMarket extends caller_1.Caller {
|
|
|
208
205
|
return perpetuals_1.Perpetuals.lotOrTickSizeToNumber(this.marketParams.tickSize);
|
|
209
206
|
}
|
|
210
207
|
maxLeverage() {
|
|
211
|
-
return
|
|
212
|
-
__1.Casting.IFixed.numberFromIFixed(this.marketParams.marginRatioInitial));
|
|
208
|
+
return 1 / this.marketParams.marginRatioInitial;
|
|
213
209
|
}
|
|
214
210
|
initialMarginRatio() {
|
|
215
|
-
return
|
|
211
|
+
return this.marketParams.marginRatioInitial;
|
|
216
212
|
}
|
|
217
213
|
maintenanceMarginRatio() {
|
|
218
|
-
return
|
|
219
|
-
}
|
|
220
|
-
// =========================================================================
|
|
221
|
-
// Helpers
|
|
222
|
-
// =========================================================================
|
|
223
|
-
orderPrice(inputs) {
|
|
224
|
-
const { orderId } = inputs;
|
|
225
|
-
const orderPrice = utils_1.PerpetualsOrderUtils.price(orderId);
|
|
226
|
-
return this.orderPriceToPrice({ orderPrice });
|
|
214
|
+
return this.marketParams.marginRatioMaintenance;
|
|
227
215
|
}
|
|
228
216
|
}
|
|
229
217
|
exports.PerpetualsMarket = PerpetualsMarket;
|