@gearbox-protocol/sdk 1.3.2 → 1.4.0

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.
Files changed (138) hide show
  1. package/lib/core/constants.d.ts +1 -0
  2. package/lib/core/constants.js +3 -1
  3. package/lib/index.d.ts +2 -0
  4. package/lib/index.js +2 -0
  5. package/lib/parsers/abstractParser.d.ts +18 -0
  6. package/lib/parsers/abstractParser.js +32 -0
  7. package/lib/parsers/convexBaseRewardPoolAdapterParser.d.ts +9 -0
  8. package/lib/parsers/convexBaseRewardPoolAdapterParser.js +60 -0
  9. package/lib/parsers/convexBaseRewardPoolAdapterParser.spec.d.ts +1 -0
  10. package/lib/parsers/convexBaseRewardPoolAdapterParser.spec.js +24 -0
  11. package/lib/parsers/convexBoosterAdapterParser.d.ts +10 -0
  12. package/lib/parsers/convexBoosterAdapterParser.js +62 -0
  13. package/lib/parsers/convexBoosterAdapterParser.spec.d.ts +1 -0
  14. package/lib/parsers/convexBoosterAdapterParser.spec.js +20 -0
  15. package/lib/parsers/creditFacadeParser.d.ts +9 -0
  16. package/lib/parsers/creditFacadeParser.js +66 -0
  17. package/lib/parsers/creditFacadeParser.spec.d.ts +1 -0
  18. package/lib/parsers/creditFacadeParser.spec.js +27 -0
  19. package/lib/parsers/curveAdapterParser.d.ts +12 -0
  20. package/lib/parsers/curveAdapterParser.js +106 -0
  21. package/lib/parsers/curveAdapterParser.spec.d.ts +1 -0
  22. package/lib/parsers/curveAdapterParser.spec.js +49 -0
  23. package/lib/parsers/iParser.d.ts +3 -0
  24. package/lib/{types/contracts/test/suites/mainnet/IPriceFeedsRegistry.js → parsers/iParser.js} +0 -0
  25. package/lib/parsers/lidoAdapterParser.d.ts +7 -0
  26. package/lib/parsers/lidoAdapterParser.js +46 -0
  27. package/lib/parsers/lidoAdapterParser.spec.d.ts +1 -0
  28. package/lib/parsers/lidoAdapterParser.spec.js +17 -0
  29. package/lib/parsers/txParser.d.ts +18 -0
  30. package/lib/parsers/txParser.js +122 -0
  31. package/lib/parsers/uniV2AdapterParser.d.ts +8 -0
  32. package/lib/parsers/uniV2AdapterParser.js +73 -0
  33. package/lib/parsers/uniV2AdapterParser.spec.d.ts +1 -0
  34. package/lib/parsers/uniV2AdapterParser.spec.js +48 -0
  35. package/lib/parsers/uniV3AdapterParser.d.ts +9 -0
  36. package/lib/parsers/uniV3AdapterParser.js +99 -0
  37. package/lib/parsers/uniV3AdapterParser.spec.d.ts +1 -0
  38. package/lib/parsers/uniV3AdapterParser.spec.js +82 -0
  39. package/lib/parsers/yearnAdapterParser.spec.d.ts +1 -0
  40. package/lib/parsers/yearnAdapterParser.spec.js +36 -0
  41. package/lib/parsers/yearnV2AdapterParser.d.ts +7 -0
  42. package/lib/parsers/yearnV2AdapterParser.js +54 -0
  43. package/lib/tokens/convex.d.ts +4 -2
  44. package/lib/tokens/convex.js +10 -1
  45. package/lib/tokens/decimals.d.ts +2 -0
  46. package/lib/tokens/decimals.js +62 -0
  47. package/lib/tokens/gear.d.ts +1 -1
  48. package/lib/tokens/gear.js +1 -1
  49. package/lib/tokens/tokenType.d.ts +10 -9
  50. package/lib/tokens/tokenType.js +10 -9
  51. package/lib/types/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended.d.ts +66 -2
  52. package/lib/types/contracts/interfaces/adapters/curve/ICurveV1_2AssetsAdapter.d.ts +620 -0
  53. package/lib/types/contracts/interfaces/adapters/curve/ICurveV1_2AssetsAdapter.js +2 -0
  54. package/lib/types/contracts/interfaces/adapters/curve/ICurveV1_3AssetsAdapter.d.ts +622 -0
  55. package/lib/types/contracts/interfaces/adapters/curve/ICurveV1_3AssetsAdapter.js +2 -0
  56. package/lib/types/contracts/interfaces/adapters/curve/ICurveV1_4AssetsAdapter.d.ts +648 -0
  57. package/lib/types/contracts/interfaces/adapters/curve/ICurveV1_4AssetsAdapter.js +2 -0
  58. package/lib/types/contracts/interfaces/adapters/curve/index.d.ts +3 -0
  59. package/lib/types/contracts/interfaces/adapters/index.d.ts +2 -0
  60. package/lib/types/contracts/interfaces/adapters/yearn/IYearnV2Adapter.d.ts +330 -0
  61. package/lib/types/contracts/interfaces/adapters/yearn/IYearnV2Adapter.js +2 -0
  62. package/lib/types/contracts/interfaces/adapters/yearn/index.d.ts +1 -0
  63. package/lib/types/contracts/interfaces/adapters/yearn/index.js +2 -0
  64. package/lib/types/contracts/pathfinder/interfaces/IClosePathResolver.d.ts +28 -7
  65. package/lib/types/contracts/pathfinder/interfaces/IDepositor.sol/IDepositor.d.ts +30 -9
  66. package/lib/types/contracts/pathfinder/interfaces/IDepositor.sol/IDepositorOptions.d.ts +31 -10
  67. package/lib/types/contracts/pathfinder/interfaces/ILPWorker.sol/ILPWorker.d.ts +28 -7
  68. package/lib/types/contracts/pathfinder/interfaces/ILPWorker.sol/ILPWorkerOptions.d.ts +28 -7
  69. package/lib/types/contracts/pathfinder/interfaces/IPathFinder.d.ts +24 -0
  70. package/lib/types/contracts/pathfinder/interfaces/IPathFinderComponent.d.ts +50 -0
  71. package/lib/types/contracts/pathfinder/interfaces/IPathFinderComponent.js +2 -0
  72. package/lib/types/contracts/pathfinder/interfaces/IPathResolver.d.ts +29 -8
  73. package/lib/types/contracts/pathfinder/interfaces/ISwapAggregator.d.ts +99 -15
  74. package/lib/types/contracts/pathfinder/interfaces/ISwapper.d.ts +17 -1
  75. package/lib/types/contracts/pathfinder/interfaces/IWithdrawer.sol/IWithdrawer.d.ts +53 -9
  76. package/lib/types/contracts/pathfinder/interfaces/IWithdrawer.sol/IWithdrawerOptions.d.ts +53 -9
  77. package/lib/types/contracts/pathfinder/interfaces/index.d.ts +1 -0
  78. package/lib/types/contracts/test/suites/mainnet/ITokenTestSuite.d.ts +110 -18
  79. package/lib/types/contracts/test/suites/mainnet/SupportedContracts.sol/ISupportedContracts.d.ts +50 -0
  80. package/lib/types/contracts/test/suites/mainnet/SupportedContracts.sol/ISupportedContracts.js +2 -0
  81. package/lib/types/contracts/test/suites/mainnet/SupportedContracts.sol/index.d.ts +1 -0
  82. package/lib/types/contracts/test/suites/mainnet/SupportedContracts.sol/index.js +2 -0
  83. package/lib/types/contracts/test/suites/mainnet/Tokens.sol/IToken.d.ts +60 -0
  84. package/lib/types/contracts/test/suites/mainnet/Tokens.sol/IToken.js +2 -0
  85. package/lib/types/contracts/test/suites/mainnet/Tokens.sol/index.d.ts +1 -0
  86. package/lib/types/contracts/test/suites/mainnet/Tokens.sol/index.js +2 -0
  87. package/lib/types/contracts/test/suites/mainnet/index.d.ts +4 -1
  88. package/lib/types/factories/contracts/interfaces/ICreditFacade.sol/ICreditFacadeExtended__factory.js +62 -0
  89. package/lib/types/factories/contracts/{test/suites/mainnet/IPriceFeedsRegistry__factory.d.ts → interfaces/adapters/curve/ICurveV1_2AssetsAdapter__factory.d.ts} +4 -4
  90. package/lib/types/factories/contracts/interfaces/adapters/curve/ICurveV1_2AssetsAdapter__factory.js +1066 -0
  91. package/lib/types/factories/contracts/interfaces/adapters/curve/ICurveV1_3AssetsAdapter__factory.d.ts +32 -0
  92. package/lib/types/factories/contracts/interfaces/adapters/curve/ICurveV1_3AssetsAdapter__factory.js +1066 -0
  93. package/lib/types/factories/contracts/interfaces/adapters/curve/ICurveV1_4AssetsAdapter__factory.d.ts +32 -0
  94. package/lib/types/factories/contracts/interfaces/adapters/curve/ICurveV1_4AssetsAdapter__factory.js +1066 -0
  95. package/lib/types/factories/contracts/interfaces/adapters/curve/index.d.ts +3 -0
  96. package/lib/types/factories/contracts/interfaces/adapters/curve/index.js +7 -1
  97. package/lib/types/factories/contracts/interfaces/adapters/index.d.ts +1 -0
  98. package/lib/types/factories/contracts/interfaces/adapters/index.js +2 -1
  99. package/lib/types/factories/contracts/interfaces/adapters/yearn/IYearnV2Adapter__factory.d.ts +46 -0
  100. package/lib/types/factories/contracts/interfaces/adapters/yearn/IYearnV2Adapter__factory.js +487 -0
  101. package/lib/types/factories/contracts/interfaces/adapters/yearn/index.d.ts +1 -0
  102. package/lib/types/factories/contracts/interfaces/adapters/yearn/index.js +8 -0
  103. package/lib/types/factories/contracts/pathfinder/interfaces/IClosePathResolver__factory.d.ts +12 -2
  104. package/lib/types/factories/contracts/pathfinder/interfaces/IClosePathResolver__factory.js +54 -8
  105. package/lib/types/factories/contracts/pathfinder/interfaces/IDepositor.sol/IDepositorOptions__factory.js +138 -32
  106. package/lib/types/factories/contracts/pathfinder/interfaces/IDepositor.sol/IDepositor__factory.js +110 -24
  107. package/lib/types/factories/contracts/pathfinder/interfaces/ILPWorker.sol/ILPWorkerOptions__factory.js +54 -8
  108. package/lib/types/factories/contracts/pathfinder/interfaces/ILPWorker.sol/ILPWorker__factory.js +54 -8
  109. package/lib/types/factories/contracts/pathfinder/interfaces/IPathFinderComponent__factory.d.ts +18 -0
  110. package/lib/types/factories/contracts/pathfinder/interfaces/IPathFinderComponent__factory.js +48 -0
  111. package/lib/types/factories/contracts/pathfinder/interfaces/IPathFinder__factory.js +32 -0
  112. package/lib/types/factories/contracts/pathfinder/interfaces/IPathResolver__factory.d.ts +12 -2
  113. package/lib/types/factories/contracts/pathfinder/interfaces/IPathResolver__factory.js +82 -16
  114. package/lib/types/factories/contracts/pathfinder/interfaces/ISwapAggregator__factory.js +877 -56
  115. package/lib/types/factories/contracts/pathfinder/interfaces/ISwapper__factory.d.ts +12 -2
  116. package/lib/types/factories/contracts/pathfinder/interfaces/ISwapper__factory.js +26 -0
  117. package/lib/types/factories/contracts/pathfinder/interfaces/IWithdrawer.sol/IWithdrawerOptions__factory.js +365 -24
  118. package/lib/types/factories/contracts/pathfinder/interfaces/IWithdrawer.sol/IWithdrawer__factory.js +355 -24
  119. package/lib/types/factories/contracts/pathfinder/interfaces/index.d.ts +1 -0
  120. package/lib/types/factories/contracts/pathfinder/interfaces/index.js +3 -1
  121. package/lib/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.d.ts +1 -1
  122. package/lib/types/factories/contracts/support/MultiCall.sol/Multicall2__factory.js +1 -1
  123. package/lib/types/factories/contracts/test/suites/mainnet/ITokenTestSuite__factory.d.ts +2 -12
  124. package/lib/types/factories/contracts/test/suites/mainnet/ITokenTestSuite__factory.js +140 -12
  125. package/lib/types/factories/contracts/test/suites/mainnet/SupportedContracts.sol/ISupportedContracts__factory.d.ts +22 -0
  126. package/lib/types/factories/contracts/test/suites/mainnet/{IPriceFeedsRegistry__factory.js → SupportedContracts.sol/ISupportedContracts__factory.js} +25 -17
  127. package/lib/types/factories/contracts/test/suites/mainnet/SupportedContracts.sol/index.d.ts +1 -0
  128. package/lib/types/factories/contracts/test/suites/mainnet/SupportedContracts.sol/index.js +8 -0
  129. package/lib/types/factories/contracts/test/suites/mainnet/Tokens.sol/IToken__factory.d.ts +22 -0
  130. package/lib/types/factories/contracts/test/suites/mainnet/Tokens.sol/IToken__factory.js +79 -0
  131. package/lib/types/factories/contracts/test/suites/mainnet/Tokens.sol/index.d.ts +1 -0
  132. package/lib/types/factories/contracts/test/suites/mainnet/Tokens.sol/index.js +8 -0
  133. package/lib/types/factories/contracts/test/suites/mainnet/index.d.ts +2 -1
  134. package/lib/types/factories/contracts/test/suites/mainnet/index.js +26 -3
  135. package/lib/types/index.d.ts +14 -2
  136. package/lib/types/index.js +17 -5
  137. package/package.json +6 -2
  138. package/lib/types/contracts/test/suites/mainnet/IPriceFeedsRegistry.d.ts +0 -42
@@ -22,3 +22,4 @@ export declare const timeRanges: Record<string, number>;
22
22
  export declare const LEVERAGE_DECIMALS = 100;
23
23
  export declare const SLIPPAGE_DECIMALS = 100;
24
24
  export declare const ADDRESS_0X0 = "0x0000000000000000000000000000000000000000";
25
+ export declare const DUMB_ADDRESS = "0xC4375B7De8af5a38a93548eb8453a498222C4fF2";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ADDRESS_0X0 = exports.SLIPPAGE_DECIMALS = exports.LEVERAGE_DECIMALS = exports.timeRanges = exports.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD = exports.LIQUIDATION_DISCOUNTED_SUM = exports.PERCENTAGE_FACTOR = exports.PERCENTAGE_DECIMALS = exports.SECONDS_PER_YEAR = exports.PRICE_DECIMALS = exports.PRICE_DECIMALS_POW = exports.WAD = exports.WAD_DECIMALS_POW = exports.halfRAY = exports.RAY = exports.RAY_DECIMALS_POW = exports.getNetworkType = exports.HARDHAT_NETWORK = exports.LOCAL_NETWORK = exports.GOERLI_NETWORK = exports.MAINNET_NETWORK = exports.MAX_INT = void 0;
3
+ exports.DUMB_ADDRESS = exports.ADDRESS_0X0 = exports.SLIPPAGE_DECIMALS = exports.LEVERAGE_DECIMALS = exports.timeRanges = exports.UNDERLYING_TOKEN_LIQUIDATION_THRESHOLD = exports.LIQUIDATION_DISCOUNTED_SUM = exports.PERCENTAGE_FACTOR = exports.PERCENTAGE_DECIMALS = exports.SECONDS_PER_YEAR = exports.PRICE_DECIMALS = exports.PRICE_DECIMALS_POW = exports.WAD = exports.WAD_DECIMALS_POW = exports.halfRAY = exports.RAY = exports.RAY_DECIMALS_POW = exports.getNetworkType = exports.HARDHAT_NETWORK = exports.LOCAL_NETWORK = exports.GOERLI_NETWORK = exports.MAINNET_NETWORK = exports.MAX_INT = void 0;
4
4
  var ethers_1 = require("ethers");
5
5
  exports.MAX_INT = ethers_1.BigNumber.from("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
6
6
  exports.MAINNET_NETWORK = 1;
@@ -41,3 +41,5 @@ exports.timeRanges = {
41
41
  exports.LEVERAGE_DECIMALS = 100;
42
42
  exports.SLIPPAGE_DECIMALS = 100;
43
43
  exports.ADDRESS_0X0 = "0x0000000000000000000000000000000000000000";
44
+ // Used in tests
45
+ exports.DUMB_ADDRESS = "0xC4375B7De8af5a38a93548eb8453a498222C4fF2";
package/lib/index.d.ts CHANGED
@@ -29,6 +29,7 @@ export * from "./apy";
29
29
  export { AdapterInterface } from "./contracts/adapters";
30
30
  export { getContractName } from "./contracts/contractsRegister";
31
31
  export * from "./core/history";
32
+ export * from "./parsers/txParser";
32
33
  export * from "./pathfinder/tradeTypes";
33
34
  export * from "./strategies/convex";
34
35
  export * from "./strategies/creditFacade";
@@ -40,6 +41,7 @@ export * from "./strategies/yearn";
40
41
  export * from "./tokens/connectors";
41
42
  export * from "./tokens/convex";
42
43
  export * from "./tokens/curveLP";
44
+ export * from "./tokens/decimals";
43
45
  export * from "./tokens/gear";
44
46
  export * from "./tokens/normal";
45
47
  export * from "./tokens/token";
package/lib/index.js CHANGED
@@ -49,6 +49,7 @@ Object.defineProperty(exports, "AdapterInterface", { enumerable: true, get: func
49
49
  var contractsRegister_1 = require("./contracts/contractsRegister");
50
50
  Object.defineProperty(exports, "getContractName", { enumerable: true, get: function () { return contractsRegister_1.getContractName; } });
51
51
  __exportStar(require("./core/history"), exports);
52
+ __exportStar(require("./parsers/txParser"), exports);
52
53
  __exportStar(require("./pathfinder/tradeTypes"), exports);
53
54
  __exportStar(require("./strategies/convex"), exports);
54
55
  __exportStar(require("./strategies/creditFacade"), exports);
@@ -60,6 +61,7 @@ __exportStar(require("./strategies/yearn"), exports);
60
61
  __exportStar(require("./tokens/connectors"), exports);
61
62
  __exportStar(require("./tokens/convex"), exports);
62
63
  __exportStar(require("./tokens/curveLP"), exports);
64
+ __exportStar(require("./tokens/decimals"), exports);
63
65
  __exportStar(require("./tokens/gear"), exports);
64
66
  __exportStar(require("./tokens/normal"), exports);
65
67
  __exportStar(require("./tokens/token"), exports);
@@ -0,0 +1,18 @@
1
+ import { FunctionFragment, Result } from "@ethersproject/abi";
2
+ import { BigNumberish, BytesLike, utils } from "ethers";
3
+ import { SupportedToken } from "../tokens/token";
4
+ interface ParseSelectorResult {
5
+ functionFragment: FunctionFragment;
6
+ functionName: string;
7
+ }
8
+ export declare class AbstractParser {
9
+ readonly contract: string;
10
+ protected ifc: utils.Interface;
11
+ adapterName: string;
12
+ constructor(contract: string);
13
+ parseSelector(calldata: string): ParseSelectorResult;
14
+ decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): Result;
15
+ tokenSymbol(address: string): SupportedToken;
16
+ formatBN(amount: BigNumberish, token: SupportedToken): string;
17
+ }
18
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractParser = void 0;
4
+ var ethers_1 = require("ethers");
5
+ var decimals_1 = require("../tokens/decimals");
6
+ var token_1 = require("../tokens/token");
7
+ var formatter_1 = require("../utils/formatter");
8
+ var AbstractParser = /** @class */ (function () {
9
+ function AbstractParser(contract) {
10
+ this.contract = contract;
11
+ this.adapterName = "Contract";
12
+ }
13
+ AbstractParser.prototype.parseSelector = function (calldata) {
14
+ var functionFragment = this.ifc.getFunction(ethers_1.utils.hexDataSlice(calldata, 0, 4));
15
+ var functionName = "".concat(this.adapterName, "[").concat(this.contract, "].").concat(functionFragment.name);
16
+ return { functionFragment: functionFragment, functionName: functionName };
17
+ };
18
+ AbstractParser.prototype.decodeFunctionData = function (functionFragment, data) {
19
+ return this.ifc.decodeFunctionData(functionFragment, data);
20
+ };
21
+ AbstractParser.prototype.tokenSymbol = function (address) {
22
+ var symbol = token_1.tokenSymbolByAddress[address.toLowerCase()];
23
+ if (!symbol)
24
+ throw new Error("Unknown token: ".concat(address));
25
+ return symbol;
26
+ };
27
+ AbstractParser.prototype.formatBN = function (amount, token) {
28
+ return "".concat((0, formatter_1.formatBN)(amount, decimals_1.decimals[token]), " [").concat(ethers_1.BigNumber.from(amount).toString(), "]");
29
+ };
30
+ return AbstractParser;
31
+ }());
32
+ exports.AbstractParser = AbstractParser;
@@ -0,0 +1,9 @@
1
+ import { BigNumberish } from "ethers";
2
+ import { SupportedContract } from "../contracts/contracts";
3
+ import { AbstractParser } from "./abstractParser";
4
+ import { IParser } from "./iParser";
5
+ export declare class ConvexBaseRewardPoolAdapterParser extends AbstractParser implements IParser {
6
+ constructor(contract: SupportedContract, isContract: boolean);
7
+ parse(calldata: string): string;
8
+ formatAmount(amount: BigNumberish): string;
9
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ConvexBaseRewardPoolAdapterParser = void 0;
19
+ var contracts_1 = require("../contracts/contracts");
20
+ var types_1 = require("../types");
21
+ var abstractParser_1 = require("./abstractParser");
22
+ var ConvexBaseRewardPoolAdapterParser = /** @class */ (function (_super) {
23
+ __extends(ConvexBaseRewardPoolAdapterParser, _super);
24
+ function ConvexBaseRewardPoolAdapterParser(contract, isContract) {
25
+ var _this = _super.call(this, contract) || this;
26
+ _this.ifc = types_1.IConvexV1BaseRewardPoolAdapter__factory.createInterface();
27
+ if (!isContract)
28
+ _this.adapterName = "ConvexV1BaseRewardPoolAdapter";
29
+ return _this;
30
+ }
31
+ ConvexBaseRewardPoolAdapterParser.prototype.parse = function (calldata) {
32
+ var _a = this.parseSelector(calldata), functionFragment = _a.functionFragment, functionName = _a.functionName;
33
+ switch (functionFragment.name) {
34
+ case "stake":
35
+ case "stakeAll": {
36
+ var amount = this.decodeFunctionData(functionFragment, calldata)[0];
37
+ var amountStr = amount ? "amount: ".concat(this.formatAmount(amount)) : "";
38
+ return "".concat(functionName, "(").concat(amountStr, ")");
39
+ }
40
+ case "withdraw":
41
+ case "withdrawAndUnwrap": {
42
+ var _b = this.decodeFunctionData(functionFragment, calldata), amount = _b[0], claim = _b[1];
43
+ return "".concat(functionName, "(amount: ").concat(this.formatAmount(amount), ", claim: ").concat(claim, ")");
44
+ }
45
+ case "withdrawAll":
46
+ case "withdrawAllAndUnwrap": {
47
+ var claim = this.decodeFunctionData(functionFragment, calldata)[0];
48
+ return "".concat(functionName, "(claim: ").concat(claim, ")");
49
+ }
50
+ default:
51
+ return "".concat(functionName, ": Unknown operation ").concat(functionFragment.name, " with calldata ").concat(calldata);
52
+ }
53
+ };
54
+ ConvexBaseRewardPoolAdapterParser.prototype.formatAmount = function (amount) {
55
+ return this.formatBN(amount, contracts_1.contractParams[this.contract]
56
+ .stakedToken);
57
+ };
58
+ return ConvexBaseRewardPoolAdapterParser;
59
+ }(abstractParser_1.AbstractParser));
60
+ exports.ConvexBaseRewardPoolAdapterParser = ConvexBaseRewardPoolAdapterParser;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var chai_1 = require("chai");
4
+ var constants_1 = require("../core/constants");
5
+ var types_1 = require("../types");
6
+ var convexBaseRewardPoolAdapterParser_1 = require("./convexBaseRewardPoolAdapterParser");
7
+ describe("ConvexV1BaseRewardPoolAdapterParser test", function () {
8
+ it("stake / withdraw functions works well", function () {
9
+ var parser = new convexBaseRewardPoolAdapterParser_1.ConvexBaseRewardPoolAdapterParser("CONVEX_FRAX3CRV_POOL", false);
10
+ var ifc = types_1.IConvexV1BaseRewardPoolAdapter__factory.createInterface();
11
+ var parsed = parser.parse(ifc.encodeFunctionData("stake", [constants_1.WAD.mul(199).div(10)]));
12
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].stake(amount: 19.90 [19900000000000000000])", "Incorrect parse stake");
13
+ parsed = parser.parse(ifc.encodeFunctionData("stakeAll"));
14
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].stakeAll()", "Incorrect parse stakeAll");
15
+ parsed = parser.parse(ifc.encodeFunctionData("withdraw", [constants_1.WAD.mul(199).div(1000), false]));
16
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdraw(amount: 0.19 [199000000000000000], claim: false)", "Incorrect parse withdraw");
17
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawAndUnwrap", [constants_1.WAD.mul(2).div(1000), true]));
18
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawAndUnwrap(amount: 0.002 [2000000000000000], claim: true)", "Incorrect parse withdrawAndUnwrap");
19
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawAll", [false]));
20
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawAll(claim: false)", "Incorrect parse withdrawAll");
21
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawAllAndUnwrap", [true]));
22
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BaseRewardPoolAdapter[CONVEX_FRAX3CRV_POOL].withdrawAllAndUnwrap(claim: true)", "Incorrect parse withdrawAllAndUnwrap");
23
+ });
24
+ });
@@ -0,0 +1,10 @@
1
+ import { BigNumberish } from "ethers";
2
+ import { SupportedContract } from "../contracts/contracts";
3
+ import { AbstractParser } from "./abstractParser";
4
+ import { IParser } from "./iParser";
5
+ export declare class ConvexBoosterAdapterParser extends AbstractParser implements IParser {
6
+ constructor(contract: SupportedContract, isContract: boolean);
7
+ parse(calldata: string): string;
8
+ formatAmount(amount: BigNumberish, pid: number): string;
9
+ formatPid(pid: number): string;
10
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ConvexBoosterAdapterParser = void 0;
19
+ var convex_1 = require("../tokens/convex");
20
+ var types_1 = require("../types");
21
+ var abstractParser_1 = require("./abstractParser");
22
+ var ConvexBoosterAdapterParser = /** @class */ (function (_super) {
23
+ __extends(ConvexBoosterAdapterParser, _super);
24
+ function ConvexBoosterAdapterParser(contract, isContract) {
25
+ var _this = _super.call(this, contract) || this;
26
+ _this.ifc = types_1.IConvexV1BoosterAdapter__factory.createInterface();
27
+ if (!isContract)
28
+ _this.adapterName = "ConvexV1BoosterAdapter";
29
+ return _this;
30
+ }
31
+ ConvexBoosterAdapterParser.prototype.parse = function (calldata) {
32
+ var _a = this.parseSelector(calldata), functionFragment = _a.functionFragment, functionName = _a.functionName;
33
+ switch (functionFragment.name) {
34
+ case "deposit": {
35
+ var _b = this.decodeFunctionData(functionFragment, calldata), pid = _b[0], amount = _b[1], stake = _b[2];
36
+ return "".concat(functionName, "(pid: ").concat(this.formatPid(pid), ", amount: ").concat(this.formatAmount(amount, pid), ", stake: ").concat(stake, ")");
37
+ }
38
+ case "depositAll": {
39
+ var _c = this.decodeFunctionData(functionFragment, calldata), pid = _c[0], stake = _c[1];
40
+ return "".concat(functionName, "(pid: ").concat(this.formatPid(pid), ", stake: ").concat(stake, ")");
41
+ }
42
+ case "withdraw": {
43
+ var _d = this.decodeFunctionData(functionFragment, calldata), pid = _d[0], amount = _d[1];
44
+ return "".concat(functionName, "(pid: ").concat(this.formatPid(pid), ", amount: ").concat(this.formatAmount(amount, pid), ")");
45
+ }
46
+ case "withdrawAll": {
47
+ var pid = this.decodeFunctionData(functionFragment, calldata)[0];
48
+ return "".concat(functionName, "(pid: ").concat(this.formatPid(pid), ")");
49
+ }
50
+ default:
51
+ return "".concat(functionName, ": Unknown operation ").concat(functionFragment.name, " with calldata ").concat(calldata);
52
+ }
53
+ };
54
+ ConvexBoosterAdapterParser.prototype.formatAmount = function (amount, pid) {
55
+ return this.formatBN(amount, convex_1.convexLpTokenByPid[pid]);
56
+ };
57
+ ConvexBoosterAdapterParser.prototype.formatPid = function (pid) {
58
+ return "".concat(pid, " [").concat(convex_1.convexPoolByPid[pid], "]");
59
+ };
60
+ return ConvexBoosterAdapterParser;
61
+ }(abstractParser_1.AbstractParser));
62
+ exports.ConvexBoosterAdapterParser = ConvexBoosterAdapterParser;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var chai_1 = require("chai");
4
+ var constants_1 = require("../core/constants");
5
+ var types_1 = require("../types");
6
+ var convexBoosterAdapterParser_1 = require("./convexBoosterAdapterParser");
7
+ describe("ConvexV1BaseRewardPoolAdapterParser test", function () {
8
+ it("stake / withdraw functions works well", function () {
9
+ var parser = new convexBoosterAdapterParser_1.ConvexBoosterAdapterParser("CONVEX_BOOSTER", false);
10
+ var ifc = types_1.IConvexV1BoosterAdapter__factory.createInterface();
11
+ var parsed = parser.parse(ifc.encodeFunctionData("deposit", [9, constants_1.WAD.mul(19999), false]));
12
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].deposit(pid: 9 [CONVEX_3CRV_POOL], amount: 19.99K [19999000000000000000000], stake: false)", "Incorrect parse deposit");
13
+ parsed = parser.parse(ifc.encodeFunctionData("depositAll", [32, true]));
14
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].depositAll(pid: 32 [CONVEX_FRAX3CRV_POOL], stake: true)", "Incorrect parse depositAll");
15
+ parsed = parser.parse(ifc.encodeFunctionData("withdraw", [9, constants_1.WAD.mul(555).div(10)]));
16
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].withdraw(pid: 9 [CONVEX_3CRV_POOL], amount: 55.50 [55500000000000000000])", "Incorrect parse withdraw");
17
+ parsed = parser.parse(ifc.encodeFunctionData("withdrawAll", [32]));
18
+ (0, chai_1.expect)(parsed).to.be.eq("ConvexV1BoosterAdapter[CONVEX_BOOSTER].withdrawAll(pid: 32 [CONVEX_FRAX3CRV_POOL])", "Incorrect parse withdrawAll");
19
+ });
20
+ });
@@ -0,0 +1,9 @@
1
+ import { BigNumberish } from "ethers";
2
+ import { SupportedToken } from "../tokens/token";
3
+ import { AbstractParser } from "./abstractParser";
4
+ import { IParser } from "./iParser";
5
+ export declare class CreditFacadeParser extends AbstractParser implements IParser {
6
+ constructor(token: SupportedToken);
7
+ parse(calldata: string): string;
8
+ formatAmount(amount: BigNumberish): string;
9
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CreditFacadeParser = void 0;
19
+ var types_1 = require("../types");
20
+ var abstractParser_1 = require("./abstractParser");
21
+ var CreditFacadeParser = /** @class */ (function (_super) {
22
+ __extends(CreditFacadeParser, _super);
23
+ function CreditFacadeParser(token) {
24
+ var _this = _super.call(this, token) || this;
25
+ _this.ifc = types_1.ICreditFacadeExtended__factory.createInterface();
26
+ _this.adapterName = "CreditFacade";
27
+ return _this;
28
+ }
29
+ CreditFacadeParser.prototype.parse = function (calldata) {
30
+ var _this = this;
31
+ var _a = this.parseSelector(calldata), functionFragment = _a.functionFragment, functionName = _a.functionName;
32
+ switch (functionFragment.name) {
33
+ case "addCollateral": {
34
+ var _b = this.decodeFunctionData(functionFragment, calldata), onBehalf = _b[0], token = _b[1], amount = _b[2];
35
+ return "".concat(functionName, "(onBehalf: ").concat(onBehalf, ", token: ").concat(this.tokenSymbol(token), ", amount: ").concat(this.formatAmount(amount), ")");
36
+ }
37
+ case "increaseDebt":
38
+ case "decreaseDebt": {
39
+ var amount = this.decodeFunctionData(functionFragment, calldata)[0];
40
+ return "".concat(functionName, "(amount: ").concat(this.formatAmount(amount), ")");
41
+ }
42
+ case "enableToken":
43
+ case "disableToken": {
44
+ var address = this.decodeFunctionData(functionFragment, calldata)[0];
45
+ return "".concat(functionName, "(token: ").concat(this.tokenSymbol(address), ")");
46
+ }
47
+ case "revertIfReceivedLessThan": {
48
+ var balances = this.decodeFunctionData(functionFragment, calldata)[0];
49
+ var balancesStr = balances
50
+ .map(function (b) {
51
+ var symbol = _this.tokenSymbol(b.token);
52
+ return "".concat(symbol, ": ").concat(_this.formatBN(b.balance, symbol));
53
+ })
54
+ .join(", ");
55
+ return "".concat(functionName, "(").concat(balancesStr, ")");
56
+ }
57
+ default:
58
+ return "".concat(functionName, ": Unknown operation ").concat(functionFragment.name, " with calldata ").concat(calldata);
59
+ }
60
+ };
61
+ CreditFacadeParser.prototype.formatAmount = function (amount) {
62
+ return this.formatBN(amount, this.contract);
63
+ };
64
+ return CreditFacadeParser;
65
+ }(abstractParser_1.AbstractParser));
66
+ exports.CreditFacadeParser = CreditFacadeParser;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var chai_1 = require("chai");
4
+ var constants_1 = require("../core/constants");
5
+ var token_1 = require("../tokens/token");
6
+ var types_1 = require("../types");
7
+ var creditFacadeParser_1 = require("./creditFacadeParser");
8
+ describe("CreditFacadeParser test", function () {
9
+ it("all functions works well", function () {
10
+ var parser = new creditFacadeParser_1.CreditFacadeParser("DAI");
11
+ var ifc = types_1.ICreditFacadeExtended__factory.createInterface();
12
+ var parsed = parser.parse(ifc.encodeFunctionData("addCollateral", [
13
+ constants_1.DUMB_ADDRESS,
14
+ token_1.tokenDataByNetwork.Mainnet.WBTC,
15
+ constants_1.WAD.mul(444).div(10),
16
+ ]));
17
+ (0, chai_1.expect)(parsed).to.be.eq("CreditFacade[DAI].addCollateral(onBehalf: 0xC4375B7De8af5a38a93548eb8453a498222C4fF2, token: WBTC, amount: 44.40 [44400000000000000000])", "Incorrect parse addCollateral");
18
+ parsed = parser.parse(ifc.encodeFunctionData("increaseDebt", [constants_1.WAD.mul(414).div(10)]));
19
+ (0, chai_1.expect)(parsed).to.be.eq("CreditFacade[DAI].increaseDebt(amount: 41.40 [41400000000000000000])", "Incorrect parse increaseDebt");
20
+ parsed = parser.parse(ifc.encodeFunctionData("decreaseDebt", [constants_1.WAD.mul(334).div(10)]));
21
+ (0, chai_1.expect)(parsed).to.be.eq("CreditFacade[DAI].decreaseDebt(amount: 33.40 [33400000000000000000])", "Incorrect parse decreaseDebt");
22
+ parsed = parser.parse(ifc.encodeFunctionData("enableToken", [token_1.tokenDataByNetwork.Mainnet.WETH]));
23
+ (0, chai_1.expect)(parsed).to.be.eq("CreditFacade[DAI].enableToken(token: WETH)", "Incorrect parse enableToken");
24
+ parsed = parser.parse(ifc.encodeFunctionData("disableToken", [token_1.tokenDataByNetwork.Mainnet.LINK]));
25
+ (0, chai_1.expect)(parsed).to.be.eq("CreditFacade[DAI].disableToken(token: LINK)", "Incorrect parse disableToken");
26
+ });
27
+ });
@@ -0,0 +1,12 @@
1
+ import { BigNumberish } from "ethers";
2
+ import { SupportedContract } from "../contracts/contracts";
3
+ import { SupportedToken } from "../tokens/token";
4
+ import { AbstractParser } from "./abstractParser";
5
+ import { IParser } from "./iParser";
6
+ export declare class CurveAdapterParser extends AbstractParser implements IParser {
7
+ protected lpToken: SupportedToken;
8
+ constructor(contract: SupportedContract, isContract: boolean);
9
+ parse(calldata: string): string;
10
+ getTokenByIndex(index: number): SupportedToken;
11
+ convertAmounts(amounts: Array<BigNumberish>): string;
12
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CurveAdapterParser = void 0;
19
+ var contracts_1 = require("../contracts/contracts");
20
+ var types_1 = require("../types");
21
+ var formatter_1 = require("../utils/formatter");
22
+ var abstractParser_1 = require("./abstractParser");
23
+ var CurveAdapterParser = /** @class */ (function (_super) {
24
+ __extends(CurveAdapterParser, _super);
25
+ function CurveAdapterParser(contract, isContract) {
26
+ var _this = _super.call(this, contract) || this;
27
+ var contractName = "";
28
+ var nCoins = contracts_1.contractParams[contract].tokens.length;
29
+ switch (nCoins) {
30
+ case 2:
31
+ _this.ifc = types_1.ICurveV1_2AssetsAdapter__factory.createInterface();
32
+ contractName = "Curve2AssetsAdapter";
33
+ break;
34
+ case 3:
35
+ _this.ifc = types_1.ICurveV1_3AssetsAdapter__factory.createInterface();
36
+ contractName = "Curve3AssetsAdapter";
37
+ break;
38
+ case 4:
39
+ _this.ifc = types_1.ICurveV1_4AssetsAdapter__factory.createInterface();
40
+ contractName = "Curve4AssetsAdapter";
41
+ break;
42
+ default:
43
+ throw new Error("Unsupported curve contract ".concat(contract));
44
+ }
45
+ _this.lpToken = contracts_1.contractParams[contract].lpToken;
46
+ if (!isContract)
47
+ _this.adapterName = contractName;
48
+ return _this;
49
+ }
50
+ CurveAdapterParser.prototype.parse = function (calldata) {
51
+ var _a = this.parseSelector(calldata), functionFragment = _a.functionFragment, functionName = _a.functionName;
52
+ switch (functionFragment.name) {
53
+ case "exchange":
54
+ case "exchange_underlying": {
55
+ var _b = this.decodeFunctionData(functionFragment, calldata), i = _b[0], j = _b[1], dx = _b[2], min_dy = _b[3];
56
+ var iSym = this.getTokenByIndex(i);
57
+ var jSym = this.getTokenByIndex(j);
58
+ return "".concat(functionName, "(i ,j: ").concat(iSym, " => ").concat(jSym, ", dx: ").concat(this.formatBN(dx, iSym), ", min_dy: ").concat(this.formatBN(min_dy, jSym), ")");
59
+ }
60
+ case "exchange_all":
61
+ case "exchange_all_underlying": {
62
+ var _c = this.decodeFunctionData(functionFragment, calldata), i = _c[0], j = _c[1], rateMinRAY = _c[2];
63
+ return "".concat(functionName, "(i: ").concat(this.getTokenByIndex(i), ", j: ").concat(this.getTokenByIndex(j), ", rateMinRAY: ").concat((0, formatter_1.formatBN)(rateMinRAY, 27));
64
+ }
65
+ case "add_liquidity_one_coin": {
66
+ var _d = this.decodeFunctionData(functionFragment, calldata), amount = _d[0], i = _d[1], minAmount = _d[2];
67
+ var iSym = this.getTokenByIndex(i);
68
+ return "".concat(functionName, "(amount: ").concat(this.formatBN(amount, iSym), ", i: ").concat(iSym, ", minAmount: ").concat(this.formatBN(minAmount, this.lpToken), ")");
69
+ }
70
+ case "add_all_liquidity_one_coin":
71
+ case "remove_all_liquidity_one_coin": {
72
+ var _e = this.decodeFunctionData(functionFragment, calldata), i = _e[0], rateMinRAY = _e[1];
73
+ return "".concat(functionName, "(i: ").concat(this.getTokenByIndex(i), ", rateMinRAY: ").concat((0, formatter_1.formatBN)(rateMinRAY, 27), ")");
74
+ }
75
+ case "add_liquidity": {
76
+ var _f = this.decodeFunctionData(functionFragment, calldata), amounts = _f[0], minAmount = _f[1];
77
+ return "".concat(functionName, "(amounts: [").concat(this.convertAmounts(amounts), "], minAmount: ").concat(this.formatBN(minAmount, this.lpToken), ")");
78
+ }
79
+ case "remove_liquidity": {
80
+ var _g = this.decodeFunctionData(functionFragment, calldata), amount = _g[0], min_amounts = _g[1];
81
+ return "".concat(functionName, "(amount: ").concat(this.formatBN(amount, this.lpToken), ", min_amounts: [").concat(this.convertAmounts(min_amounts), "])");
82
+ }
83
+ case "remove_liquidity_imbalance": {
84
+ var _h = this.decodeFunctionData(functionFragment, calldata), amounts = _h[0], maxBurnAmount = _h[1];
85
+ return "".concat(functionName, "(amounts: [").concat(this.convertAmounts(amounts), "], max_burn_amount: ").concat(this.formatBN(maxBurnAmount, this.lpToken), ")");
86
+ }
87
+ default:
88
+ return "".concat(functionName, ": Unknown operation ").concat(functionFragment.name, " with calldata ").concat(calldata);
89
+ }
90
+ };
91
+ CurveAdapterParser.prototype.getTokenByIndex = function (index) {
92
+ return contracts_1.contractParams[this.contract]
93
+ .tokens[index];
94
+ };
95
+ CurveAdapterParser.prototype.convertAmounts = function (amounts) {
96
+ var _this = this;
97
+ return amounts
98
+ .map(function (a, coin) {
99
+ var sym = _this.getTokenByIndex(coin);
100
+ return "".concat(sym, ": ").concat(_this.formatBN(a, sym));
101
+ })
102
+ .join(", ");
103
+ };
104
+ return CurveAdapterParser;
105
+ }(abstractParser_1.AbstractParser));
106
+ exports.CurveAdapterParser = CurveAdapterParser;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var chai_1 = require("chai");
4
+ var constants_1 = require("../core/constants");
5
+ var types_1 = require("../types");
6
+ var curveAdapterParser_1 = require("./curveAdapterParser");
7
+ describe("CurveAdapterParser test", function () {
8
+ it("stake / withdraw functions works well", function () {
9
+ var parser = new curveAdapterParser_1.CurveAdapterParser("CURVE_FRAX_POOL", false);
10
+ var ifc = types_1.ICurveV1_2AssetsAdapter__factory.createInterface();
11
+ var parsed = parser.parse(ifc.encodeFunctionData("exchange", [0, 1, constants_1.WAD.mul(3), constants_1.WAD.mul(32)]));
12
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].exchange(i ,j: FRAX => 3Crv, dx: 3.00 [3000000000000000000], min_dy: 32.00 [32000000000000000000])", "Curve2AssetsAdapter: Incorrect parse exchange");
13
+ parsed = parser.parse(ifc.encodeFunctionData("exchange_underlying", [
14
+ 0,
15
+ 1,
16
+ constants_1.WAD.mul(3),
17
+ constants_1.WAD.mul(32),
18
+ ]));
19
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].exchange_underlying(i ,j: FRAX => 3Crv, dx: 3.00 [3000000000000000000], min_dy: 32.00 [32000000000000000000])", "Curve2AssetsAdapter: Incorrect parse exchange_underlying");
20
+ parsed = parser.parse(ifc.encodeFunctionData("add_liquidity_one_coin", [
21
+ constants_1.WAD.mul(3),
22
+ 0,
23
+ constants_1.WAD.mul(2),
24
+ ]));
25
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].add_liquidity_one_coin(amount: 3.00 [3000000000000000000], i: FRAX, minAmount: 2.00 [2000000000000000000])", "Curve2AssetsAdapter: Incorrect parse add_liquidity_one_coin");
26
+ parsed = parser.parse(ifc.encodeFunctionData("add_all_liquidity_one_coin", [0, constants_1.RAY.mul(912)]));
27
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].add_all_liquidity_one_coin(i: FRAX, rateMinRAY: 912.00)", "Curve2AssetsAdapter: Incorrect parse add_all_liquidity_one_coin");
28
+ parsed = parser.parse(ifc.encodeFunctionData("remove_all_liquidity_one_coin", [
29
+ 0,
30
+ constants_1.RAY.mul(721),
31
+ ]));
32
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].remove_all_liquidity_one_coin(i: FRAX, rateMinRAY: 721.00)", "Curve2AssetsAdapter: Incorrect parse remove_all_liquidity_one_coin");
33
+ parsed = parser.parse(ifc.encodeFunctionData("add_liquidity", [
34
+ [constants_1.WAD.mul(100), constants_1.WAD.mul(100)],
35
+ constants_1.WAD.mul(80),
36
+ ]));
37
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].add_liquidity(amounts: [FRAX: 100.00 [100000000000000000000], 3Crv: 100.00 [100000000000000000000]], minAmount: 80.00 [80000000000000000000])", "Curve2AssetsAdapter: Incorrect parse add_liquidity");
38
+ parsed = parser.parse(ifc.encodeFunctionData("remove_liquidity", [
39
+ constants_1.WAD.mul(120),
40
+ [constants_1.WAD.mul(100), constants_1.WAD.mul(100)],
41
+ ]));
42
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].remove_liquidity(amount: 120.00 [120000000000000000000], min_amounts: [FRAX: 100.00 [100000000000000000000], 3Crv: 100.00 [100000000000000000000]])", "Curve2AssetsAdapter: Incorrect parse remove_liquidity");
43
+ parsed = parser.parse(ifc.encodeFunctionData("remove_liquidity_imbalance", [
44
+ [constants_1.WAD.mul(100), constants_1.WAD.mul(100)],
45
+ constants_1.WAD.mul(80),
46
+ ]));
47
+ (0, chai_1.expect)(parsed).to.be.eq("Curve2AssetsAdapter[CURVE_FRAX_POOL].remove_liquidity_imbalance(amounts: [FRAX: 100.00 [100000000000000000000], 3Crv: 100.00 [100000000000000000000]], max_burn_amount: 80.00 [80000000000000000000])", "Curve2AssetsAdapter: Incorrect parse remove_liquidity_imbalance");
48
+ });
49
+ });
@@ -0,0 +1,3 @@
1
+ export interface IParser {
2
+ parse: (calldata: string) => string;
3
+ }
@@ -0,0 +1,7 @@
1
+ import { SupportedContract } from "../contracts/contracts";
2
+ import { AbstractParser } from "./abstractParser";
3
+ import { IParser } from "./iParser";
4
+ export declare class LidoAdapterParser extends AbstractParser implements IParser {
5
+ constructor(contract: SupportedContract, isContract: boolean);
6
+ parse(calldata: string): string;
7
+ }