@dolomite-exchange/zap-sdk 0.3.42 → 0.3.43

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.
@@ -39,6 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
40
  };
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
+ var deployments_json_1 = __importDefault(require("@dolomite-exchange/modules-deployments/src/deploy/deployments.json"));
42
43
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
43
44
  var ethers_1 = require("ethers");
44
45
  var utils_1 = require("ethers/lib/utils");
@@ -46,7 +47,6 @@ var src_1 = require("../../../src");
46
47
  var GmxV2GmEstimator_1 = require("../../../src/lib/estimators/GmxV2GmEstimator");
47
48
  var ArbitrumOneConstants_1 = require("../../helpers/ArbitrumOneConstants");
48
49
  var GlvEstimator_1 = require("../../../src/lib/estimators/GlvEstimator");
49
- var deployments_json_1 = __importDefault(require("@dolomite-exchange/modules-deployments/src/deploy/deployments.json"));
50
50
  describe('GlvEstimator', function () {
51
51
  var _a;
52
52
  var network = src_1.Network.ARBITRUM_ONE;
@@ -59,7 +59,7 @@ describe('GlvEstimator', function () {
59
59
  _a[ArbitrumOneConstants_1.NATIVE_USDC_MARKET.marketId.toFixed()] = ArbitrumOneConstants_1.NATIVE_USDC_MARKET,
60
60
  _a);
61
61
  var config = {
62
- gasPriceInWei: new bignumber_js_1.default('100000000'),
62
+ gasPriceInWei: new bignumber_js_1.default('17000000'),
63
63
  blockTag: 'latest',
64
64
  filterOutZapsWithInsufficientOutput: false,
65
65
  isLiquidation: false,
@@ -1 +1 @@
1
- {"version":3,"file":"GlvEstimator.test.js","sourceRoot":"","sources":["../../../../__tests__/lib/estimators/GlvEstimator.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlvEstimator.test.js","sourceRoot":"","sources":["../../../../__tests__/lib/estimators/GlvEstimator.test.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,9 @@ export declare class GlvEstimator {
13
13
  private readonly dataStoreCache;
14
14
  constructor(network: Network, web3Provider: ethers.providers.Provider, gmxV2Estimator: GmxV2GmEstimator);
15
15
  private static getPriceStruct;
16
+ private static getGlvDepositOraclePriceCount;
17
+ private static getGlvWithdrawalOraclePriceCount;
18
+ private static adjustGasLimitForEstimate;
16
19
  getUnwrappedAmount(isolationModeTokenAddress: Address, amountIn: Integer, outputMarketId: MarketId, marketsMap: Record<string, ApiMarket>, config: ZapConfig): Promise<EstimateOutputResult>;
17
20
  getWrappedAmount(isolationModeTokenAddress: Address, amountIn: Integer, inputMarketId: MarketId, marketsMap: Record<string, ApiMarket>, config: ZapConfig): Promise<EstimateOutputResult>;
18
21
  private getGmMarketByGlvToken;
@@ -81,10 +81,15 @@ var Constants_1 = require("../Constants");
81
81
  var LocalCache_1 = require("../LocalCache");
82
82
  var GmxV2GmEstimator_1 = require("./GmxV2GmEstimator");
83
83
  var abiCoder = ethers_1.ethers.utils.defaultAbiCoder;
84
- var GLV_DEPOSIT_GAS_LIMIT_KEY = (0, utils_1.keccak256)(abiCoder.encode(['string'], ['GLV_DEPOSIT_GAS_LIMIT']));
85
- var GLV_WITHDRAWAL_GAS_LIMIT_KEY = (0, utils_1.keccak256)(abiCoder.encode(['string'], ['GLV_WITHDRAWAL_GAS_LIMIT']));
86
- var GLV_PER_MARKET_GAS_LIMIT_KEY = (0, utils_1.keccak256)(abiCoder.encode(['string'], ['GLV_PER_MARKET_GAS_LIMIT']));
84
+ var hashString = function (value) { return (0, utils_1.keccak256)(abiCoder.encode(['string'], [value])); };
85
+ var ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1_KEY = hashString('ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1');
86
+ var ESTIMATED_GAS_FEE_PER_ORACLE_PRICE_KEY = hashString('ESTIMATED_GAS_FEE_PER_ORACLE_PRICE');
87
+ var ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR_KEY = hashString('ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR');
88
+ var GLV_DEPOSIT_GAS_LIMIT_KEY = hashString('GLV_DEPOSIT_GAS_LIMIT');
89
+ var GLV_WITHDRAWAL_GAS_LIMIT_KEY = hashString('GLV_WITHDRAWAL_GAS_LIMIT');
90
+ var GLV_PER_MARKET_GAS_LIMIT_KEY = hashString('GLV_PER_MARKET_GAS_LIMIT');
87
91
  var CALLBACK_GAS_LIMIT = ethers_1.ethers.BigNumber.from(4000000);
92
+ var FLOAT_PRECISION = ethers_1.ethers.BigNumber.from(10).pow(30);
88
93
  var GlvToGmMarketCacheKey = function (glvToken, isDeposit) { return "GlvToGmMarket-".concat(isDeposit
89
94
  ? 'Deposit'
90
95
  : 'Withdrawal', "-").concat(glvToken); };
@@ -111,9 +116,19 @@ var GlvEstimator = /** @class */ (function () {
111
116
  max: pricesMap[token].maxPrice,
112
117
  };
113
118
  };
119
+ GlvEstimator.getGlvDepositOraclePriceCount = function (marketCount) {
120
+ return ethers_1.ethers.BigNumber.from(2 + marketCount);
121
+ };
122
+ GlvEstimator.getGlvWithdrawalOraclePriceCount = function (marketCount) {
123
+ return ethers_1.ethers.BigNumber.from(3 + marketCount);
124
+ };
125
+ GlvEstimator.adjustGasLimitForEstimate = function (gasEstimate, oraclePriceCount, baseGasLimit, estimatedGasFeePerOracle, multiplierFactor) {
126
+ var totalBaseGasLimit = baseGasLimit.add(estimatedGasFeePerOracle.mul(oraclePriceCount));
127
+ return totalBaseGasLimit.add(gasEstimate.mul(multiplierFactor).div(FLOAT_PRECISION));
128
+ };
114
129
  GlvEstimator.prototype.getUnwrappedAmount = function (isolationModeTokenAddress, amountIn, outputMarketId, marketsMap, config) {
115
130
  return __awaiter(this, void 0, void 0, function () {
116
- var glvMarket, glvToken, glvTokenContract, calls, _a, _b, tokenToSignedPriceMap, gmMarket, multicallResults, _c, glvWithdrawalGasLimit, glvPerMarketGasLimit, gmWithdrawalGasLimit, swapWithdrawalGasLimit, glvTokenSupply, glvPoolInfo, indexToken, longToken, shortToken, marketToken, marketTokenContract, glvPoolValueTransaction, _d, _e, _f, marketPoolValueTransaction, marketTokenSupplyTransaction, multicallResults2, glvPoolValue, marketPoolValueStruct, marketTokenSupply, glvTokenUsd, gmAmountOut, gasLimitOverride;
131
+ var glvMarket, glvToken, glvTokenContract, calls, _a, _b, tokenToSignedPriceMap, gmMarket, multicallResults, _c, glvWithdrawalGasLimit, glvPerMarketGasLimit, swapWithdrawalGasLimit, baseGasLimit, gasFeePerOracle, gasFeeMultiplierFactor, glvTokenSupply, glvPoolInfo, indexToken, longToken, shortToken, marketToken, marketTokenContract, glvPoolValueTransaction, _d, _e, _f, marketPoolValueTransaction, marketTokenSupplyTransaction, multicallResults2, glvPoolValue, marketPoolValueStruct, marketTokenSupply, glvTokenUsd, gmAmountOut, gasLimitOverride;
117
132
  var _g, _h;
118
133
  return __generator(this, function (_j) {
119
134
  switch (_j.label) {
@@ -146,7 +161,7 @@ var GlvEstimator = /** @class */ (function () {
146
161
  this.getWithdrawalGasLimit(),
147
162
  ])];
148
163
  case 3:
149
- _b = __read.apply(void 0, [_j.sent(), 4]), tokenToSignedPriceMap = _b[0], gmMarket = _b[1], multicallResults = _b[2].returnData, _c = _b[3], glvWithdrawalGasLimit = _c.glvWithdrawalGasLimit, glvPerMarketGasLimit = _c.glvPerMarketGasLimit, gmWithdrawalGasLimit = _c.gmWithdrawalGasLimit, swapWithdrawalGasLimit = _c.swapWithdrawalGasLimit;
164
+ _b = __read.apply(void 0, [_j.sent(), 4]), tokenToSignedPriceMap = _b[0], gmMarket = _b[1], multicallResults = _b[2].returnData, _c = _b[3], glvWithdrawalGasLimit = _c.glvWithdrawalGasLimit, glvPerMarketGasLimit = _c.glvPerMarketGasLimit, swapWithdrawalGasLimit = _c.swapWithdrawalGasLimit, baseGasLimit = _c.baseGasLimit, gasFeePerOracle = _c.gasFeePerOracle, gasFeeMultiplierFactor = _c.gasFeeMultiplierFactor;
150
165
  glvTokenSupply = glvTokenContract.interface.decodeFunctionResult('totalSupply', multicallResults[0])[0];
151
166
  glvPoolInfo = this.glvReader.interface.decodeFunctionResult('getGlvInfo', multicallResults[1])[0];
152
167
  indexToken = gmMarket.indexTokenAddress;
@@ -198,8 +213,8 @@ var GlvEstimator = /** @class */ (function () {
198
213
  gmAmountOut = marketTokenSupply.mul(glvTokenUsd).div(marketPoolValueStruct.poolValue);
199
214
  gasLimitOverride = glvWithdrawalGasLimit
200
215
  .add(glvPerMarketGasLimit.mul(glvPoolInfo.markets.length))
201
- .add(gmWithdrawalGasLimit)
202
216
  .add(swapWithdrawalGasLimit);
217
+ gasLimitOverride = GlvEstimator.adjustGasLimitForEstimate(gasLimitOverride, GlvEstimator.getGlvWithdrawalOraclePriceCount(glvPoolInfo.markets.length), baseGasLimit, gasFeePerOracle, gasFeeMultiplierFactor);
203
218
  return [2 /*return*/, this.gmxV2Estimator.getUnwrappedAmount(gmMarket, new bignumber_js_1.default(gmAmountOut.toString()), outputMarketId, marketsMap, config, tokenToSignedPriceMap, gasLimitOverride, CALLBACK_GAS_LIMIT)];
204
219
  }
205
220
  });
@@ -207,7 +222,7 @@ var GlvEstimator = /** @class */ (function () {
207
222
  };
208
223
  GlvEstimator.prototype.getWrappedAmount = function (isolationModeTokenAddress, amountIn, inputMarketId, marketsMap, config) {
209
224
  return __awaiter(this, void 0, void 0, function () {
210
- var glvMarket, glvToken, glvTokenContract, calls, _a, _b, tokenToSignedPriceMap, gmMarket, multicallResults, _c, glvDepositGasLimit, glvPerMarketGasLimit, gmDepositGasLimit, glvTokenSupply, glvPoolInfo, gasLimitOverride, inputToken, indexToken, longToken, shortToken, marketToken, gmAmountOutResult, poolValue, marketTokenSupply, receivedMarketTokensUsd, glvPoolValue, _d, _e, _f, amountOut;
225
+ var glvMarket, glvToken, glvTokenContract, calls, _a, _b, tokenToSignedPriceMap, gmMarket, multicallResults, _c, glvDepositGasLimit, glvPerMarketGasLimit, baseGasLimit, gasFeePerOracle, gasFeeMultiplierFactor, glvTokenSupply, glvPoolInfo, gasLimitOverride, inputToken, indexToken, longToken, shortToken, marketToken, gmAmountOutResult, poolValue, marketTokenSupply, receivedMarketTokensUsd, glvPoolValue, _d, _e, _f, amountOut;
211
226
  var _g, _h;
212
227
  return __generator(this, function (_j) {
213
228
  switch (_j.label) {
@@ -240,12 +255,11 @@ var GlvEstimator = /** @class */ (function () {
240
255
  this.getDepositGasLimit(),
241
256
  ])];
242
257
  case 3:
243
- _b = __read.apply(void 0, [_j.sent(), 4]), tokenToSignedPriceMap = _b[0], gmMarket = _b[1], multicallResults = _b[2].returnData, _c = _b[3], glvDepositGasLimit = _c.glvDepositGasLimit, glvPerMarketGasLimit = _c.glvPerMarketGasLimit, gmDepositGasLimit = _c.gmDepositGasLimit;
258
+ _b = __read.apply(void 0, [_j.sent(), 4]), tokenToSignedPriceMap = _b[0], gmMarket = _b[1], multicallResults = _b[2].returnData, _c = _b[3], glvDepositGasLimit = _c.glvDepositGasLimit, glvPerMarketGasLimit = _c.glvPerMarketGasLimit, baseGasLimit = _c.baseGasLimit, gasFeePerOracle = _c.gasFeePerOracle, gasFeeMultiplierFactor = _c.gasFeeMultiplierFactor;
244
259
  glvTokenSupply = glvTokenContract.interface.decodeFunctionResult('totalSupply', multicallResults[0])[0];
245
260
  glvPoolInfo = this.glvReader.interface.decodeFunctionResult('getGlvInfo', multicallResults[1])[0];
246
- gasLimitOverride = glvDepositGasLimit
247
- .add(glvPerMarketGasLimit.mul(glvPoolInfo.markets.length))
248
- .add(gmDepositGasLimit);
261
+ gasLimitOverride = glvDepositGasLimit.add(glvPerMarketGasLimit.mul(glvPoolInfo.markets.length));
262
+ gasLimitOverride = GlvEstimator.adjustGasLimitForEstimate(gasLimitOverride, GlvEstimator.getGlvDepositOraclePriceCount(glvPoolInfo.markets.length), baseGasLimit, gasFeePerOracle, gasFeeMultiplierFactor);
249
263
  inputToken = marketsMap[inputMarketId.toFixed()];
250
264
  indexToken = gmMarket.indexTokenAddress;
251
265
  longToken = gmMarket.longTokenAddress;
@@ -337,63 +351,86 @@ var GlvEstimator = /** @class */ (function () {
337
351
  };
338
352
  GlvEstimator.prototype.getWithdrawalGasLimit = function () {
339
353
  return __awaiter(this, void 0, void 0, function () {
340
- var gasLimit, calls, _a, returnData, glvWithdrawalGasLimit, glvPerMarketGasLimit, gmWithdrawalGasLimit, swapWithdrawalGasLimit, result;
341
- var _b, _c, _d, _e;
342
- return __generator(this, function (_f) {
343
- switch (_f.label) {
354
+ var gasLimit, populateTransaction, calls, _a, returnData, glvWithdrawalGasLimit, glvPerMarketGasLimit, swapWithdrawalGasLimit, baseGasLimit, gasFeePerOracle, gasFeeMultiplierFactor, result;
355
+ var _b, _c, _d, _e, _f, _g;
356
+ return __generator(this, function (_h) {
357
+ switch (_h.label) {
344
358
  case 0:
345
359
  gasLimit = this.dataStoreCache.get(WithdrawalGasLimitCacheKey);
346
360
  if (gasLimit) {
347
361
  return [2 /*return*/, gasLimit];
348
362
  }
363
+ populateTransaction = this.gmxV2DataStore.populateTransaction;
349
364
  _b = {
350
365
  target: this.gmxV2DataStore.address
351
366
  };
352
- return [4 /*yield*/, this.gmxV2DataStore.populateTransaction.getUint(GLV_WITHDRAWAL_GAS_LIMIT_KEY)];
367
+ return [4 /*yield*/, populateTransaction.getUint(GLV_WITHDRAWAL_GAS_LIMIT_KEY)];
353
368
  case 1:
354
369
  _a = [
355
- (_b.callData = (_f.sent()).data,
370
+ (_b.callData = (_h.sent()).data,
356
371
  _b)
357
372
  ];
358
373
  _c = {
359
374
  target: this.gmxV2DataStore.address
360
375
  };
361
- return [4 /*yield*/, this.gmxV2DataStore.populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)];
376
+ return [4 /*yield*/, populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)];
362
377
  case 2:
363
378
  _a = _a.concat([
364
- (_c.callData = (_f.sent()).data,
379
+ (_c.callData = (_h.sent()).data,
365
380
  _c)
366
381
  ]);
367
382
  _d = {
368
383
  target: this.gmxV2DataStore.address
369
384
  };
370
- return [4 /*yield*/, this.gmxV2DataStore.populateTransaction.getUint(GmxV2GmEstimator_1.WITHDRAWAL_GAS_LIMIT_KEY)];
385
+ return [4 /*yield*/, populateTransaction.getUint(GmxV2GmEstimator_1.SINGLE_SWAP_GAS_LIMIT_KEY)];
371
386
  case 3:
372
387
  _a = _a.concat([
373
- (_d.callData = (_f.sent()).data,
388
+ (_d.callData = (_h.sent()).data,
374
389
  _d)
375
390
  ]);
376
391
  _e = {
377
392
  target: this.gmxV2DataStore.address
378
393
  };
379
- return [4 /*yield*/, this.gmxV2DataStore.populateTransaction.getUint(GmxV2GmEstimator_1.SINGLE_SWAP_GAS_LIMIT_KEY)];
394
+ return [4 /*yield*/, populateTransaction.getUint(ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1_KEY)];
380
395
  case 4:
381
- calls = _a.concat([
382
- (_e.callData = (_f.sent()).data,
396
+ _a = _a.concat([
397
+ (_e.callData = (_h.sent()).data,
383
398
  _e)
384
399
  ]);
385
- return [4 /*yield*/, this.multicall.callStatic.aggregate(calls)];
400
+ _f = {
401
+ target: this.gmxV2DataStore.address
402
+ };
403
+ return [4 /*yield*/, populateTransaction.getUint(ESTIMATED_GAS_FEE_PER_ORACLE_PRICE_KEY)];
386
404
  case 5:
387
- returnData = (_f.sent()).returnData;
405
+ _a = _a.concat([
406
+ (_f.callData = (_h.sent()).data,
407
+ _f)
408
+ ]);
409
+ _g = {
410
+ target: this.gmxV2DataStore.address
411
+ };
412
+ return [4 /*yield*/, populateTransaction.getUint(ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR_KEY)];
413
+ case 6:
414
+ calls = _a.concat([
415
+ (_g.callData = (_h.sent()).data,
416
+ _g)
417
+ ]);
418
+ return [4 /*yield*/, this.multicall.callStatic.aggregate(calls)];
419
+ case 7:
420
+ returnData = (_h.sent()).returnData;
388
421
  glvWithdrawalGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[0])[0];
389
422
  glvPerMarketGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[1])[0];
390
- gmWithdrawalGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[2])[0];
391
- swapWithdrawalGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[3])[0];
423
+ swapWithdrawalGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[2])[0];
424
+ baseGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[3])[0];
425
+ gasFeePerOracle = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[4])[0];
426
+ gasFeeMultiplierFactor = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[5])[0];
392
427
  result = {
393
428
  glvWithdrawalGasLimit: glvWithdrawalGasLimit,
394
429
  glvPerMarketGasLimit: glvPerMarketGasLimit,
395
- gmWithdrawalGasLimit: gmWithdrawalGasLimit,
396
430
  swapWithdrawalGasLimit: swapWithdrawalGasLimit,
431
+ baseGasLimit: baseGasLimit,
432
+ gasFeePerOracle: gasFeePerOracle,
433
+ gasFeeMultiplierFactor: gasFeeMultiplierFactor,
397
434
  };
398
435
  this.dataStoreCache.set(WithdrawalGasLimitCacheKey, result);
399
436
  return [2 /*return*/, result];
@@ -403,52 +440,75 @@ var GlvEstimator = /** @class */ (function () {
403
440
  };
404
441
  GlvEstimator.prototype.getDepositGasLimit = function () {
405
442
  return __awaiter(this, void 0, void 0, function () {
406
- var gasLimit, calls, _a, returnData, glvDepositGasLimit, glvPerMarketGasLimit, gmDepositGasLimit, result;
407
- var _b, _c, _d;
408
- return __generator(this, function (_e) {
409
- switch (_e.label) {
443
+ var gasLimit, populateTransaction, calls, _a, returnData, glvDepositGasLimit, glvPerMarketGasLimit, baseGasLimit, gasFeePerOracle, gasFeeMultiplierFactor, result;
444
+ var _b, _c, _d, _e, _f;
445
+ return __generator(this, function (_g) {
446
+ switch (_g.label) {
410
447
  case 0:
411
448
  gasLimit = this.dataStoreCache.get(DepositGasLimitCacheKey);
412
449
  if (gasLimit) {
413
450
  return [2 /*return*/, gasLimit];
414
451
  }
452
+ populateTransaction = this.gmxV2DataStore.populateTransaction;
415
453
  _b = {
416
454
  target: this.gmxV2DataStore.address
417
455
  };
418
- return [4 /*yield*/, this.gmxV2DataStore.populateTransaction.getUint(GLV_DEPOSIT_GAS_LIMIT_KEY)];
456
+ return [4 /*yield*/, populateTransaction.getUint(GLV_DEPOSIT_GAS_LIMIT_KEY)];
419
457
  case 1:
420
458
  _a = [
421
- (_b.callData = (_e.sent()).data,
459
+ (_b.callData = (_g.sent()).data,
422
460
  _b)
423
461
  ];
424
462
  _c = {
425
463
  target: this.gmxV2DataStore.address
426
464
  };
427
- return [4 /*yield*/, this.gmxV2DataStore.populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)];
465
+ return [4 /*yield*/, populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)];
428
466
  case 2:
429
467
  _a = _a.concat([
430
- (_c.callData = (_e.sent()).data,
468
+ (_c.callData = (_g.sent()).data,
431
469
  _c)
432
470
  ]);
433
471
  _d = {
434
472
  target: this.gmxV2DataStore.address
435
473
  };
436
- return [4 /*yield*/, this.gmxV2DataStore.populateTransaction.getUint(GmxV2GmEstimator_1.DEPOSIT_GAS_LIMIT_KEY)];
474
+ return [4 /*yield*/, populateTransaction.getUint(ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1_KEY)];
437
475
  case 3:
438
- calls = _a.concat([
439
- (_d.callData = (_e.sent()).data,
476
+ _a = _a.concat([
477
+ (_d.callData = (_g.sent()).data,
440
478
  _d)
441
479
  ]);
442
- return [4 /*yield*/, this.multicall.callStatic.aggregate(calls)];
480
+ _e = {
481
+ target: this.gmxV2DataStore.address
482
+ };
483
+ return [4 /*yield*/, populateTransaction.getUint(ESTIMATED_GAS_FEE_PER_ORACLE_PRICE_KEY)];
443
484
  case 4:
444
- returnData = (_e.sent()).returnData;
485
+ _a = _a.concat([
486
+ (_e.callData = (_g.sent()).data,
487
+ _e)
488
+ ]);
489
+ _f = {
490
+ target: this.gmxV2DataStore.address
491
+ };
492
+ return [4 /*yield*/, populateTransaction.getUint(ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR_KEY)];
493
+ case 5:
494
+ calls = _a.concat([
495
+ (_f.callData = (_g.sent()).data,
496
+ _f)
497
+ ]);
498
+ return [4 /*yield*/, this.multicall.callStatic.aggregate(calls)];
499
+ case 6:
500
+ returnData = (_g.sent()).returnData;
445
501
  glvDepositGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[0])[0];
446
502
  glvPerMarketGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[1])[0];
447
- gmDepositGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[2])[0];
503
+ baseGasLimit = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[2])[0];
504
+ gasFeePerOracle = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[3])[0];
505
+ gasFeeMultiplierFactor = this.gmxV2DataStore.interface.decodeFunctionResult('getUint', returnData[4])[0];
448
506
  result = {
449
507
  glvDepositGasLimit: glvDepositGasLimit,
450
508
  glvPerMarketGasLimit: glvPerMarketGasLimit,
451
- gmDepositGasLimit: gmDepositGasLimit,
509
+ baseGasLimit: baseGasLimit,
510
+ gasFeePerOracle: gasFeePerOracle,
511
+ gasFeeMultiplierFactor: gasFeeMultiplierFactor,
452
512
  };
453
513
  this.dataStoreCache.set(DepositGasLimitCacheKey, result);
454
514
  return [2 /*return*/, result];
@@ -1 +1 @@
1
- {"version":3,"file":"GlvEstimator.js","sourceRoot":"","sources":["../../../../src/lib/estimators/GlvEstimator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GlvEstimator.js","sourceRoot":"","sources":["../../../../src/lib/estimators/GlvEstimator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dolomite-exchange/zap-sdk",
3
- "version": "0.3.42",
3
+ "version": "0.3.43",
4
4
  "description": "SDK for zapping any asset to any asset on Dolomite.",
5
5
  "scripts": {
6
6
  "test": "NODE_ENV=test jest --runInBand",
7
- "test:specific": "NODE_ENV=test jest __tests__/lib/estimators/GmxV2GmEstimator.test.ts",
7
+ "test:specific": "NODE_ENV=test jest __tests__/lib/estimators/GlvEstimator.test.ts",
8
8
  "coverage": "NODE_ENV=test jest --coverage --runInBand --forceExit --coverageReporters=text-lcov | node_modules/.bin/coveralls",
9
9
  "build": "rm -rf dist/ && node_modules/.bin/tsc --module commonjs",
10
10
  "prepublishOnly": "npm run build"
@@ -25,25 +25,29 @@ import {
25
25
  MULTICALL_MAP,
26
26
  } from '../Constants';
27
27
  import { LocalCache } from '../LocalCache';
28
- import {
29
- DEPOSIT_GAS_LIMIT_KEY,
30
- GmxV2GmEstimator,
31
- SignedPriceData,
32
- SINGLE_SWAP_GAS_LIMIT_KEY,
33
- WITHDRAWAL_GAS_LIMIT_KEY,
34
- } from './GmxV2GmEstimator';
28
+ import { GmxV2GmEstimator, SignedPriceData, SINGLE_SWAP_GAS_LIMIT_KEY } from './GmxV2GmEstimator';
35
29
  import PricePropsStruct = GmxPrice.PricePropsStruct;
36
30
 
37
31
  const abiCoder = ethers.utils.defaultAbiCoder;
38
32
 
39
- const GLV_DEPOSIT_GAS_LIMIT_KEY = keccak256(abiCoder.encode(['string'], ['GLV_DEPOSIT_GAS_LIMIT']));
33
+ const hashString = (value: string) => keccak256(abiCoder.encode(['string'], [value]));
34
+
35
+ const ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1_KEY = hashString('ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1');
36
+
37
+ const ESTIMATED_GAS_FEE_PER_ORACLE_PRICE_KEY = hashString('ESTIMATED_GAS_FEE_PER_ORACLE_PRICE');
40
38
 
41
- const GLV_WITHDRAWAL_GAS_LIMIT_KEY = keccak256(abiCoder.encode(['string'], ['GLV_WITHDRAWAL_GAS_LIMIT']));
39
+ const ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR_KEY = hashString('ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR');
42
40
 
43
- const GLV_PER_MARKET_GAS_LIMIT_KEY = keccak256(abiCoder.encode(['string'], ['GLV_PER_MARKET_GAS_LIMIT']));
41
+ const GLV_DEPOSIT_GAS_LIMIT_KEY = hashString('GLV_DEPOSIT_GAS_LIMIT');
42
+
43
+ const GLV_WITHDRAWAL_GAS_LIMIT_KEY = hashString('GLV_WITHDRAWAL_GAS_LIMIT');
44
+
45
+ const GLV_PER_MARKET_GAS_LIMIT_KEY = hashString('GLV_PER_MARKET_GAS_LIMIT');
44
46
 
45
47
  const CALLBACK_GAS_LIMIT = ethers.BigNumber.from(4_000_000);
46
48
 
49
+ const FLOAT_PRECISION = ethers.BigNumber.from(10).pow(30);
50
+
47
51
  const GlvToGmMarketCacheKey = (glvToken: string, isDeposit: boolean): string => `GlvToGmMarket-${isDeposit
48
52
  ? 'Deposit'
49
53
  : 'Withdrawal'}-${glvToken}`;
@@ -109,6 +113,25 @@ export class GlvEstimator {
109
113
  };
110
114
  }
111
115
 
116
+ private static getGlvDepositOraclePriceCount(marketCount: number): ethers.BigNumber {
117
+ return ethers.BigNumber.from(2 + marketCount);
118
+ }
119
+
120
+ private static getGlvWithdrawalOraclePriceCount(marketCount: number): ethers.BigNumber {
121
+ return ethers.BigNumber.from(3 + marketCount);
122
+ }
123
+
124
+ private static adjustGasLimitForEstimate(
125
+ gasEstimate: ethers.BigNumber,
126
+ oraclePriceCount: ethers.BigNumber,
127
+ baseGasLimit: ethers.BigNumber,
128
+ estimatedGasFeePerOracle: ethers.BigNumber,
129
+ multiplierFactor: ethers.BigNumber,
130
+ ): ethers.BigNumber {
131
+ const totalBaseGasLimit = baseGasLimit.add(estimatedGasFeePerOracle.mul(oraclePriceCount));
132
+ return totalBaseGasLimit.add(gasEstimate.mul(multiplierFactor).div(FLOAT_PRECISION));
133
+ }
134
+
112
135
  public async getUnwrappedAmount(
113
136
  isolationModeTokenAddress: Address,
114
137
  amountIn: Integer,
@@ -135,7 +158,14 @@ export class GlvEstimator {
135
158
  tokenToSignedPriceMap,
136
159
  gmMarket,
137
160
  { returnData: multicallResults },
138
- { glvWithdrawalGasLimit, glvPerMarketGasLimit, gmWithdrawalGasLimit, swapWithdrawalGasLimit },
161
+ {
162
+ glvWithdrawalGasLimit,
163
+ glvPerMarketGasLimit,
164
+ swapWithdrawalGasLimit,
165
+ baseGasLimit,
166
+ gasFeePerOracle,
167
+ gasFeeMultiplierFactor,
168
+ },
139
169
  ] = await Promise.all([
140
170
  GmxV2GmEstimator.getTokenPrices(),
141
171
  this.getGmMarketByGlvToken(glvMarket.glvTokenAddress, false),
@@ -224,10 +254,16 @@ export class GlvEstimator {
224
254
  const glvTokenUsd = glvPoolValue.mul(amountIn.toFixed()).div(glvTokenSupply);
225
255
  const gmAmountOut = marketTokenSupply.mul(glvTokenUsd).div(marketPoolValueStruct.poolValue);
226
256
 
227
- const gasLimitOverride = glvWithdrawalGasLimit
257
+ let gasLimitOverride = glvWithdrawalGasLimit
228
258
  .add(glvPerMarketGasLimit.mul(glvPoolInfo.markets.length))
229
- .add(gmWithdrawalGasLimit)
230
259
  .add(swapWithdrawalGasLimit);
260
+ gasLimitOverride = GlvEstimator.adjustGasLimitForEstimate(
261
+ gasLimitOverride,
262
+ GlvEstimator.getGlvWithdrawalOraclePriceCount(glvPoolInfo.markets.length),
263
+ baseGasLimit,
264
+ gasFeePerOracle,
265
+ gasFeeMultiplierFactor,
266
+ );
231
267
 
232
268
  return this.gmxV2Estimator.getUnwrappedAmount(
233
269
  gmMarket,
@@ -267,7 +303,7 @@ export class GlvEstimator {
267
303
  tokenToSignedPriceMap,
268
304
  gmMarket,
269
305
  { returnData: multicallResults },
270
- { glvDepositGasLimit, glvPerMarketGasLimit, gmDepositGasLimit },
306
+ { glvDepositGasLimit, glvPerMarketGasLimit, baseGasLimit, gasFeePerOracle, gasFeeMultiplierFactor },
271
307
  ] = await Promise.all([
272
308
  GmxV2GmEstimator.getTokenPrices(),
273
309
  this.getGmMarketByGlvToken(glvMarket.glvTokenAddress, true),
@@ -285,9 +321,14 @@ export class GlvEstimator {
285
321
  multicallResults[1],
286
322
  )[0] as IGlvReader.GlvInfoStructOutput;
287
323
 
288
- const gasLimitOverride = glvDepositGasLimit
289
- .add(glvPerMarketGasLimit.mul(glvPoolInfo.markets.length))
290
- .add(gmDepositGasLimit);
324
+ let gasLimitOverride = glvDepositGasLimit.add(glvPerMarketGasLimit.mul(glvPoolInfo.markets.length));
325
+ gasLimitOverride = GlvEstimator.adjustGasLimitForEstimate(
326
+ gasLimitOverride,
327
+ GlvEstimator.getGlvDepositOraclePriceCount(glvPoolInfo.markets.length),
328
+ baseGasLimit,
329
+ gasFeePerOracle,
330
+ gasFeeMultiplierFactor,
331
+ );
291
332
 
292
333
  const inputToken = marketsMap[inputMarketId.toFixed()];
293
334
 
@@ -393,30 +434,41 @@ export class GlvEstimator {
393
434
  private async getWithdrawalGasLimit(): Promise<{
394
435
  glvWithdrawalGasLimit: ethers.BigNumber,
395
436
  glvPerMarketGasLimit: ethers.BigNumber
396
- gmWithdrawalGasLimit: ethers.BigNumber,
397
437
  swapWithdrawalGasLimit: ethers.BigNumber,
438
+ baseGasLimit: ethers.BigNumber,
439
+ gasFeePerOracle: ethers.BigNumber,
440
+ gasFeeMultiplierFactor: ethers.BigNumber,
398
441
  }> {
399
442
  const gasLimit = this.dataStoreCache.get(WithdrawalGasLimitCacheKey);
400
443
  if (gasLimit) {
401
444
  return gasLimit;
402
445
  }
403
446
 
447
+ const { populateTransaction } = this.gmxV2DataStore!;
404
448
  const calls: Multicall__CallStruct[] = [
405
449
  {
406
450
  target: this.gmxV2DataStore!.address,
407
- callData: (await this.gmxV2DataStore!.populateTransaction.getUint(GLV_WITHDRAWAL_GAS_LIMIT_KEY)).data!,
451
+ callData: (await populateTransaction.getUint(GLV_WITHDRAWAL_GAS_LIMIT_KEY)).data!,
452
+ },
453
+ {
454
+ target: this.gmxV2DataStore!.address,
455
+ callData: (await populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)).data!,
456
+ },
457
+ {
458
+ target: this.gmxV2DataStore!.address,
459
+ callData: (await populateTransaction.getUint(SINGLE_SWAP_GAS_LIMIT_KEY)).data!,
408
460
  },
409
461
  {
410
462
  target: this.gmxV2DataStore!.address,
411
- callData: (await this.gmxV2DataStore!.populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)).data!,
463
+ callData: (await populateTransaction.getUint(ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1_KEY)).data!,
412
464
  },
413
465
  {
414
466
  target: this.gmxV2DataStore!.address,
415
- callData: (await this.gmxV2DataStore!.populateTransaction.getUint(WITHDRAWAL_GAS_LIMIT_KEY)).data!,
467
+ callData: (await populateTransaction.getUint(ESTIMATED_GAS_FEE_PER_ORACLE_PRICE_KEY)).data!,
416
468
  },
417
469
  {
418
470
  target: this.gmxV2DataStore!.address,
419
- callData: (await this.gmxV2DataStore!.populateTransaction.getUint(SINGLE_SWAP_GAS_LIMIT_KEY)).data!,
471
+ callData: (await populateTransaction.getUint(ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR_KEY)).data!,
420
472
  },
421
473
  ];
422
474
 
@@ -432,21 +484,33 @@ export class GlvEstimator {
432
484
  returnData[1],
433
485
  )[0] as ethers.BigNumber;
434
486
 
435
- const gmWithdrawalGasLimit = this.gmxV2DataStore!.interface.decodeFunctionResult(
487
+ const swapWithdrawalGasLimit = this.gmxV2DataStore!.interface.decodeFunctionResult(
436
488
  'getUint',
437
489
  returnData[2],
438
490
  )[0] as ethers.BigNumber;
439
491
 
440
- const swapWithdrawalGasLimit = this.gmxV2DataStore!.interface.decodeFunctionResult(
492
+ const baseGasLimit = this.gmxV2DataStore!.interface.decodeFunctionResult(
441
493
  'getUint',
442
494
  returnData[3],
443
495
  )[0] as ethers.BigNumber;
444
496
 
497
+ const gasFeePerOracle = this.gmxV2DataStore!.interface.decodeFunctionResult(
498
+ 'getUint',
499
+ returnData[4],
500
+ )[0] as ethers.BigNumber;
501
+
502
+ const gasFeeMultiplierFactor = this.gmxV2DataStore!.interface.decodeFunctionResult(
503
+ 'getUint',
504
+ returnData[5],
505
+ )[0] as ethers.BigNumber;
506
+
445
507
  const result = {
446
508
  glvWithdrawalGasLimit,
447
509
  glvPerMarketGasLimit,
448
- gmWithdrawalGasLimit,
449
510
  swapWithdrawalGasLimit,
511
+ baseGasLimit,
512
+ gasFeePerOracle,
513
+ gasFeeMultiplierFactor,
450
514
  };
451
515
  this.dataStoreCache.set(WithdrawalGasLimitCacheKey, result);
452
516
 
@@ -456,25 +520,36 @@ export class GlvEstimator {
456
520
  private async getDepositGasLimit(): Promise<{
457
521
  glvDepositGasLimit: ethers.BigNumber,
458
522
  glvPerMarketGasLimit: ethers.BigNumber
459
- gmDepositGasLimit: ethers.BigNumber,
523
+ baseGasLimit: ethers.BigNumber,
524
+ gasFeePerOracle: ethers.BigNumber,
525
+ gasFeeMultiplierFactor: ethers.BigNumber,
460
526
  }> {
461
527
  const gasLimit = this.dataStoreCache.get(DepositGasLimitCacheKey);
462
528
  if (gasLimit) {
463
529
  return gasLimit;
464
530
  }
465
531
 
532
+ const { populateTransaction } = this.gmxV2DataStore!;
466
533
  const calls: Multicall__CallStruct[] = [
467
534
  {
468
535
  target: this.gmxV2DataStore!.address,
469
- callData: (await this.gmxV2DataStore!.populateTransaction.getUint(GLV_DEPOSIT_GAS_LIMIT_KEY)).data!,
536
+ callData: (await populateTransaction.getUint(GLV_DEPOSIT_GAS_LIMIT_KEY)).data!,
470
537
  },
471
538
  {
472
539
  target: this.gmxV2DataStore!.address,
473
- callData: (await this.gmxV2DataStore!.populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)).data!,
540
+ callData: (await populateTransaction.getUint(GLV_PER_MARKET_GAS_LIMIT_KEY)).data!,
474
541
  },
475
542
  {
476
543
  target: this.gmxV2DataStore!.address,
477
- callData: (await this.gmxV2DataStore!.populateTransaction.getUint(DEPOSIT_GAS_LIMIT_KEY)).data!,
544
+ callData: (await populateTransaction.getUint(ESTIMATED_GAS_FEE_BASE_AMOUNT_V2_1_KEY)).data!,
545
+ },
546
+ {
547
+ target: this.gmxV2DataStore!.address,
548
+ callData: (await populateTransaction.getUint(ESTIMATED_GAS_FEE_PER_ORACLE_PRICE_KEY)).data!,
549
+ },
550
+ {
551
+ target: this.gmxV2DataStore!.address,
552
+ callData: (await populateTransaction.getUint(ESTIMATED_GAS_FEE_MULTIPLIER_FACTOR_KEY)).data!,
478
553
  },
479
554
  ];
480
555
 
@@ -490,15 +565,27 @@ export class GlvEstimator {
490
565
  returnData[1],
491
566
  )[0] as ethers.BigNumber;
492
567
 
493
- const gmDepositGasLimit = this.gmxV2DataStore!.interface.decodeFunctionResult(
568
+ const baseGasLimit = this.gmxV2DataStore!.interface.decodeFunctionResult(
494
569
  'getUint',
495
570
  returnData[2],
496
571
  )[0] as ethers.BigNumber;
497
572
 
573
+ const gasFeePerOracle = this.gmxV2DataStore!.interface.decodeFunctionResult(
574
+ 'getUint',
575
+ returnData[3],
576
+ )[0] as ethers.BigNumber;
577
+
578
+ const gasFeeMultiplierFactor = this.gmxV2DataStore!.interface.decodeFunctionResult(
579
+ 'getUint',
580
+ returnData[4],
581
+ )[0] as ethers.BigNumber;
582
+
498
583
  const result = {
499
584
  glvDepositGasLimit,
500
585
  glvPerMarketGasLimit,
501
- gmDepositGasLimit,
586
+ baseGasLimit,
587
+ gasFeePerOracle,
588
+ gasFeeMultiplierFactor,
502
589
  };
503
590
  this.dataStoreCache.set(DepositGasLimitCacheKey, result);
504
591