@d8x/perpetuals-sdk 0.7.6 → 0.7.7
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 +243 -134
- package/dist/cjs/accountTrade.js.map +1 -1
- package/dist/cjs/brokerTool.js +290 -144
- package/dist/cjs/brokerTool.js.map +1 -1
- package/dist/cjs/config/priceFeedConfig.json +1 -1
- package/dist/cjs/contracts/factories/ERC20__factory.js +12 -9
- package/dist/cjs/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js +12 -9
- package/dist/cjs/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js +12 -9
- package/dist/cjs/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js +12 -9
- package/dist/cjs/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js +12 -9
- package/dist/cjs/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/ShareToken__factory.js +12 -9
- package/dist/cjs/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js +12 -9
- package/dist/cjs/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/cjs/contracts/index.js +1 -1
- package/dist/cjs/d8XMath.js +66 -65
- 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 +137 -80
- package/dist/cjs/liquidatorTool.js.map +1 -1
- package/dist/cjs/liquidityProviderTool.js +65 -33
- package/dist/cjs/liquidityProviderTool.js.map +1 -1
- package/dist/cjs/marketData.js +978 -635
- package/dist/cjs/marketData.js.map +1 -1
- package/dist/cjs/nodeSDKTypes.js +22 -10
- package/dist/cjs/nodeSDKTypes.js.map +1 -1
- package/dist/cjs/orderReferrerTool.js +323 -200
- package/dist/cjs/orderReferrerTool.js.map +1 -1
- package/dist/cjs/perpetualDataHandler.js +550 -404
- package/dist/cjs/perpetualDataHandler.js.map +1 -1
- package/dist/cjs/perpetualEventHandler.js +190 -129
- package/dist/cjs/perpetualEventHandler.js.map +1 -1
- package/dist/cjs/priceFeeds.js +335 -223
- package/dist/cjs/priceFeeds.js.map +1 -1
- package/dist/cjs/traderDigests.js +23 -20
- package/dist/cjs/traderDigests.js.map +1 -1
- package/dist/cjs/traderInterface.js +87 -54
- package/dist/cjs/traderInterface.js.map +1 -1
- package/dist/cjs/triangulator.js +38 -34
- package/dist/cjs/triangulator.js.map +1 -1
- package/dist/cjs/utils.js +32 -18
- 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 +112 -78
- package/dist/cjs/writeAccessHandler.js.map +1 -1
- package/dist/esm/accountTrade.js +237 -126
- package/dist/esm/accountTrade.js.map +1 -1
- package/dist/esm/brokerTool.js +284 -136
- package/dist/esm/brokerTool.js.map +1 -1
- package/dist/esm/config/priceFeedConfig.json +1 -1
- package/dist/esm/contracts/factories/ERC20__factory.js +12 -8
- package/dist/esm/contracts/factories/ERC20__factory.js.map +1 -1
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js +12 -8
- package/dist/esm/contracts/factories/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js +12 -8
- package/dist/esm/contracts/factories/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js +12 -8
- package/dist/esm/contracts/factories/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js +12 -8
- package/dist/esm/contracts/factories/MockTokenSwap__factory.js.map +1 -1
- package/dist/esm/contracts/factories/ShareToken__factory.js +12 -8
- package/dist/esm/contracts/factories/ShareToken__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/IPerpetualManager__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBookFactory__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/LimitOrderBook__factory.js.map +1 -1
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js +12 -8
- package/dist/esm/contracts/factories/zkevmTestnet/ShareToken__factory.js.map +1 -1
- package/dist/esm/d8XMath.js +64 -63
- package/dist/esm/d8XMath.js.map +1 -1
- package/dist/esm/liquidatorTool.js +136 -77
- package/dist/esm/liquidatorTool.js.map +1 -1
- package/dist/esm/liquidityProviderTool.js +63 -29
- package/dist/esm/liquidityProviderTool.js.map +1 -1
- package/dist/esm/marketData.js +971 -626
- package/dist/esm/marketData.js.map +1 -1
- package/dist/esm/nodeSDKTypes.js +48 -36
- package/dist/esm/nodeSDKTypes.js.map +1 -1
- package/dist/esm/orderReferrerTool.js +319 -194
- package/dist/esm/orderReferrerTool.js.map +1 -1
- package/dist/esm/perpetualDataHandler.js +542 -394
- package/dist/esm/perpetualDataHandler.js.map +1 -1
- package/dist/esm/perpetualEventHandler.js +188 -126
- package/dist/esm/perpetualEventHandler.js.map +1 -1
- package/dist/esm/priceFeeds.js +332 -218
- package/dist/esm/priceFeeds.js.map +1 -1
- package/dist/esm/traderDigests.js +19 -15
- package/dist/esm/traderDigests.js.map +1 -1
- package/dist/esm/traderInterface.js +83 -48
- package/dist/esm/traderInterface.js.map +1 -1
- package/dist/esm/triangulator.js +39 -34
- package/dist/esm/triangulator.js.map +1 -1
- package/dist/esm/utils.js +30 -16
- 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 +105 -69
- package/dist/esm/writeAccessHandler.js.map +1 -1
- package/package.json +1 -1
- package/src/accountTrade.ts +6 -1
- package/src/config/priceFeedConfig.json +1 -1
- package/src/orderReferrerTool.ts +2 -0
- package/src/version.ts +1 -1
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var d8XMath_1 = require("./d8XMath");
|
|
5
|
+
var 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
|
-
|
|
11
|
+
var LiquidatorTool = /** @class */ (function (_super) {
|
|
12
|
+
tslib_1.__extends(LiquidatorTool, _super);
|
|
12
13
|
/**
|
|
13
14
|
* Constructs a LiquidatorTool instance for a given configuration and private key.
|
|
14
15
|
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
@@ -29,8 +30,8 @@ class LiquidatorTool extends writeAccessHandler_1.default {
|
|
|
29
30
|
*
|
|
30
31
|
* @param {string | Signer} signer Private key or ethers Signer of the account
|
|
31
32
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
function LiquidatorTool(config, signer) {
|
|
34
|
+
return _super.call(this, config, signer) || this;
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
36
37
|
* Liquidate a trader.
|
|
@@ -57,27 +58,37 @@ class LiquidatorTool extends writeAccessHandler_1.default {
|
|
|
57
58
|
*
|
|
58
59
|
* @returns Transaction object.
|
|
59
60
|
*/
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
61
|
+
LiquidatorTool.prototype.liquidateTrader = function (symbol, traderAddr, liquidatorAddr, priceFeedData, overrides) {
|
|
62
|
+
if (liquidatorAddr === void 0) { liquidatorAddr = ""; }
|
|
63
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
64
|
+
var perpID;
|
|
65
|
+
return tslib_1.__generator(this, function (_a) {
|
|
66
|
+
switch (_a.label) {
|
|
67
|
+
case 0:
|
|
68
|
+
// this operation spends gas, so signer is required
|
|
69
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
70
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
71
|
+
}
|
|
72
|
+
// liquidator is signer unless specified otherwise
|
|
73
|
+
if (liquidatorAddr == "") {
|
|
74
|
+
liquidatorAddr = this.traderAddr;
|
|
75
|
+
}
|
|
76
|
+
perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
77
|
+
if (!(priceFeedData == undefined)) return [3 /*break*/, 2];
|
|
78
|
+
return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
|
|
79
|
+
case 1:
|
|
80
|
+
priceFeedData = _a.sent();
|
|
81
|
+
_a.label = 2;
|
|
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
|
+
};
|
|
81
92
|
/**
|
|
82
93
|
* Check if the collateral of a trader is above the maintenance margin ("maintenance margin safe").
|
|
83
94
|
* If not, the position can be liquidated.
|
|
@@ -103,35 +114,45 @@ class LiquidatorTool extends writeAccessHandler_1.default {
|
|
|
103
114
|
* @returns {boolean} True if the trader is maintenance margin safe in the perpetual.
|
|
104
115
|
* False means that the trader's position can be liquidated.
|
|
105
116
|
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
117
|
+
LiquidatorTool.prototype.isMaintenanceMarginSafe = function (symbol, traderAddr, indexPrices, overrides) {
|
|
118
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
119
|
+
var idx_notional, perpID, obj, traderState, idx_maintenanceMgnRate, idx_marginAccountPositionBC, idx_collateralToQuoteConversion, idx_marginBalance, maintMgnRate, pos, marginbalance, coll2quote, base2collateral, threshold;
|
|
120
|
+
return tslib_1.__generator(this, function (_a) {
|
|
121
|
+
switch (_a.label) {
|
|
122
|
+
case 0:
|
|
123
|
+
if (this.proxyContract == null) {
|
|
124
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
125
|
+
}
|
|
126
|
+
idx_notional = 4;
|
|
127
|
+
perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
128
|
+
if (!(indexPrices == undefined)) return [3 /*break*/, 2];
|
|
129
|
+
return [4 /*yield*/, this.priceFeedGetter.fetchPricesForPerpetual(symbol)];
|
|
130
|
+
case 1:
|
|
131
|
+
obj = _a.sent();
|
|
132
|
+
indexPrices = [obj.idxPrices[0], obj.idxPrices[1]];
|
|
133
|
+
_a.label = 2;
|
|
134
|
+
case 2: return [4 /*yield*/, this.proxyContract.getTraderState(perpID, traderAddr, indexPrices.map(function (x) { return (0, d8XMath_1.floatToABK64x64)(x); }), overrides || {})];
|
|
135
|
+
case 3:
|
|
136
|
+
traderState = _a.sent();
|
|
137
|
+
if (traderState[idx_notional].eq(0)) {
|
|
138
|
+
// trader does not have open position
|
|
139
|
+
return [2 /*return*/, true];
|
|
140
|
+
}
|
|
141
|
+
idx_maintenanceMgnRate = 10;
|
|
142
|
+
idx_marginAccountPositionBC = 4;
|
|
143
|
+
idx_collateralToQuoteConversion = 9;
|
|
144
|
+
idx_marginBalance = 0;
|
|
145
|
+
maintMgnRate = (0, d8XMath_1.ABK64x64ToFloat)(traderState[idx_maintenanceMgnRate]);
|
|
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
|
+
};
|
|
135
156
|
/**
|
|
136
157
|
*
|
|
137
158
|
* @param perpetualId Perpetual id.
|
|
@@ -141,9 +162,16 @@ class LiquidatorTool extends writeAccessHandler_1.default {
|
|
|
141
162
|
* @param options E.g., Gas limit, fee.
|
|
142
163
|
* @ignore
|
|
143
164
|
*/
|
|
144
|
-
|
|
145
|
-
return
|
|
146
|
-
|
|
165
|
+
LiquidatorTool.prototype._liquidateByAMM = function (perpetualId, liquidatorAddr, traderAddr, priceFeedData, overrides) {
|
|
166
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
167
|
+
return tslib_1.__generator(this, function (_a) {
|
|
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
|
+
};
|
|
147
175
|
/**
|
|
148
176
|
* Total number of active accounts for this symbol, i.e. accounts with positions that are currently open.
|
|
149
177
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -164,14 +192,24 @@ class LiquidatorTool extends writeAccessHandler_1.default {
|
|
|
164
192
|
*
|
|
165
193
|
* @returns {number} Number of active accounts.
|
|
166
194
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
195
|
+
LiquidatorTool.prototype.countActivePerpAccounts = function (symbol, overrides) {
|
|
196
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
197
|
+
var perpID, numAccounts;
|
|
198
|
+
return tslib_1.__generator(this, function (_a) {
|
|
199
|
+
switch (_a.label) {
|
|
200
|
+
case 0:
|
|
201
|
+
if (this.proxyContract == null) {
|
|
202
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
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
|
+
};
|
|
175
213
|
/**
|
|
176
214
|
* Get addresses of active accounts by chunks.
|
|
177
215
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -194,13 +232,22 @@ class LiquidatorTool extends writeAccessHandler_1.default {
|
|
|
194
232
|
*
|
|
195
233
|
* @returns {string[]} Array of addresses at locations 'from', 'from'+1 ,..., 'to'-1.
|
|
196
234
|
*/
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
235
|
+
LiquidatorTool.prototype.getActiveAccountsByChunks = function (symbol, from, to, overrides) {
|
|
236
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
237
|
+
var perpID;
|
|
238
|
+
return tslib_1.__generator(this, function (_a) {
|
|
239
|
+
switch (_a.label) {
|
|
240
|
+
case 0:
|
|
241
|
+
if (this.proxyContract == null) {
|
|
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
|
+
};
|
|
204
251
|
/**
|
|
205
252
|
* Addresses for all the active accounts in this perpetual symbol.
|
|
206
253
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -221,11 +268,21 @@ class LiquidatorTool extends writeAccessHandler_1.default {
|
|
|
221
268
|
*
|
|
222
269
|
* @returns {string[]} Array of addresses.
|
|
223
270
|
*/
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
271
|
+
LiquidatorTool.prototype.getAllActiveAccounts = function (symbol, overrides) {
|
|
272
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
273
|
+
var totalAccounts;
|
|
274
|
+
return tslib_1.__generator(this, function (_a) {
|
|
275
|
+
switch (_a.label) {
|
|
276
|
+
case 0: return [4 /*yield*/, this.countActivePerpAccounts(symbol)];
|
|
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));
|
|
230
287
|
exports.default = LiquidatorTool;
|
|
231
288
|
//# 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,15 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
var tslib_1 = require("tslib");
|
|
4
|
+
var d8XMath_1 = require("./d8XMath");
|
|
5
|
+
var perpetualDataHandler_1 = tslib_1.__importDefault(require("./perpetualDataHandler"));
|
|
6
|
+
var 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
|
-
|
|
12
|
+
var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
13
|
+
tslib_1.__extends(LiquidityProviderTool, _super);
|
|
13
14
|
/**
|
|
14
15
|
* Constructor
|
|
15
16
|
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
@@ -30,8 +31,8 @@ class LiquidityProviderTool extends writeAccessHandler_1.default {
|
|
|
30
31
|
*
|
|
31
32
|
* @param {string | Signer} signer Private key or ethers Signer of the account
|
|
32
33
|
*/
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
function LiquidityProviderTool(config, signer) {
|
|
35
|
+
return _super.call(this, config, signer) || this;
|
|
35
36
|
}
|
|
36
37
|
/**
|
|
37
38
|
* Add liquidity to the PnL participant fund. The address gets pool shares in return.
|
|
@@ -55,15 +56,25 @@ class LiquidityProviderTool extends writeAccessHandler_1.default {
|
|
|
55
56
|
*
|
|
56
57
|
* @return Transaction object
|
|
57
58
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
LiquidityProviderTool.prototype.addLiquidity = function (poolSymbolName, amountCC, overrides) {
|
|
60
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
61
|
+
var poolId, decimals, tx;
|
|
62
|
+
return tslib_1.__generator(this, function (_a) {
|
|
63
|
+
switch (_a.label) {
|
|
64
|
+
case 0:
|
|
65
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
66
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
67
|
+
}
|
|
68
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
69
|
+
decimals = this.getMarginTokenDecimalsFromSymbol(poolSymbolName);
|
|
70
|
+
return [4 /*yield*/, this.proxyContract.addLiquidity(poolId, (0, d8XMath_1.floatToDecN)(amountCC, decimals), overrides || { gasLimit: this.gasLimit })];
|
|
71
|
+
case 1:
|
|
72
|
+
tx = _a.sent();
|
|
73
|
+
return [2 /*return*/, tx];
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
};
|
|
67
78
|
/**
|
|
68
79
|
* Initiates a liquidity withdrawal from the pool
|
|
69
80
|
* It triggers a time-delayed unlocking of the given number of pool shares.
|
|
@@ -87,14 +98,24 @@ class LiquidityProviderTool extends writeAccessHandler_1.default {
|
|
|
87
98
|
*
|
|
88
99
|
* @return Transaction object.
|
|
89
100
|
*/
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
101
|
+
LiquidityProviderTool.prototype.initiateLiquidityWithdrawal = function (poolSymbolName, amountPoolShares, overrides) {
|
|
102
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
103
|
+
var poolId, tx;
|
|
104
|
+
return tslib_1.__generator(this, function (_a) {
|
|
105
|
+
switch (_a.label) {
|
|
106
|
+
case 0:
|
|
107
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
108
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
109
|
+
}
|
|
110
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
111
|
+
return [4 /*yield*/, this.proxyContract.withdrawLiquidity(poolId, (0, d8XMath_1.floatToDec18)(amountPoolShares), overrides || { gasLimit: this.gasLimit })];
|
|
112
|
+
case 1:
|
|
113
|
+
tx = _a.sent();
|
|
114
|
+
return [2 /*return*/, tx];
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
};
|
|
98
119
|
/**
|
|
99
120
|
* Withdraws as much liquidity as there is available after a call to initiateLiquidityWithdrawal.
|
|
100
121
|
* The address loses pool shares in return.
|
|
@@ -116,14 +137,25 @@ class LiquidityProviderTool extends writeAccessHandler_1.default {
|
|
|
116
137
|
*
|
|
117
138
|
* @returns Transaction object.
|
|
118
139
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
140
|
+
LiquidityProviderTool.prototype.executeLiquidityWithdrawal = function (poolSymbolName, overrides) {
|
|
141
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
142
|
+
var poolId, tx;
|
|
143
|
+
return tslib_1.__generator(this, function (_a) {
|
|
144
|
+
switch (_a.label) {
|
|
145
|
+
case 0:
|
|
146
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
147
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
148
|
+
}
|
|
149
|
+
poolId = perpetualDataHandler_1.default._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
150
|
+
return [4 /*yield*/, this.proxyContract.executeLiquidityWithdrawal(poolId, this.traderAddr, overrides || { gasLimit: this.gasLimit })];
|
|
151
|
+
case 1:
|
|
152
|
+
tx = _a.sent();
|
|
153
|
+
return [2 /*return*/, tx];
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
return LiquidityProviderTool;
|
|
159
|
+
}(writeAccessHandler_1.default));
|
|
128
160
|
exports.default = LiquidityProviderTool;
|
|
129
161
|
//# 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,qCAAsD;AAEtD,wFAA0D;AAC1D,oFAAsD;AACtD;;;;GAIG;AACH;IAAmD,iDAAkB;IACnE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,+BAAmB,MAAqB,EAAE,MAAuB;eAC/D,kBAAM,MAAM,EAAE,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACU,4CAAY,GAAzB,UACE,cAAsB,EACtB,QAAgB,EAChB,SAAqB;;;;;;wBAErB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;4BACrD,MAAM,KAAK,CAAC,qEAAqE,CAAC,CAAC;yBACpF;wBACG,MAAM,GAAG,8BAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;wBACzF,QAAQ,GAAG,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC;wBAC5D,qBAAM,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,EAAA;;wBAJG,EAAE,GAAG,SAIR;wBACD,sBAAO,EAAE,EAAC;;;;KACX;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,2DAA2B,GAAxC,UACE,cAAsB,EACtB,gBAAwB,EACxB,SAAqB;;;;;;wBAErB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;4BACrD,MAAM,KAAK,CAAC,qEAAqE,CAAC,CAAC;yBACpF;wBACG,MAAM,GAAG,8BAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;wBACpF,qBAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CACjD,MAAM,EACN,IAAA,sBAAY,EAAC,gBAAgB,CAAC,EAC9B,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CACzC,EAAA;;wBAJG,EAAE,GAAG,SAIR;wBACD,sBAAO,EAAE,EAAC;;;;KACX;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,0DAA0B,GAAvC,UAAwC,cAAsB,EAAE,SAAqB;;;;;;wBACnF,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;4BACrD,MAAM,KAAK,CAAC,qEAAqE,CAAC,CAAC;yBACpF;wBACG,MAAM,GAAG,8BAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;wBACpF,qBAAM,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAC1D,MAAM,EACN,IAAI,CAAC,UAAU,EACf,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CACzC,EAAA;;wBAJG,EAAE,GAAG,SAIR;wBACD,sBAAO,EAAE,EAAC;;;;KACX;IACH,4BAAC;AAAD,CAAC,AA1ID,CAAmD,4BAAkB,GA0IpE"}
|