@paraswap/dex-lib 2.47.5 → 2.47.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/build/abi/balancer-v2/gyro-e.abi.json +1595 -0
  2. package/build/dex/balancer-v2/balancer-v2.d.ts +6 -3
  3. package/build/dex/balancer-v2/balancer-v2.js +56 -35
  4. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  5. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +32 -0
  6. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +149 -0
  7. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +1 -0
  8. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +37 -0
  9. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +222 -0
  10. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +1 -0
  11. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.d.ts +2 -0
  12. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js +19 -0
  13. package/build/dex/balancer-v2/pools/gyro/gyro-helpers.js.map +1 -0
  14. package/build/dex/balancer-v2/queryOnChain.d.ts +1 -0
  15. package/build/dex/balancer-v2/queryOnChain.js +40 -0
  16. package/build/dex/balancer-v2/queryOnChain.js.map +1 -0
  17. package/build/dex/balancer-v2/types.d.ts +24 -1
  18. package/build/dex/balancer-v2/types.js +2 -0
  19. package/build/dex/balancer-v2/types.js.map +1 -1
  20. package/build/dex/balancer-v2/utils.d.ts +8 -0
  21. package/build/dex/balancer-v2/utils.js +17 -1
  22. package/build/dex/balancer-v2/utils.js.map +1 -1
  23. package/package.json +2 -1
  24. package/src/abi/balancer-v2/gyro-e.abi.json +1595 -0
  25. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +94 -0
  26. package/src/dex/balancer-v2/balancer-v2-gyro3.test.ts +268 -0
  27. package/src/dex/balancer-v2/balancer-v2-gyroE.test.ts +401 -0
  28. package/src/dex/balancer-v2/balancer-v2-integration.test.ts +253 -112
  29. package/src/dex/balancer-v2/balancer-v2.ts +107 -67
  30. package/src/dex/balancer-v2/pools/gyro/Gyro3Pool.ts +255 -0
  31. package/src/dex/balancer-v2/pools/gyro/GyroEPool.ts +403 -0
  32. package/src/dex/balancer-v2/pools/gyro/gyro-helpers.ts +15 -0
  33. package/src/dex/balancer-v2/queryOnChain.ts +48 -0
  34. package/src/dex/balancer-v2/types.ts +26 -0
  35. package/src/dex/balancer-v2/utils.ts +16 -0
  36. package/src/dex/synthetix/synthetix-state.ts +2 -2
  37. package/tests/constants-e2e.ts +26 -0
  38. package/build/abi/Redstone.json +0 -739
  39. package/build/abi/angle/stagToken.json +0 -963
  40. package/build/abi/angle-transmuter/Pyth.json +0 -1534
  41. package/build/abi/angle-transmuter/Transmuter.json +0 -1719
  42. package/build/abi/smardex/smardex-factory.json +0 -185
  43. package/build/abi/smardex/smardex-pool.json +0 -578
  44. package/build/abi/smardex/smardex-router.json +0 -648
  45. package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -1208
  46. package/build/abi/trader-joe-v2_1/PairABI.json +0 -1493
  47. package/build/abi/trader-joe-v2_1/RouterABI.json +0 -1489
  48. package/build/abi/trader-joe-v2_1/StateMulticall.json +0 -193
  49. package/build/abi/wombat/pool.json +0 -1289
  50. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +0 -53
  51. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +0 -175
  52. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +0 -1
  53. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +0 -42
  54. package/build/dex/angle-staked-stable/angle-staked-stable.js +0 -232
  55. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +0 -1
  56. package/build/dex/angle-staked-stable/config.d.ts +0 -4
  57. package/build/dex/angle-staked-stable/config.js +0 -26
  58. package/build/dex/angle-staked-stable/config.js.map +0 -1
  59. package/build/dex/angle-staked-stable/types.d.ts +0 -15
  60. package/build/dex/angle-staked-stable/types.js +0 -3
  61. package/build/dex/angle-staked-stable/types.js.map +0 -1
  62. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +0 -43
  63. package/build/dex/angle-transmuter/angle-transmuter-pool.js +0 -309
  64. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +0 -1
  65. package/build/dex/angle-transmuter/angle-transmuter.d.ts +0 -46
  66. package/build/dex/angle-transmuter/angle-transmuter.js +0 -233
  67. package/build/dex/angle-transmuter/angle-transmuter.js.map +0 -1
  68. package/build/dex/angle-transmuter/backedOracle.d.ts +0 -19
  69. package/build/dex/angle-transmuter/backedOracle.js +0 -56
  70. package/build/dex/angle-transmuter/backedOracle.js.map +0 -1
  71. package/build/dex/angle-transmuter/config.d.ts +0 -4
  72. package/build/dex/angle-transmuter/config.js +0 -20
  73. package/build/dex/angle-transmuter/config.js.map +0 -1
  74. package/build/dex/angle-transmuter/constants.d.ts +0 -4
  75. package/build/dex/angle-transmuter/constants.js +0 -8
  76. package/build/dex/angle-transmuter/constants.js.map +0 -1
  77. package/build/dex/angle-transmuter/pyth.d.ts +0 -19
  78. package/build/dex/angle-transmuter/pyth.js +0 -71
  79. package/build/dex/angle-transmuter/pyth.js.map +0 -1
  80. package/build/dex/angle-transmuter/redstone.d.ts +0 -20
  81. package/build/dex/angle-transmuter/redstone.js +0 -73
  82. package/build/dex/angle-transmuter/redstone.js.map +0 -1
  83. package/build/dex/angle-transmuter/transmuter.d.ts +0 -50
  84. package/build/dex/angle-transmuter/transmuter.js +0 -314
  85. package/build/dex/angle-transmuter/transmuter.js.map +0 -1
  86. package/build/dex/angle-transmuter/types.d.ts +0 -144
  87. package/build/dex/angle-transmuter/types.js +0 -31
  88. package/build/dex/angle-transmuter/types.js.map +0 -1
  89. package/build/dex/angle-transmuter/utils.d.ts +0 -9
  90. package/build/dex/angle-transmuter/utils.js +0 -264
  91. package/build/dex/angle-transmuter/utils.js.map +0 -1
  92. package/build/dex/smardex/subgraph-queries.d.ts +0 -1
  93. package/build/dex/smardex/subgraph-queries.js +0 -17
  94. package/build/dex/smardex/subgraph-queries.js.map +0 -1
  95. package/build/dex/smardex/usd-reserves.d.ts +0 -23
  96. package/build/dex/smardex/usd-reserves.js +0 -86
  97. package/build/dex/smardex/usd-reserves.js.map +0 -1
  98. package/build/dex/trader-joe-v2-1-2/config.d.ts +0 -4
  99. package/build/dex/trader-joe-v2-1-2/config.js +0 -47
  100. package/build/dex/trader-joe-v2-1-2/config.js.map +0 -1
  101. package/build/dex/trader-joe-v2-1-2/constants.d.ts +0 -20
  102. package/build/dex/trader-joe-v2-1-2/constants.js +0 -22
  103. package/build/dex/trader-joe-v2-1-2/constants.js.map +0 -1
  104. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +0 -37
  105. package/build/dex/trader-joe-v2-1-2/math/index.js +0 -291
  106. package/build/dex/trader-joe-v2-1-2/math/index.js.map +0 -1
  107. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +0 -60
  108. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +0 -248
  109. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +0 -1
  110. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +0 -53
  111. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +0 -307
  112. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +0 -1
  113. package/build/dex/trader-joe-v2-1-2/types.d.ts +0 -82
  114. package/build/dex/trader-joe-v2-1-2/types.js +0 -9
  115. package/build/dex/trader-joe-v2-1-2/types.js.map +0 -1
  116. package/build/dex/trader-joe-v2_1/config.d.ts +0 -4
  117. package/build/dex/trader-joe-v2_1/config.js +0 -47
  118. package/build/dex/trader-joe-v2_1/config.js.map +0 -1
  119. package/build/dex/trader-joe-v2_1/constants.d.ts +0 -20
  120. package/build/dex/trader-joe-v2_1/constants.js +0 -22
  121. package/build/dex/trader-joe-v2_1/constants.js.map +0 -1
  122. package/build/dex/trader-joe-v2_1/math/index.d.ts +0 -37
  123. package/build/dex/trader-joe-v2_1/math/index.js +0 -291
  124. package/build/dex/trader-joe-v2_1/math/index.js.map +0 -1
  125. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  126. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +0 -384
  127. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +0 -1
  128. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +0 -60
  129. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +0 -247
  130. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +0 -1
  131. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +0 -53
  132. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +0 -307
  133. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +0 -1
  134. package/build/dex/trader-joe-v2_1/types.d.ts +0 -82
  135. package/build/dex/trader-joe-v2_1/types.js +0 -9
  136. package/build/dex/trader-joe-v2_1/types.js.map +0 -1
  137. package/build/dex/wombat/wombat-pool-poller.d.ts +0 -22
  138. package/build/dex/wombat/wombat-pool-poller.js +0 -164
  139. package/build/dex/wombat/wombat-pool-poller.js.map +0 -1
@@ -1,309 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.AngleTransmuterEventPool = void 0;
7
- const abi_1 = require("@ethersproject/abi");
8
- const lens_1 = require("../../lens");
9
- const composed_event_subscriber_1 = require("../../composed-event-subscriber");
10
- const chainlink_1 = require("../../lib/chainlink");
11
- const types_1 = require("./types");
12
- const Transmuter_json_1 = __importDefault(require("../../abi/angle-transmuter/Transmuter.json"));
13
- const transmuter_1 = require("./transmuter");
14
- const pyth_1 = require("./pyth");
15
- const utils_1 = require("./utils");
16
- const redstone_1 = require("./redstone");
17
- const utils_2 = require("ethers/lib/utils");
18
- const backedOracle_1 = require("./backedOracle");
19
- const constants_1 = require("../../constants");
20
- class AngleTransmuterEventPool extends composed_event_subscriber_1.ComposedEventSubscriber {
21
- constructor(parentName, network, dexHelper, logger, config) {
22
- const chainlinkMap = Object.entries(config.oracles.chainlink).reduce((acc, [key, value]) => {
23
- acc[key] = new chainlink_1.ChainLinkSubscriber(value.proxy, value.aggregator, (0, lens_1.lens)().oracles.chainlink[key], dexHelper.getLogger(`${key} ChainLink for ${parentName}-${network}`));
24
- return acc;
25
- }, {});
26
- const backedMap = Object.entries(config.oracles.backed).reduce((acc, [key, value]) => {
27
- acc[key] = new backedOracle_1.BackedSubscriber(value.proxy, value.aggregator, (0, lens_1.lens)().oracles.chainlink[key], dexHelper.getLogger(`${key} ChainLink for ${parentName}-${network}`));
28
- return acc;
29
- }, {});
30
- const redstoneMap = Object.entries(config.oracles.redstone).reduce((acc, [key, value]) => {
31
- acc[key] = new redstone_1.RedstoneSubscriber(value.proxy, value.aggregator, (0, lens_1.lens)().oracles.chainlink[key], dexHelper.getLogger(`${key} ChainLink for ${parentName}-${network}`));
32
- return acc;
33
- }, {});
34
- const pythListener = new pyth_1.PythSubscriber(config.oracles.pyth.proxy, config.oracles.pyth.ids, (0, lens_1.lens)().oracles.pyth, dexHelper.getLogger(`Pyth for ${parentName}-${network}`));
35
- const transmuterListener = new transmuter_1.TransmuterSubscriber(config.agEUR.address, config.transmuter, config.collaterals, (0, lens_1.lens)().transmuter, dexHelper.getLogger(`${parentName}-${network} Transmuter`));
36
- super(parentName, 'Transmuter', dexHelper.getLogger(`${parentName}-${network}`), dexHelper, [
37
- ...Object.values(chainlinkMap),
38
- ...Object.values(backedMap),
39
- ...Object.values(redstoneMap),
40
- transmuterListener,
41
- pythListener,
42
- ], {
43
- stablecoin: config.agEUR,
44
- transmuter: {},
45
- oracles: { chainlink: {}, pyth: {} },
46
- });
47
- this.parentName = parentName;
48
- this.network = network;
49
- this.dexHelper = dexHelper;
50
- this.transmuter = new this.dexHelper.web3Provider.eth.Contract(Transmuter_json_1.default, config.transmuter);
51
- this.config = config;
52
- }
53
- async getStateOrGenerate(blockNumber) {
54
- const evenState = this.getState(blockNumber);
55
- if (evenState)
56
- return evenState;
57
- const onChainState = await this.generateState(blockNumber);
58
- this.setState(onChainState, blockNumber);
59
- return onChainState;
60
- }
61
- // Reference to the original implementation
62
- // https://github.com/AngleProtocol/angle-transmuter/blob/6e1f2eb1f961d6c3b1cdaefe068d967c33c41936/contracts/transmuter/facets/Swapper.sol#L177
63
- async getAmountOut(_tokenIn, _tokenOut, side, _amounts, blockNumber) {
64
- const state = await this.getStateOrGenerate(blockNumber);
65
- const isMint = _tokenOut == state.stablecoin.address;
66
- let oracleValue;
67
- let minRatio = 0;
68
- let collateral = _tokenIn;
69
- if (isMint)
70
- oracleValue = await this._readMint(this.config, state, _tokenIn);
71
- else {
72
- collateral = _tokenOut;
73
- ({ oracleValue, minRatio } = await this._getBurnOracle(this.config, state, _tokenOut));
74
- }
75
- const collatStablecoinIssued = state.transmuter.collaterals[collateral].stablecoinsIssued;
76
- const otherStablecoinIssued = state.transmuter.totalStablecoinIssued - collatStablecoinIssued;
77
- const fees = state.transmuter.collaterals[collateral].fees;
78
- return _amounts.map(_amount => {
79
- if (isMint && side == constants_1.SwapSide.SELL)
80
- return (0, utils_1._quoteMintExactInput)(oracleValue, _amount, fees, collatStablecoinIssued, otherStablecoinIssued);
81
- else if (isMint && side == constants_1.SwapSide.BUY)
82
- return (0, utils_1._quoteMintExactOutput)(oracleValue, _amount, fees, collatStablecoinIssued, otherStablecoinIssued);
83
- else if (!isMint && side == constants_1.SwapSide.SELL)
84
- return (0, utils_1._quoteBurnExactInput)(oracleValue, minRatio, _amount, fees, collatStablecoinIssued, otherStablecoinIssued);
85
- else
86
- return (0, utils_1._quoteBurnExactOutput)(oracleValue, minRatio, _amount, fees, collatStablecoinIssued, otherStablecoinIssued);
87
- });
88
- }
89
- static async getCollateralsList(transmuterAddress, blockNumber, multiContract) {
90
- const tokensResult = (await multiContract.methods
91
- .aggregate([
92
- {
93
- target: transmuterAddress,
94
- callData: transmuter_1.TransmuterSubscriber.interface.encodeFunctionData('getCollateralList'),
95
- },
96
- ])
97
- .call({}, blockNumber)).returnData;
98
- const tokens = transmuter_1.TransmuterSubscriber.interface.decodeFunctionResult('getCollateralList', tokensResult[0])[0];
99
- // .map((t: any) => t.toLowerCase());
100
- return tokens;
101
- }
102
- static async _fillMap(chainlinkMap, backedMap, redstoneMap, pythIds, oracleFeed, blockNumber, multiContract) {
103
- if (oracleFeed.isChainlink) {
104
- await Promise.all(oracleFeed.chainlink.circuitChainlink.map(async (feed) => {
105
- let aggreagator;
106
- let decimals;
107
- // it can be Chainlink or Redstone feed
108
- // if the call getReadAggregatorMultiCallInput fail with a Chainlink instance
109
- // then it is a Redstone one
110
- try {
111
- // Chainlink
112
- const proxyResult = (await multiContract.methods
113
- .aggregate([
114
- chainlink_1.ChainLinkSubscriber.getReadAggregatorMultiCallInput(feed),
115
- chainlink_1.ChainLinkSubscriber.getReadDecimal(feed),
116
- ])
117
- .call({}, blockNumber)).returnData;
118
- aggreagator = chainlink_1.ChainLinkSubscriber.readAggregator(proxyResult[0]);
119
- decimals = Number(chainlink_1.ChainLinkSubscriber.readDecimals(proxyResult[1]));
120
- chainlinkMap[feed] = {
121
- proxy: feed,
122
- aggregator: aggreagator,
123
- decimals: decimals,
124
- };
125
- }
126
- catch {
127
- try {
128
- // Redstone
129
- const proxyResult = (await multiContract.methods
130
- .aggregate([
131
- redstone_1.RedstoneSubscriber.getReadAggregatorMultiCallInput(feed),
132
- redstone_1.RedstoneSubscriber.getReadDecimal(feed),
133
- ])
134
- .call({}, blockNumber)).returnData;
135
- aggreagator = redstone_1.RedstoneSubscriber.readAggregator(proxyResult[0]);
136
- decimals = Number(redstone_1.RedstoneSubscriber.readDecimals(proxyResult[1]));
137
- redstoneMap[feed] = {
138
- proxy: feed,
139
- aggregator: aggreagator,
140
- decimals: decimals,
141
- };
142
- }
143
- catch {
144
- // Backed
145
- const proxyResult = (await multiContract.methods
146
- .aggregate([chainlink_1.ChainLinkSubscriber.getReadDecimal(feed)])
147
- .call({}, blockNumber)).returnData;
148
- decimals = Number(chainlink_1.ChainLinkSubscriber.readDecimals(proxyResult[0]));
149
- backedMap[feed] = {
150
- proxy: feed,
151
- aggregator: feed,
152
- decimals: decimals,
153
- };
154
- }
155
- }
156
- }));
157
- }
158
- else if (oracleFeed.isPyth) {
159
- pythIds.ids = pythIds.ids.concat(oracleFeed.pyth.feedIds);
160
- }
161
- else {
162
- throw new Error('Unknown oracle feed');
163
- }
164
- return { chainlinkMap, backedMap, redstoneMap, pythIds };
165
- }
166
- static async getOraclesConfig(transmuterAddress, pythAddress, collaterals, blockNumber, multiContract) {
167
- const getOracleConfigData = collaterals.map(collat => {
168
- return {
169
- callData: transmuter_1.TransmuterSubscriber.interface.encodeFunctionData('getOracle', [collat]),
170
- target: transmuterAddress,
171
- };
172
- });
173
- const oracleConfigResult = (await multiContract.methods
174
- .aggregate(getOracleConfigData)
175
- .call({}, blockNumber)).returnData;
176
- const oracleConfigs = oracleConfigResult.map((p) => transmuter_1.TransmuterSubscriber.interface.decodeFunctionResult('getOracle', p));
177
- let chainlinkMap = {};
178
- let backedMap = {};
179
- let redstoneMap = {};
180
- let pythIds = { proxy: pythAddress, ids: [] };
181
- await Promise.all(oracleConfigs.map(async (oracleConfigDecoded) => {
182
- if (oracleConfigDecoded.oracleType !== types_1.OracleReadType.EXTERNAL) {
183
- // add all the feed oracles used to their respective channels
184
- if (oracleConfigDecoded.oracleType == types_1.OracleReadType.CHAINLINK_FEEDS ||
185
- oracleConfigDecoded.oracleType == types_1.OracleReadType.PYTH) {
186
- const oracleFeed = transmuter_1.TransmuterSubscriber._decodeOracleFeed(oracleConfigDecoded.oracleType, oracleConfigDecoded.oracleData);
187
- ({ chainlinkMap, backedMap, redstoneMap, pythIds } =
188
- await this._fillMap(chainlinkMap, backedMap, redstoneMap, pythIds, oracleFeed, blockNumber, multiContract));
189
- }
190
- if (oracleConfigDecoded.targetType == types_1.OracleReadType.CHAINLINK_FEEDS ||
191
- oracleConfigDecoded.targetType == types_1.OracleReadType.PYTH) {
192
- const oracleFeed = transmuter_1.TransmuterSubscriber._decodeOracleFeed(oracleConfigDecoded.targetType, oracleConfigDecoded.targetData);
193
- ({ chainlinkMap, backedMap, redstoneMap, pythIds } =
194
- await this._fillMap(chainlinkMap, backedMap, redstoneMap, pythIds, oracleFeed, blockNumber, multiContract));
195
- }
196
- }
197
- }));
198
- return {
199
- chainlink: chainlinkMap,
200
- backed: backedMap,
201
- redstone: redstoneMap,
202
- pyth: pythIds,
203
- };
204
- }
205
- static async getConfig(dexParams, blockNumber, multiContract) {
206
- const collaterals = await this.getCollateralsList(dexParams.transmuter, blockNumber, multiContract);
207
- // get all oracles feed
208
- const oracles = await this.getOraclesConfig(dexParams.transmuter, dexParams.pyth, collaterals, blockNumber, multiContract);
209
- return {
210
- agEUR: dexParams.agEUR,
211
- transmuter: dexParams.transmuter,
212
- collaterals: collaterals,
213
- oracles: oracles,
214
- };
215
- }
216
- /*//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
217
- UTILS
218
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
219
- _readMint(config, state, collateral) {
220
- const configOracle = state.transmuter.collaterals[collateral].config;
221
- if (configOracle.oracleType == types_1.OracleReadType.EXTERNAL) {
222
- return 1;
223
- }
224
- else {
225
- const targetPrice = this._read(config, state, configOracle.targetType, configOracle.targetFeed, 1);
226
- let oracleValue = this._read(config, state, configOracle.oracleType, configOracle.oracleFeed, targetPrice);
227
- if (targetPrice < oracleValue)
228
- oracleValue = targetPrice;
229
- return oracleValue;
230
- }
231
- }
232
- _getBurnOracle(config, state, collateral) {
233
- return config.collaterals.reduce((acc, comparedCollat, j) => {
234
- let ratio;
235
- if (comparedCollat.toLowerCase() === collateral.toLowerCase()) {
236
- let oracleValue;
237
- ({ oracleValue, ratio } = this._readBurn(config, state, comparedCollat));
238
- acc.oracleValue = oracleValue;
239
- }
240
- else
241
- ({ ratio } = this._readBurn(config, state, comparedCollat));
242
- if (ratio < acc.minRatio)
243
- acc.minRatio = ratio;
244
- return acc;
245
- }, { oracleValue: 0, minRatio: 1 });
246
- }
247
- _readBurn(config, state, collateral) {
248
- const configOracle = state.transmuter.collaterals[collateral].config;
249
- if (configOracle.oracleType == types_1.OracleReadType.EXTERNAL) {
250
- return { oracleValue: 1, ratio: 1 };
251
- }
252
- else {
253
- const targetPrice = this._read(config, state, configOracle.targetType, configOracle.targetFeed, 1);
254
- const oracleValue = this._read(config, state, configOracle.oracleType, configOracle.oracleFeed, targetPrice);
255
- let ratio = 1;
256
- if (oracleValue < targetPrice)
257
- ratio = oracleValue / targetPrice;
258
- return { oracleValue, ratio };
259
- }
260
- }
261
- _quoteAmount(quoteType, baseValue) {
262
- if (quoteType === types_1.OracleQuoteType.UNIT)
263
- return 1;
264
- else
265
- return baseValue;
266
- }
267
- _read(config, state, oracleType, feed, baseValue) {
268
- let price = 1;
269
- if (oracleType == types_1.OracleReadType.CHAINLINK_FEEDS) {
270
- price = this._quoteAmount(feed.chainlink.quoteType, baseValue);
271
- for (let i = 0; i < feed.chainlink.circuitChainlink.length; i++) {
272
- const id = feed.chainlink.circuitChainlink[i];
273
- let decimals;
274
- if (Object.keys(config.oracles.chainlink).includes(id))
275
- decimals = config.oracles.chainlink[id].decimals;
276
- else if (Object.keys(config.oracles.redstone).includes(id))
277
- decimals = config.oracles.redstone[id].decimals;
278
- else
279
- decimals = config.oracles.backed[id].decimals;
280
- const rate = parseFloat((0, utils_2.formatUnits)(state.oracles.chainlink[id].answer.toString(), decimals));
281
- if (feed.chainlink.circuitChainIsMultiplied[i] == 1)
282
- price *= rate;
283
- else
284
- price /= rate;
285
- }
286
- }
287
- else if (oracleType == types_1.OracleReadType.PYTH) {
288
- price = this._quoteAmount(feed.pyth.quoteType, baseValue);
289
- for (let i = 0; i < feed.pyth.feedIds.length; i++) {
290
- const id = feed.pyth.feedIds[i];
291
- const rate = state.oracles.pyth[id].answer;
292
- if (feed.pyth.isMultiplied[i] == 1)
293
- price *= rate;
294
- else
295
- price /= rate;
296
- }
297
- }
298
- else if (oracleType == types_1.OracleReadType.STABLE) {
299
- price = 1;
300
- }
301
- else if (oracleType == types_1.OracleReadType.NO_ORACLE) {
302
- price = baseValue;
303
- }
304
- return price;
305
- }
306
- }
307
- exports.AngleTransmuterEventPool = AngleTransmuterEventPool;
308
- AngleTransmuterEventPool.angleTransmuterIface = new abi_1.Interface(Transmuter_json_1.default);
309
- //# sourceMappingURL=angle-transmuter-pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"angle-transmuter-pool.js","sourceRoot":"","sources":["../../../src/dex/angle-transmuter/angle-transmuter-pool.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { AsyncOrSync } from 'ts-essentials';
2
- import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
3
- import { SwapSide, Network } from '../../constants';
4
- import { IDex } from '../../dex/idex';
5
- import { IDexHelper } from '../../dex-helper/idex-helper';
6
- import { AngleTransmuterData, DexParams } from './types';
7
- import { SimpleExchange } from '../simple-exchange';
8
- import { AngleTransmuterEventPool } from './angle-transmuter-pool';
9
- import { Interface } from 'ethers/lib/utils';
10
- export declare class AngleTransmuter extends SimpleExchange implements IDex<AngleTransmuterData> {
11
- readonly network: Network;
12
- readonly dexKey: string;
13
- readonly dexHelper: IDexHelper;
14
- protected adapters: import("../../types").AdapterMappings;
15
- protected params: DexParams;
16
- protected eventPools: AngleTransmuterEventPool | null;
17
- protected supportedTokensMap: {
18
- [address: string]: boolean;
19
- };
20
- protected supportedTokens: Token[];
21
- transmuterUSDLiquidity: number;
22
- static erc20Interface: Interface;
23
- readonly hasConstantPriceLargeAmounts = false;
24
- readonly needWrapNative = true;
25
- readonly isFeeOnTransferSupported = false;
26
- static dexKeysWithNetwork: {
27
- key: string;
28
- networks: Network[];
29
- }[];
30
- logger: Logger;
31
- constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings, params?: DexParams);
32
- initializePricing(blockNumber: number): Promise<void>;
33
- getAdapters(side: SwapSide): {
34
- name: string;
35
- index: number;
36
- }[] | null;
37
- getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
38
- getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<AngleTransmuterData>>;
39
- getCalldataGasCost(poolPrices: PoolPrices<AngleTransmuterData>): number | number[];
40
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AngleTransmuterData, side: SwapSide): AdapterExchangeParam;
41
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: AngleTransmuterData, side: SwapSide): Promise<SimpleExchangeParam>;
42
- updatePoolState(): Promise<void>;
43
- getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
44
- releaseResources(): AsyncOrSync<void>;
45
- _knownAddress(srcToken: Token, destToken: Token): boolean;
46
- }
@@ -1,233 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.AngleTransmuter = void 0;
30
- const constants_1 = require("../../constants");
31
- const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
32
- const utils_1 = require("../../utils");
33
- const simple_exchange_1 = require("../simple-exchange");
34
- const config_1 = require("./config");
35
- const angle_transmuter_pool_1 = require("./angle-transmuter-pool");
36
- const utils_2 = require("ethers/lib/utils");
37
- const transmuter_1 = require("./transmuter");
38
- const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
39
- const TransmuterGasCost = 0;
40
- class AngleTransmuter extends simple_exchange_1.SimpleExchange {
41
- constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}, params = config_1.AngleTransmuterConfig[dexKey][network]) {
42
- super(dexHelper, dexKey);
43
- this.network = network;
44
- this.dexKey = dexKey;
45
- this.dexHelper = dexHelper;
46
- this.adapters = adapters;
47
- this.params = params;
48
- this.eventPools = null;
49
- this.supportedTokensMap = {};
50
- // supportedTokens is only used by the pooltracker
51
- this.supportedTokens = [];
52
- this.transmuterUSDLiquidity = 0;
53
- this.hasConstantPriceLargeAmounts = false;
54
- this.needWrapNative = true;
55
- this.isFeeOnTransferSupported = false;
56
- this.logger = dexHelper.getLogger(dexKey);
57
- this.supportedTokensMap[params.agEUR.address.toLowerCase()] = true;
58
- }
59
- // Initialize pricing is called once in the start of
60
- // pricing service. It is intended to setup the integration
61
- // for pricing requests. It is optional for a DEX to
62
- // implement this function
63
- async initializePricing(blockNumber) {
64
- const config = await angle_transmuter_pool_1.AngleTransmuterEventPool.getConfig(this.params, blockNumber, this.dexHelper.multiContract);
65
- config.collaterals.forEach((token) => (this.supportedTokensMap[token.toLowerCase()] = true));
66
- this.eventPools = new angle_transmuter_pool_1.AngleTransmuterEventPool(this.dexKey, this.network, this.dexHelper, this.logger, config);
67
- await this.eventPools.initialize(blockNumber);
68
- }
69
- // Returns the list of contract adapters (name and index)
70
- // for a buy/sell. Return null if there are no adapters.
71
- getAdapters(side) {
72
- return this.adapters[side] ? this.adapters[side] : null;
73
- }
74
- // Returns list of pool identifiers that can be used
75
- // for a given swap. poolIdentifiers must be unique
76
- // across DEXes. It is recommended to use
77
- // ${dexKey}_${poolAddress} as a poolIdentifier
78
- async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
79
- if (this._knownAddress(srcToken, destToken))
80
- return [`${this.dexKey}_${this.params.agEUR.address.toLowerCase()}`];
81
- else
82
- return [];
83
- }
84
- // Returns pool prices for amounts.
85
- // If limitPools is defined only pools in limitPools
86
- // should be used. If limitPools is undefined then
87
- // any pools can be used.
88
- async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
89
- const uniquePool = `${this.dexKey}_${this.params.agEUR.address.toLowerCase()}`;
90
- if (!this._knownAddress(srcToken, destToken) ||
91
- (limitPools && limitPools.length > 0 && !limitPools.includes(uniquePool)))
92
- return null;
93
- const preProcessDecimals = side == constants_1.SwapSide.SELL ? srcToken.decimals : destToken.decimals;
94
- const postProcessDecimals = side == constants_1.SwapSide.SELL ? destToken.decimals : srcToken.decimals;
95
- const unitVolume = 1;
96
- const amountsFloat = amounts.map(amount => parseFloat((0, utils_2.formatUnits)(amount.toString(), preProcessDecimals)));
97
- const prices = await this.eventPools.getAmountOut(srcToken.address, destToken.address, side, [unitVolume, ...amountsFloat], blockNumber);
98
- if (!prices)
99
- return null;
100
- const pricesBigInt = prices.map(price => BigInt((0, utils_2.parseUnits)(price.toFixed(postProcessDecimals).toString(), postProcessDecimals).toString()));
101
- return [
102
- {
103
- prices: pricesBigInt.slice(1),
104
- unit: pricesBigInt[0],
105
- gasCost: TransmuterGasCost,
106
- exchange: this.dexKey,
107
- data: { exchange: this.params.transmuter },
108
- poolAddresses: [this.params.transmuter],
109
- },
110
- ];
111
- }
112
- // Returns estimated gas cost of calldata for this DEX in multiSwap
113
- getCalldataGasCost(poolPrices) {
114
- return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
115
- }
116
- // Encode params required by the exchange adapter
117
- // Used for multiSwap, buy & megaSwap
118
- // Hint: abiCoder.encodeParameter() could be useful
119
- getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
120
- const { exchange } = data;
121
- // Encode here the payload for adapter
122
- const payload = '';
123
- return {
124
- targetExchange: exchange,
125
- payload,
126
- networkFee: '0',
127
- };
128
- }
129
- // Encode call data used by simpleSwap like routers
130
- // Used for simpleSwap & simpleBuy
131
- // Hint: this.buildSimpleParamWithoutWETHConversion
132
- // could be useful
133
- async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
134
- const { exchange } = data;
135
- // Encode here the transaction arguments
136
- const swapData = transmuter_1.TransmuterSubscriber.interface.encodeFunctionData(side == constants_1.SwapSide.SELL ? 'swapExactInput' : 'swapExactOutput', [
137
- side == constants_1.SwapSide.SELL ? srcAmount : destAmount,
138
- side == constants_1.SwapSide.SELL ? destAmount : srcAmount,
139
- srcToken,
140
- destToken,
141
- this.augustusAddress,
142
- 0, // TODO no deadline?
143
- ]);
144
- return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, exchange);
145
- }
146
- // This is called once before getTopPoolsForToken is
147
- // called for multiple tokens. This can be helpful to
148
- // update common state required for calculating
149
- // getTopPoolsForToken. It is optional for a DEX
150
- // to implement this
151
- async updatePoolState() {
152
- if (!this.supportedTokens.length) {
153
- let tokenAddresses = await angle_transmuter_pool_1.AngleTransmuterEventPool.getCollateralsList(this.params.transmuter, 'latest', this.dexHelper.multiContract);
154
- tokenAddresses = tokenAddresses.concat([this.params.agEUR.address]);
155
- const decimalsCallData = AngleTransmuter.erc20Interface.encodeFunctionData('decimals');
156
- const tokenBalanceMultiCall = tokenAddresses.map(t => ({
157
- target: t,
158
- callData: decimalsCallData,
159
- }));
160
- const res = (await this.dexHelper.multiContract.methods
161
- .aggregate(tokenBalanceMultiCall)
162
- .call()).returnData;
163
- const tokenDecimals = res.map((r) => parseInt(AngleTransmuter.erc20Interface
164
- .decodeFunctionResult('decimals', r)[0]
165
- .toString()));
166
- this.supportedTokens = tokenAddresses.map((t, i) => ({
167
- address: t,
168
- decimals: tokenDecimals[i],
169
- }));
170
- }
171
- // Only work if there are no managers
172
- const erc20BalanceCalldata = AngleTransmuter.erc20Interface.encodeFunctionData('balanceOf', [
173
- this.params.transmuter,
174
- ]);
175
- const tokenBalanceMultiCall = this.supportedTokens.map(t => ({
176
- target: t.address,
177
- callData: erc20BalanceCalldata,
178
- }));
179
- const res = (await this.dexHelper.multiContract.methods
180
- .aggregate(tokenBalanceMultiCall)
181
- .call()).returnData;
182
- const tokenBalances = res.map((r) => BigInt(AngleTransmuter.erc20Interface
183
- .decodeFunctionResult('balanceOf', r)[0]
184
- .toString()));
185
- // TODO bC3M price not detected
186
- const tokenBalancesUSD = await Promise.all(this.supportedTokens.map((t, i) => this.dexHelper.getTokenUSDPrice(t, tokenBalances[i])));
187
- this.transmuterUSDLiquidity = tokenBalancesUSD.reduce((sum, curr) => sum + curr);
188
- }
189
- // Returns list of top pools based on liquidity. Max
190
- // limit number pools should be returned.
191
- async getTopPoolsForToken(tokenAddress, limit) {
192
- if (!this.supportedTokens.some(t => t.address === tokenAddress))
193
- return [];
194
- const connectorTokens = tokenAddress === this.params.agEUR.address
195
- ? this.supportedTokens.filter(token => token.address !== this.params.agEUR.address)
196
- : [this.params.agEUR];
197
- return [
198
- {
199
- exchange: this.dexKey,
200
- address: this.params.transmuter,
201
- connectorTokens: connectorTokens.slice(0, limit),
202
- // liquidity is potentially infinite if swapping for agXXX, otherwise at most reserves value
203
- liquidityUSD: tokenAddress == this.params.agEUR.address
204
- ? this.transmuterUSDLiquidity
205
- : 1e9,
206
- },
207
- ];
208
- }
209
- // This is optional function in case if your implementation has acquired any resources
210
- // you need to release for graceful shutdown. For example, it may be any interval timer
211
- releaseResources() { }
212
- _knownAddress(srcToken, destToken) {
213
- const srcAddress = this.dexHelper.config
214
- .wrapETH(srcToken)
215
- .address.toLowerCase();
216
- const destAddress = this.dexHelper.config
217
- .wrapETH(destToken)
218
- .address.toLowerCase();
219
- if (srcAddress !== destAddress &&
220
- this.supportedTokensMap[srcAddress] &&
221
- this.supportedTokensMap[destAddress] &&
222
- // check that at least one of the tokens is agEUR
223
- (srcAddress == this.params.agEUR.address.toLowerCase() ||
224
- destAddress == this.params.agEUR.address.toLowerCase())) {
225
- return true;
226
- }
227
- return false;
228
- }
229
- }
230
- exports.AngleTransmuter = AngleTransmuter;
231
- AngleTransmuter.erc20Interface = new utils_2.Interface(erc20_json_1.default);
232
- AngleTransmuter.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.AngleTransmuterConfig);
233
- //# sourceMappingURL=angle-transmuter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"angle-transmuter.js","sourceRoot":"","sources":["../../../src/dex/angle-transmuter/angle-transmuter.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { DeepReadonly } from 'ts-essentials';
2
- import { PartialEventSubscriber } from '../../composed-event-subscriber';
3
- import { Address, BlockHeader, Log, Logger, MultiCallInput, MultiCallOutput } from '../../types';
4
- import { Lens } from '../../lens';
5
- import { Interface } from '@ethersproject/abi';
6
- import { ChainLinkState } from '../../lib/chainlink';
7
- export declare class BackedSubscriber<State> extends PartialEventSubscriber<State, ChainLinkState> {
8
- private proxy;
9
- private aggregator;
10
- static readonly proxyInterface: Interface;
11
- static readonly ANSWER_UPDATED_TOPIC: string;
12
- constructor(proxy: Address, aggregator: Address, lens: Lens<DeepReadonly<State>, DeepReadonly<ChainLinkState>>, logger: Logger);
13
- static getReadDecimal(proxy: Address): MultiCallInput;
14
- static readDecimals(multicallOutput: MultiCallOutput): Address;
15
- processLog(state: DeepReadonly<ChainLinkState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): DeepReadonly<ChainLinkState> | null;
16
- getGenerateStateMultiCallInputs(): MultiCallInput[];
17
- generateState(multicallOutputs: MultiCallOutput[], blockNumber?: number | 'latest'): DeepReadonly<ChainLinkState>;
18
- getLatestRoundData(state: DeepReadonly<State>): bigint;
19
- }