@d8x/perpetuals-sdk 0.7.5 → 0.7.6
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/cjs/accountTrade.js +134 -239
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.js +144 -290
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/contracts/factories/ERC20__factory.js +9 -12
- package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +9 -12
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +9 -12
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +9 -12
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +9 -12
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/ShareToken__factory.js +9 -12
- package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js +9 -12
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/index.js +1 -1
- package/dist/cjs/d8XMath.d.ts +7 -0
- package/dist/cjs/d8XMath.js +81 -61
- package/dist/cjs/d8XMath.js.map +1 -1
- package/dist/cjs/index.js +11 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/liquidatorTool.js +80 -137
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/liquidityProviderTool.js +33 -64
- package/dist/cjs/liquidityProviderTool.js.map +1 -1
- package/dist/cjs/marketData.js +635 -978
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.d.ts +1 -0
- package/dist/cjs/nodeSDKTypes.js +10 -22
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/orderReferrerTool.js +200 -321
- package/dist/cjs/orderReferrerTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.d.ts +11 -0
- package/dist/cjs/perpetualDataHandler.js +422 -535
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.js +129 -190
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +223 -335
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/traderDigests.js +20 -23
- package/dist/cjs/traderDigests.js.map +1 -1
- package/dist/cjs/traderInterface.js +54 -87
- package/dist/cjs/traderInterface.js.map +1 -1
- package/dist/cjs/triangulator.js +34 -38
- package/dist/cjs/triangulator.js.map +1 -1
- package/dist/cjs/utils.js +18 -32
- package/dist/cjs/utils.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/writeAccessHandler.js +78 -112
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/accountTrade.js +126 -233
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.js +136 -284
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/contracts/factories/ERC20__factory.js +8 -12
- package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +8 -12
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +8 -12
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js +8 -12
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js +8 -12
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/esm/contracts/factories/ShareToken__factory.js +8 -12
- package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js +8 -12
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/esm/d8XMath.d.ts +7 -0
- package/dist/esm/d8XMath.js +77 -58
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.js +77 -136
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/liquidityProviderTool.js +30 -63
- package/dist/esm/liquidityProviderTool.js.map +1 -1
- package/dist/esm/marketData.js +626 -971
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.d.ts +1 -0
- package/dist/esm/nodeSDKTypes.js +36 -48
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/orderReferrerTool.js +194 -317
- package/dist/esm/orderReferrerTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.d.ts +11 -0
- package/dist/esm/perpetualDataHandler.js +413 -528
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.js +126 -188
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +218 -332
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/traderDigests.js +15 -19
- package/dist/esm/traderDigests.js.map +1 -1
- package/dist/esm/traderInterface.js +48 -83
- package/dist/esm/traderInterface.js.map +1 -1
- package/dist/esm/triangulator.js +34 -39
- package/dist/esm/triangulator.js.map +1 -1
- package/dist/esm/utils.js +16 -30
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/writeAccessHandler.js +70 -106
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/package.json +1 -1
- package/src/d8XMath.ts +21 -0
- package/src/liquidityProviderTool.ts +5 -4
- package/src/nodeSDKTypes.ts +1 -0
- package/src/perpetualDataHandler.ts +27 -0
- package/src/version.ts +1 -1
- package/src/writeAccessHandler.ts +3 -3
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const d8XMath_1 = require("./d8XMath");
|
|
5
|
+
const writeAccessHandler_1 = tslib_1.__importDefault(require("./writeAccessHandler"));
|
|
6
6
|
/**
|
|
7
7
|
* Functions to liquidate traders. This class requires a private key
|
|
8
8
|
* and executes smart-contract interactions that require gas-payments.
|
|
9
9
|
* @extends WriteAccessHandler
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
tslib_1.__extends(LiquidatorTool, _super);
|
|
11
|
+
class LiquidatorTool extends writeAccessHandler_1.default {
|
|
13
12
|
/**
|
|
14
13
|
* Constructs a LiquidatorTool instance for a given configuration and private key.
|
|
15
14
|
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
@@ -30,8 +29,8 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
30
29
|
*
|
|
31
30
|
* @param {string | Signer} signer Private key or ethers Signer of the account
|
|
32
31
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
constructor(config, signer) {
|
|
33
|
+
super(config, signer);
|
|
35
34
|
}
|
|
36
35
|
/**
|
|
37
36
|
* Liquidate a trader.
|
|
@@ -58,37 +57,27 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
58
57
|
*
|
|
59
58
|
* @returns Transaction object.
|
|
60
59
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
case 2:
|
|
83
|
-
if (!overrides || overrides.value == undefined) {
|
|
84
|
-
overrides = tslib_1.__assign({ value: priceFeedData.timestamps.length * this.PRICE_UPDATE_FEE_GWEI }, overrides);
|
|
85
|
-
}
|
|
86
|
-
return [4 /*yield*/, this._liquidateByAMM(perpID, liquidatorAddr, traderAddr, priceFeedData, overrides)];
|
|
87
|
-
case 3: return [2 /*return*/, _a.sent()];
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
};
|
|
60
|
+
async liquidateTrader(symbol, traderAddr, liquidatorAddr = "", priceFeedData, overrides) {
|
|
61
|
+
// this operation spends gas, so signer is required
|
|
62
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
63
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
64
|
+
}
|
|
65
|
+
// liquidator is signer unless specified otherwise
|
|
66
|
+
if (liquidatorAddr == "") {
|
|
67
|
+
liquidatorAddr = this.traderAddr;
|
|
68
|
+
}
|
|
69
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
70
|
+
if (priceFeedData == undefined) {
|
|
71
|
+
priceFeedData = await this.fetchLatestFeedPriceInfo(symbol);
|
|
72
|
+
}
|
|
73
|
+
if (!overrides || overrides.value == undefined) {
|
|
74
|
+
overrides = {
|
|
75
|
+
value: priceFeedData.timestamps.length * this.PRICE_UPDATE_FEE_GWEI,
|
|
76
|
+
...overrides,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return await this._liquidateByAMM(perpID, liquidatorAddr, traderAddr, priceFeedData, overrides);
|
|
80
|
+
}
|
|
92
81
|
/**
|
|
93
82
|
* Check if the collateral of a trader is above the maintenance margin ("maintenance margin safe").
|
|
94
83
|
* If not, the position can be liquidated.
|
|
@@ -114,45 +103,35 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
114
103
|
* @returns {boolean} True if the trader is maintenance margin safe in the perpetual.
|
|
115
104
|
* False means that the trader's position can be liquidated.
|
|
116
105
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
pos = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_marginAccountPositionBC]);
|
|
147
|
-
marginbalance = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_marginBalance]);
|
|
148
|
-
coll2quote = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_collateralToQuoteConversion]);
|
|
149
|
-
base2collateral = indexPrices[0] / coll2quote;
|
|
150
|
-
threshold = Math.abs(pos * base2collateral * maintMgnRate);
|
|
151
|
-
return [2 /*return*/, marginbalance >= threshold];
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
};
|
|
106
|
+
async isMaintenanceMarginSafe(symbol, traderAddr, indexPrices, overrides) {
|
|
107
|
+
if (this.proxyContract == null) {
|
|
108
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
109
|
+
}
|
|
110
|
+
const idx_notional = 4;
|
|
111
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
112
|
+
if (indexPrices == undefined) {
|
|
113
|
+
// fetch from API
|
|
114
|
+
let obj = await this.priceFeedGetter.fetchPricesForPerpetual(symbol);
|
|
115
|
+
indexPrices = [obj.idxPrices[0], obj.idxPrices[1]];
|
|
116
|
+
}
|
|
117
|
+
let traderState = await this.proxyContract.getTraderState(perpID, traderAddr, indexPrices.map((x) => (0, d8XMath_1.floatToABK64x64)(x)), overrides || {});
|
|
118
|
+
if (traderState[idx_notional].eq(0)) {
|
|
119
|
+
// trader does not have open position
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
// calculate margin from traderstate
|
|
123
|
+
const idx_maintenanceMgnRate = 10;
|
|
124
|
+
const idx_marginAccountPositionBC = 4;
|
|
125
|
+
const idx_collateralToQuoteConversion = 9;
|
|
126
|
+
const idx_marginBalance = 0;
|
|
127
|
+
const maintMgnRate = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_maintenanceMgnRate]);
|
|
128
|
+
const pos = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_marginAccountPositionBC]);
|
|
129
|
+
const marginbalance = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_marginBalance]);
|
|
130
|
+
const coll2quote = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_collateralToQuoteConversion]);
|
|
131
|
+
const base2collateral = indexPrices[0] / coll2quote;
|
|
132
|
+
const threshold = Math.abs(pos * base2collateral * maintMgnRate);
|
|
133
|
+
return marginbalance >= threshold;
|
|
134
|
+
}
|
|
156
135
|
/**
|
|
157
136
|
*
|
|
158
137
|
* @param perpetualId Perpetual id.
|
|
@@ -162,16 +141,9 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
162
141
|
* @param options E.g., Gas limit, fee.
|
|
163
142
|
* @ignore
|
|
164
143
|
*/
|
|
165
|
-
|
|
166
|
-
return
|
|
167
|
-
|
|
168
|
-
switch (_a.label) {
|
|
169
|
-
case 0: return [4 /*yield*/, this.proxyContract.liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, priceFeedData.priceFeedVaas, priceFeedData.timestamps, overrides)];
|
|
170
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
};
|
|
144
|
+
async _liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, priceFeedData, overrides) {
|
|
145
|
+
return await this.proxyContract.liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, priceFeedData.priceFeedVaas, priceFeedData.timestamps, overrides);
|
|
146
|
+
}
|
|
175
147
|
/**
|
|
176
148
|
* Total number of active accounts for this symbol, i.e. accounts with positions that are currently open.
|
|
177
149
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -192,24 +164,14 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
192
164
|
*
|
|
193
165
|
* @returns {number} Number of active accounts.
|
|
194
166
|
*/
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
205
|
-
return [4 /*yield*/, this.proxyContract.countActivePerpAccounts(perpID, overrides || {})];
|
|
206
|
-
case 1:
|
|
207
|
-
numAccounts = _a.sent();
|
|
208
|
-
return [2 /*return*/, Number(numAccounts)];
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
};
|
|
167
|
+
async countActivePerpAccounts(symbol, overrides) {
|
|
168
|
+
if (this.proxyContract == null) {
|
|
169
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
170
|
+
}
|
|
171
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
172
|
+
let numAccounts = await this.proxyContract.countActivePerpAccounts(perpID, overrides || {});
|
|
173
|
+
return Number(numAccounts);
|
|
174
|
+
}
|
|
213
175
|
/**
|
|
214
176
|
* Get addresses of active accounts by chunks.
|
|
215
177
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -232,22 +194,13 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
232
194
|
*
|
|
233
195
|
* @returns {string[]} Array of addresses at locations 'from', 'from'+1 ,..., 'to'-1.
|
|
234
196
|
*/
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
243
|
-
}
|
|
244
|
-
perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
245
|
-
return [4 /*yield*/, this.proxyContract.getActivePerpAccountsByChunks(perpID, from, to, overrides || {})];
|
|
246
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
247
|
-
}
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
};
|
|
197
|
+
async getActiveAccountsByChunks(symbol, from, to, overrides) {
|
|
198
|
+
if (this.proxyContract == null) {
|
|
199
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
200
|
+
}
|
|
201
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
202
|
+
return await this.proxyContract.getActivePerpAccountsByChunks(perpID, from, to, overrides || {});
|
|
203
|
+
}
|
|
251
204
|
/**
|
|
252
205
|
* Addresses for all the active accounts in this perpetual symbol.
|
|
253
206
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -268,21 +221,11 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
268
221
|
*
|
|
269
222
|
* @returns {string[]} Array of addresses.
|
|
270
223
|
*/
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
case 1:
|
|
278
|
-
totalAccounts = _a.sent();
|
|
279
|
-
return [4 /*yield*/, this.getActiveAccountsByChunks(symbol, 0, totalAccounts, overrides)];
|
|
280
|
-
case 2: return [2 /*return*/, _a.sent()];
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
};
|
|
285
|
-
return LiquidatorTool;
|
|
286
|
-
}(writeAccessHandler_1.default));
|
|
224
|
+
async getAllActiveAccounts(symbol, overrides) {
|
|
225
|
+
// checks are done inside the intermediate functions
|
|
226
|
+
let totalAccounts = await this.countActivePerpAccounts(symbol);
|
|
227
|
+
return await this.getActiveAccountsByChunks(symbol, 0, totalAccounts, overrides);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
287
230
|
exports.default = LiquidatorTool;
|
|
288
231
|
//# sourceMappingURL=liquidatorTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liquidatorTool.js","sourceRoot":"","sources":["../../src/liquidatorTool.ts"],"names":[],"mappings":";;;AAGA,
|
|
1
|
+
{"version":3,"file":"liquidatorTool.js","sourceRoot":"","sources":["../../src/liquidatorTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const d8XMath_1 = require("./d8XMath");
|
|
5
|
+
const perpetualDataHandler_1 = tslib_1.__importDefault(require("./perpetualDataHandler"));
|
|
6
|
+
const writeAccessHandler_1 = tslib_1.__importDefault(require("./writeAccessHandler"));
|
|
7
7
|
/**
|
|
8
8
|
* Functions to provide liquidity. This class requires a private key and executes
|
|
9
9
|
* smart-contract interactions that require gas-payments.
|
|
10
10
|
* @extends WriteAccessHandler
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
|
-
tslib_1.__extends(LiquidityProviderTool, _super);
|
|
12
|
+
class LiquidityProviderTool extends writeAccessHandler_1.default {
|
|
14
13
|
/**
|
|
15
14
|
* Constructor
|
|
16
15
|
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
@@ -31,8 +30,8 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
31
30
|
*
|
|
32
31
|
* @param {string | Signer} signer Private key or ethers Signer of the account
|
|
33
32
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
constructor(config, signer) {
|
|
34
|
+
super(config, signer);
|
|
36
35
|
}
|
|
37
36
|
/**
|
|
38
37
|
* Add liquidity to the PnL participant fund. The address gets pool shares in return.
|
|
@@ -56,24 +55,15 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
56
55
|
*
|
|
57
56
|
* @return Transaction object
|
|
58
57
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
69
|
-
return [4 /*yield*/, this.proxyContract.addLiquidity(poolId, (0, d8XMath_1.floatToDec18)(amountCC), overrides || { gasLimit: this.gasLimit })];
|
|
70
|
-
case 1:
|
|
71
|
-
tx = _a.sent();
|
|
72
|
-
return [2 /*return*/, tx];
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
};
|
|
58
|
+
async addLiquidity(poolSymbolName, amountCC, overrides) {
|
|
59
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
60
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
61
|
+
}
|
|
62
|
+
let poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
63
|
+
let decimals = this.getMarginTokenDecimalsFromSymbol(poolSymbolName);
|
|
64
|
+
let tx = await this.proxyContract.addLiquidity(poolId, (0, d8XMath_1.floatToDecN)(amountCC, decimals), overrides || { gasLimit: this.gasLimit });
|
|
65
|
+
return tx;
|
|
66
|
+
}
|
|
77
67
|
/**
|
|
78
68
|
* Initiates a liquidity withdrawal from the pool
|
|
79
69
|
* It triggers a time-delayed unlocking of the given number of pool shares.
|
|
@@ -97,24 +87,14 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
97
87
|
*
|
|
98
88
|
* @return Transaction object.
|
|
99
89
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
110
|
-
return [4 /*yield*/, this.proxyContract.withdrawLiquidity(poolId, (0, d8XMath_1.floatToDec18)(amountPoolShares), overrides || { gasLimit: this.gasLimit })];
|
|
111
|
-
case 1:
|
|
112
|
-
tx = _a.sent();
|
|
113
|
-
return [2 /*return*/, tx];
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
};
|
|
90
|
+
async initiateLiquidityWithdrawal(poolSymbolName, amountPoolShares, overrides) {
|
|
91
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
92
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
93
|
+
}
|
|
94
|
+
let poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
95
|
+
let tx = await this.proxyContract.withdrawLiquidity(poolId, (0, d8XMath_1.floatToDec18)(amountPoolShares), overrides || { gasLimit: this.gasLimit });
|
|
96
|
+
return tx;
|
|
97
|
+
}
|
|
118
98
|
/**
|
|
119
99
|
* Withdraws as much liquidity as there is available after a call to initiateLiquidityWithdrawal.
|
|
120
100
|
* The address loses pool shares in return.
|
|
@@ -136,25 +116,14 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
136
116
|
*
|
|
137
117
|
* @returns Transaction object.
|
|
138
118
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
149
|
-
return [4 /*yield*/, this.proxyContract.executeLiquidityWithdrawal(poolId, this.traderAddr, overrides || { gasLimit: this.gasLimit })];
|
|
150
|
-
case 1:
|
|
151
|
-
tx = _a.sent();
|
|
152
|
-
return [2 /*return*/, tx];
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
};
|
|
157
|
-
return LiquidityProviderTool;
|
|
158
|
-
}(writeAccessHandler_1.default));
|
|
119
|
+
async executeLiquidityWithdrawal(poolSymbolName, overrides) {
|
|
120
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
121
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
122
|
+
}
|
|
123
|
+
let poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
124
|
+
let tx = await this.proxyContract.executeLiquidityWithdrawal(poolId, this.traderAddr, overrides || { gasLimit: this.gasLimit });
|
|
125
|
+
return tx;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
159
128
|
exports.default = LiquidityProviderTool;
|
|
160
129
|
//# sourceMappingURL=liquidityProviderTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liquidityProviderTool.js","sourceRoot":"","sources":["../../src/liquidityProviderTool.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"liquidityProviderTool.js","sourceRoot":"","sources":["../../src/liquidityProviderTool.ts"],"names":[],"mappings":";;;AAEA,uCAAsD;AAEtD,0FAA0D;AAC1D,sFAAsD;AACtD;;;;GAIG;AACH,MAAqB,qBAAsB,SAAQ,4BAAkB;IACnE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,YAAmB,MAAqB,EAAE,MAAuB;QAC/D,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,KAAK,CAAC,YAAY,CACvB,cAAsB,EACtB,QAAgB,EAChB,SAAqB;QAErB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrD,MAAM,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACpF;QACD,IAAI,MAAM,GAAG,8BAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7F,IAAI,QAAQ,GAAG,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC;QACrE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAC5C,MAAM,EACN,IAAA,qBAAW,EAAC,QAAQ,EAAE,QAAS,CAAC,EAChC,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CACzC,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,KAAK,CAAC,2BAA2B,CACtC,cAAsB,EACtB,gBAAwB,EACxB,SAAqB;QAErB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrD,MAAM,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACpF;QACD,IAAI,MAAM,GAAG,8BAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7F,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CACjD,MAAM,EACN,IAAA,sBAAY,EAAC,gBAAgB,CAAC,EAC9B,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CACzC,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,KAAK,CAAC,0BAA0B,CAAC,cAAsB,EAAE,SAAqB;QACnF,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrD,MAAM,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACpF;QACD,IAAI,MAAM,GAAG,8BAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7F,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAC1D,MAAM,EACN,IAAI,CAAC,UAAU,EACf,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CACzC,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA1ID,wCA0IC"}
|