@d8x/perpetuals-sdk 0.7.4 → 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.d.ts +8 -1
- package/dist/cjs/marketData.js +641 -949
- 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.d.ts +8 -1
- package/dist/esm/marketData.js +632 -942
- 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/marketData.ts +26 -0
- 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,4 +1,3 @@
|
|
|
1
|
-
import { __assign, __awaiter, __extends, __generator } from "tslib";
|
|
2
1
|
import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
|
|
3
2
|
import WriteAccessHandler from "./writeAccessHandler";
|
|
4
3
|
/**
|
|
@@ -6,8 +5,7 @@ import WriteAccessHandler from "./writeAccessHandler";
|
|
|
6
5
|
* and executes smart-contract interactions that require gas-payments.
|
|
7
6
|
* @extends WriteAccessHandler
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
__extends(LiquidatorTool, _super);
|
|
8
|
+
export default class LiquidatorTool extends WriteAccessHandler {
|
|
11
9
|
/**
|
|
12
10
|
* Constructs a LiquidatorTool instance for a given configuration and private key.
|
|
13
11
|
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
@@ -28,8 +26,8 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
28
26
|
*
|
|
29
27
|
* @param {string | Signer} signer Private key or ethers Signer of the account
|
|
30
28
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
constructor(config, signer) {
|
|
30
|
+
super(config, signer);
|
|
33
31
|
}
|
|
34
32
|
/**
|
|
35
33
|
* Liquidate a trader.
|
|
@@ -56,37 +54,27 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
56
54
|
*
|
|
57
55
|
* @returns Transaction object.
|
|
58
56
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
case 2:
|
|
81
|
-
if (!overrides || overrides.value == undefined) {
|
|
82
|
-
overrides = __assign({ value: priceFeedData.timestamps.length * this.PRICE_UPDATE_FEE_GWEI }, overrides);
|
|
83
|
-
}
|
|
84
|
-
return [4 /*yield*/, this._liquidateByAMM(perpID, liquidatorAddr, traderAddr, priceFeedData, overrides)];
|
|
85
|
-
case 3: return [2 /*return*/, _a.sent()];
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
};
|
|
57
|
+
async liquidateTrader(symbol, traderAddr, liquidatorAddr = "", priceFeedData, overrides) {
|
|
58
|
+
// this operation spends gas, so signer is required
|
|
59
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
60
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
61
|
+
}
|
|
62
|
+
// liquidator is signer unless specified otherwise
|
|
63
|
+
if (liquidatorAddr == "") {
|
|
64
|
+
liquidatorAddr = this.traderAddr;
|
|
65
|
+
}
|
|
66
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
67
|
+
if (priceFeedData == undefined) {
|
|
68
|
+
priceFeedData = await this.fetchLatestFeedPriceInfo(symbol);
|
|
69
|
+
}
|
|
70
|
+
if (!overrides || overrides.value == undefined) {
|
|
71
|
+
overrides = {
|
|
72
|
+
value: priceFeedData.timestamps.length * this.PRICE_UPDATE_FEE_GWEI,
|
|
73
|
+
...overrides,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return await this._liquidateByAMM(perpID, liquidatorAddr, traderAddr, priceFeedData, overrides);
|
|
77
|
+
}
|
|
90
78
|
/**
|
|
91
79
|
* Check if the collateral of a trader is above the maintenance margin ("maintenance margin safe").
|
|
92
80
|
* If not, the position can be liquidated.
|
|
@@ -112,45 +100,35 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
112
100
|
* @returns {boolean} True if the trader is maintenance margin safe in the perpetual.
|
|
113
101
|
* False means that the trader's position can be liquidated.
|
|
114
102
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
pos = ABK64x64ToFloat(traderState[idx_marginAccountPositionBC]);
|
|
145
|
-
marginbalance = ABK64x64ToFloat(traderState[idx_marginBalance]);
|
|
146
|
-
coll2quote = ABK64x64ToFloat(traderState[idx_collateralToQuoteConversion]);
|
|
147
|
-
base2collateral = indexPrices[0] / coll2quote;
|
|
148
|
-
threshold = Math.abs(pos * base2collateral * maintMgnRate);
|
|
149
|
-
return [2 /*return*/, marginbalance >= threshold];
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
};
|
|
103
|
+
async isMaintenanceMarginSafe(symbol, traderAddr, indexPrices, overrides) {
|
|
104
|
+
if (this.proxyContract == null) {
|
|
105
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
106
|
+
}
|
|
107
|
+
const idx_notional = 4;
|
|
108
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
109
|
+
if (indexPrices == undefined) {
|
|
110
|
+
// fetch from API
|
|
111
|
+
let obj = await this.priceFeedGetter.fetchPricesForPerpetual(symbol);
|
|
112
|
+
indexPrices = [obj.idxPrices[0], obj.idxPrices[1]];
|
|
113
|
+
}
|
|
114
|
+
let traderState = await this.proxyContract.getTraderState(perpID, traderAddr, indexPrices.map((x) => floatToABK64x64(x)), overrides || {});
|
|
115
|
+
if (traderState[idx_notional].eq(0)) {
|
|
116
|
+
// trader does not have open position
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
// calculate margin from traderstate
|
|
120
|
+
const idx_maintenanceMgnRate = 10;
|
|
121
|
+
const idx_marginAccountPositionBC = 4;
|
|
122
|
+
const idx_collateralToQuoteConversion = 9;
|
|
123
|
+
const idx_marginBalance = 0;
|
|
124
|
+
const maintMgnRate = ABK64x64ToFloat(traderState[idx_maintenanceMgnRate]);
|
|
125
|
+
const pos = ABK64x64ToFloat(traderState[idx_marginAccountPositionBC]);
|
|
126
|
+
const marginbalance = ABK64x64ToFloat(traderState[idx_marginBalance]);
|
|
127
|
+
const coll2quote = ABK64x64ToFloat(traderState[idx_collateralToQuoteConversion]);
|
|
128
|
+
const base2collateral = indexPrices[0] / coll2quote;
|
|
129
|
+
const threshold = Math.abs(pos * base2collateral * maintMgnRate);
|
|
130
|
+
return marginbalance >= threshold;
|
|
131
|
+
}
|
|
154
132
|
/**
|
|
155
133
|
*
|
|
156
134
|
* @param perpetualId Perpetual id.
|
|
@@ -160,16 +138,9 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
160
138
|
* @param options E.g., Gas limit, fee.
|
|
161
139
|
* @ignore
|
|
162
140
|
*/
|
|
163
|
-
|
|
164
|
-
return
|
|
165
|
-
|
|
166
|
-
switch (_a.label) {
|
|
167
|
-
case 0: return [4 /*yield*/, this.proxyContract.liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, priceFeedData.priceFeedVaas, priceFeedData.timestamps, overrides)];
|
|
168
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
};
|
|
141
|
+
async _liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, priceFeedData, overrides) {
|
|
142
|
+
return await this.proxyContract.liquidateByAMM(perpetualId, liquidatorAddr, traderAddr, priceFeedData.priceFeedVaas, priceFeedData.timestamps, overrides);
|
|
143
|
+
}
|
|
173
144
|
/**
|
|
174
145
|
* Total number of active accounts for this symbol, i.e. accounts with positions that are currently open.
|
|
175
146
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -190,24 +161,14 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
190
161
|
*
|
|
191
162
|
* @returns {number} Number of active accounts.
|
|
192
163
|
*/
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
203
|
-
return [4 /*yield*/, this.proxyContract.countActivePerpAccounts(perpID, overrides || {})];
|
|
204
|
-
case 1:
|
|
205
|
-
numAccounts = _a.sent();
|
|
206
|
-
return [2 /*return*/, Number(numAccounts)];
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
});
|
|
210
|
-
};
|
|
164
|
+
async countActivePerpAccounts(symbol, overrides) {
|
|
165
|
+
if (this.proxyContract == null) {
|
|
166
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
167
|
+
}
|
|
168
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
169
|
+
let numAccounts = await this.proxyContract.countActivePerpAccounts(perpID, overrides || {});
|
|
170
|
+
return Number(numAccounts);
|
|
171
|
+
}
|
|
211
172
|
/**
|
|
212
173
|
* Get addresses of active accounts by chunks.
|
|
213
174
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -230,22 +191,13 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
230
191
|
*
|
|
231
192
|
* @returns {string[]} Array of addresses at locations 'from', 'from'+1 ,..., 'to'-1.
|
|
232
193
|
*/
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
241
|
-
}
|
|
242
|
-
perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
243
|
-
return [4 /*yield*/, this.proxyContract.getActivePerpAccountsByChunks(perpID, from, to, overrides || {})];
|
|
244
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
});
|
|
248
|
-
};
|
|
194
|
+
async getActiveAccountsByChunks(symbol, from, to, overrides) {
|
|
195
|
+
if (this.proxyContract == null) {
|
|
196
|
+
throw Error("no proxy contract initialized. Use createProxyInstance().");
|
|
197
|
+
}
|
|
198
|
+
let perpID = LiquidatorTool.symbolToPerpetualId(symbol, this.symbolToPerpStaticInfo);
|
|
199
|
+
return await this.proxyContract.getActivePerpAccountsByChunks(perpID, from, to, overrides || {});
|
|
200
|
+
}
|
|
249
201
|
/**
|
|
250
202
|
* Addresses for all the active accounts in this perpetual symbol.
|
|
251
203
|
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
@@ -266,21 +218,10 @@ var LiquidatorTool = /** @class */ (function (_super) {
|
|
|
266
218
|
*
|
|
267
219
|
* @returns {string[]} Array of addresses.
|
|
268
220
|
*/
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
case 1:
|
|
276
|
-
totalAccounts = _a.sent();
|
|
277
|
-
return [4 /*yield*/, this.getActiveAccountsByChunks(symbol, 0, totalAccounts, overrides)];
|
|
278
|
-
case 2: return [2 /*return*/, _a.sent()];
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
});
|
|
282
|
-
};
|
|
283
|
-
return LiquidatorTool;
|
|
284
|
-
}(WriteAccessHandler));
|
|
285
|
-
export default LiquidatorTool;
|
|
221
|
+
async getAllActiveAccounts(symbol, overrides) {
|
|
222
|
+
// checks are done inside the intermediate functions
|
|
223
|
+
let totalAccounts = await this.countActivePerpAccounts(symbol);
|
|
224
|
+
return await this.getActiveAccountsByChunks(symbol, 0, totalAccounts, overrides);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
286
227
|
//# sourceMappingURL=liquidatorTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liquidatorTool.js","sourceRoot":"","sources":["../../src/liquidatorTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"liquidatorTool.js","sourceRoot":"","sources":["../../src/liquidatorTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { floatToDec18 } from "./d8XMath";
|
|
1
|
+
import { floatToDec18, floatToDecN } from "./d8XMath";
|
|
3
2
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
4
3
|
import WriteAccessHandler from "./writeAccessHandler";
|
|
5
4
|
/**
|
|
@@ -7,8 +6,7 @@ import WriteAccessHandler from "./writeAccessHandler";
|
|
|
7
6
|
* smart-contract interactions that require gas-payments.
|
|
8
7
|
* @extends WriteAccessHandler
|
|
9
8
|
*/
|
|
10
|
-
|
|
11
|
-
__extends(LiquidityProviderTool, _super);
|
|
9
|
+
export default class LiquidityProviderTool extends WriteAccessHandler {
|
|
12
10
|
/**
|
|
13
11
|
* Constructor
|
|
14
12
|
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
@@ -29,8 +27,8 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
29
27
|
*
|
|
30
28
|
* @param {string | Signer} signer Private key or ethers Signer of the account
|
|
31
29
|
*/
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
constructor(config, signer) {
|
|
31
|
+
super(config, signer);
|
|
34
32
|
}
|
|
35
33
|
/**
|
|
36
34
|
* Add liquidity to the PnL participant fund. The address gets pool shares in return.
|
|
@@ -54,24 +52,15 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
54
52
|
*
|
|
55
53
|
* @return Transaction object
|
|
56
54
|
*/
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
67
|
-
return [4 /*yield*/, this.proxyContract.addLiquidity(poolId, floatToDec18(amountCC), overrides || { gasLimit: this.gasLimit })];
|
|
68
|
-
case 1:
|
|
69
|
-
tx = _a.sent();
|
|
70
|
-
return [2 /*return*/, tx];
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
};
|
|
55
|
+
async addLiquidity(poolSymbolName, amountCC, overrides) {
|
|
56
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
57
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
58
|
+
}
|
|
59
|
+
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
60
|
+
let decimals = this.getMarginTokenDecimalsFromSymbol(poolSymbolName);
|
|
61
|
+
let tx = await this.proxyContract.addLiquidity(poolId, floatToDecN(amountCC, decimals), overrides || { gasLimit: this.gasLimit });
|
|
62
|
+
return tx;
|
|
63
|
+
}
|
|
75
64
|
/**
|
|
76
65
|
* Initiates a liquidity withdrawal from the pool
|
|
77
66
|
* It triggers a time-delayed unlocking of the given number of pool shares.
|
|
@@ -95,24 +84,14 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
95
84
|
*
|
|
96
85
|
* @return Transaction object.
|
|
97
86
|
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
108
|
-
return [4 /*yield*/, this.proxyContract.withdrawLiquidity(poolId, floatToDec18(amountPoolShares), overrides || { gasLimit: this.gasLimit })];
|
|
109
|
-
case 1:
|
|
110
|
-
tx = _a.sent();
|
|
111
|
-
return [2 /*return*/, tx];
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
};
|
|
87
|
+
async initiateLiquidityWithdrawal(poolSymbolName, amountPoolShares, overrides) {
|
|
88
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
89
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
90
|
+
}
|
|
91
|
+
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
92
|
+
let tx = await this.proxyContract.withdrawLiquidity(poolId, floatToDec18(amountPoolShares), overrides || { gasLimit: this.gasLimit });
|
|
93
|
+
return tx;
|
|
94
|
+
}
|
|
116
95
|
/**
|
|
117
96
|
* Withdraws as much liquidity as there is available after a call to initiateLiquidityWithdrawal.
|
|
118
97
|
* The address loses pool shares in return.
|
|
@@ -134,25 +113,13 @@ var LiquidityProviderTool = /** @class */ (function (_super) {
|
|
|
134
113
|
*
|
|
135
114
|
* @returns Transaction object.
|
|
136
115
|
*/
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
147
|
-
return [4 /*yield*/, this.proxyContract.executeLiquidityWithdrawal(poolId, this.traderAddr, overrides || { gasLimit: this.gasLimit })];
|
|
148
|
-
case 1:
|
|
149
|
-
tx = _a.sent();
|
|
150
|
-
return [2 /*return*/, tx];
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
});
|
|
154
|
-
};
|
|
155
|
-
return LiquidityProviderTool;
|
|
156
|
-
}(WriteAccessHandler));
|
|
157
|
-
export default LiquidityProviderTool;
|
|
116
|
+
async executeLiquidityWithdrawal(poolSymbolName, overrides) {
|
|
117
|
+
if (this.proxyContract == null || this.signer == null) {
|
|
118
|
+
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
119
|
+
}
|
|
120
|
+
let poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
121
|
+
let tx = await this.proxyContract.executeLiquidityWithdrawal(poolId, this.traderAddr, overrides || { gasLimit: this.gasLimit });
|
|
122
|
+
return tx;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
158
125
|
//# sourceMappingURL=liquidityProviderTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liquidityProviderTool.js","sourceRoot":"","sources":["../../src/liquidityProviderTool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"liquidityProviderTool.js","sourceRoot":"","sources":["../../src/liquidityProviderTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,kBAAkB;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,oBAAoB,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,WAAW,CAAC,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,oBAAoB,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7F,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CACjD,MAAM,EACN,YAAY,CAAC,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,oBAAoB,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"}
|
package/dist/esm/marketData.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CallOverrides, Contract } from "@ethersproject/contracts";
|
|
2
2
|
import { Provider } from "@ethersproject/providers";
|
|
3
3
|
import { LimitOrderBook } from "./contracts";
|
|
4
|
-
import { ExchangeInfo, MarginAccount, NodeSDKConfig, Order, PerpetualState, PerpetualStaticInfo, PoolStaticInfo, SmartContractOrder } from "./nodeSDKTypes";
|
|
4
|
+
import { ExchangeInfo, MarginAccount, NodeSDKConfig, Order, PerpetualState, PerpetualStaticInfo, PoolState, PoolStaticInfo, SmartContractOrder } from "./nodeSDKTypes";
|
|
5
5
|
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
6
6
|
import PriceFeeds from "./priceFeeds";
|
|
7
7
|
/**
|
|
@@ -314,6 +314,13 @@ export default class MarketData extends PerpetualDataHandler {
|
|
|
314
314
|
* @returns PerpetualState reference
|
|
315
315
|
*/
|
|
316
316
|
getPerpetualState(symbol: string, indexPriceInfo?: [number, number, boolean, boolean], overrides?: CallOverrides): Promise<PerpetualState>;
|
|
317
|
+
/**
|
|
318
|
+
* Query recent pool state from blockchain, not including perpetual states
|
|
319
|
+
* @param symbol symbol of the form USDC
|
|
320
|
+
* @param indexPrices S2 and S3 prices/isMarketOpen if not provided fetch via REST API
|
|
321
|
+
* @returns PoolState reference
|
|
322
|
+
*/
|
|
323
|
+
getPoolState(poolSymbol: string, overrides?: CallOverrides): Promise<PoolState>;
|
|
317
324
|
/**
|
|
318
325
|
* Query perpetual static info.
|
|
319
326
|
* This information is queried once at createProxyInstance-time and remains static after that.
|