@paraswap/dex-lib 2.47.2 → 2.47.3

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 (140) hide show
  1. package/build/abi/Redstone.json +739 -0
  2. package/build/abi/angle/stagToken.json +963 -0
  3. package/build/abi/angle-transmuter/Pyth.json +1534 -0
  4. package/build/abi/angle-transmuter/Transmuter.json +1719 -0
  5. package/build/abi/smardex/smardex-factory.json +185 -0
  6. package/build/abi/smardex/smardex-pool.json +578 -0
  7. package/build/abi/smardex/smardex-router.json +648 -0
  8. package/build/abi/trader-joe-v2_1/FactoryABI.json +1208 -0
  9. package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
  10. package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
  11. package/build/abi/trader-joe-v2_1/StateMulticall.json +193 -0
  12. package/build/config.js +2 -1
  13. package/build/config.js.map +1 -1
  14. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +53 -0
  15. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +175 -0
  16. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +1 -0
  17. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +42 -0
  18. package/build/dex/angle-staked-stable/angle-staked-stable.js +232 -0
  19. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -0
  20. package/build/dex/angle-staked-stable/config.d.ts +4 -0
  21. package/build/dex/angle-staked-stable/config.js +26 -0
  22. package/build/dex/angle-staked-stable/config.js.map +1 -0
  23. package/build/dex/angle-staked-stable/types.d.ts +15 -0
  24. package/build/dex/angle-staked-stable/types.js +3 -0
  25. package/build/dex/angle-staked-stable/types.js.map +1 -0
  26. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +43 -0
  27. package/build/dex/angle-transmuter/angle-transmuter-pool.js +309 -0
  28. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +1 -0
  29. package/build/dex/angle-transmuter/angle-transmuter.d.ts +46 -0
  30. package/build/dex/angle-transmuter/angle-transmuter.js +233 -0
  31. package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -0
  32. package/build/dex/angle-transmuter/backedOracle.d.ts +19 -0
  33. package/build/dex/angle-transmuter/backedOracle.js +56 -0
  34. package/build/dex/angle-transmuter/backedOracle.js.map +1 -0
  35. package/build/dex/angle-transmuter/config.d.ts +4 -0
  36. package/build/dex/angle-transmuter/config.js +20 -0
  37. package/build/dex/angle-transmuter/config.js.map +1 -0
  38. package/build/dex/angle-transmuter/constants.d.ts +4 -0
  39. package/build/dex/angle-transmuter/constants.js +8 -0
  40. package/build/dex/angle-transmuter/constants.js.map +1 -0
  41. package/build/dex/angle-transmuter/pyth.d.ts +19 -0
  42. package/build/dex/angle-transmuter/pyth.js +71 -0
  43. package/build/dex/angle-transmuter/pyth.js.map +1 -0
  44. package/build/dex/angle-transmuter/redstone.d.ts +20 -0
  45. package/build/dex/angle-transmuter/redstone.js +73 -0
  46. package/build/dex/angle-transmuter/redstone.js.map +1 -0
  47. package/build/dex/angle-transmuter/transmuter.d.ts +50 -0
  48. package/build/dex/angle-transmuter/transmuter.js +314 -0
  49. package/build/dex/angle-transmuter/transmuter.js.map +1 -0
  50. package/build/dex/angle-transmuter/types.d.ts +144 -0
  51. package/build/dex/angle-transmuter/types.js +31 -0
  52. package/build/dex/angle-transmuter/types.js.map +1 -0
  53. package/build/dex/angle-transmuter/utils.d.ts +9 -0
  54. package/build/dex/angle-transmuter/utils.js +264 -0
  55. package/build/dex/angle-transmuter/utils.js.map +1 -0
  56. package/build/dex/smardex/subgraph-queries.d.ts +1 -0
  57. package/build/dex/smardex/subgraph-queries.js +17 -0
  58. package/build/dex/smardex/subgraph-queries.js.map +1 -0
  59. package/build/dex/smardex/usd-reserves.d.ts +23 -0
  60. package/build/dex/smardex/usd-reserves.js +86 -0
  61. package/build/dex/smardex/usd-reserves.js.map +1 -0
  62. package/build/dex/solidly-v3/config.js +13 -1
  63. package/build/dex/solidly-v3/config.js.map +1 -1
  64. package/build/dex/solidly-v3/solidly-v3.d.ts +1 -2
  65. package/build/dex/solidly-v3/solidly-v3.js +1 -4
  66. package/build/dex/solidly-v3/solidly-v3.js.map +1 -1
  67. package/build/dex/solidly-v3/types.d.ts +0 -1
  68. package/build/dex/solidly-v3/types.js.map +1 -1
  69. package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
  70. package/build/dex/trader-joe-v2-1-2/config.js +47 -0
  71. package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
  72. package/build/dex/trader-joe-v2-1-2/constants.d.ts +20 -0
  73. package/build/dex/trader-joe-v2-1-2/constants.js +22 -0
  74. package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
  75. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +37 -0
  76. package/build/dex/trader-joe-v2-1-2/math/index.js +291 -0
  77. package/build/dex/trader-joe-v2-1-2/math/index.js.map +1 -0
  78. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
  79. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +248 -0
  80. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
  81. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +53 -0
  82. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +307 -0
  83. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
  84. package/build/dex/trader-joe-v2-1-2/types.d.ts +82 -0
  85. package/build/dex/trader-joe-v2-1-2/types.js +9 -0
  86. package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
  87. package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
  88. package/build/dex/trader-joe-v2_1/config.js +47 -0
  89. package/build/dex/trader-joe-v2_1/config.js.map +1 -0
  90. package/build/dex/trader-joe-v2_1/constants.d.ts +20 -0
  91. package/build/dex/trader-joe-v2_1/constants.js +22 -0
  92. package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
  93. package/build/dex/trader-joe-v2_1/math/index.d.ts +37 -0
  94. package/build/dex/trader-joe-v2_1/math/index.js +291 -0
  95. package/build/dex/trader-joe-v2_1/math/index.js.map +1 -0
  96. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  97. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
  98. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
  99. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +60 -0
  100. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +247 -0
  101. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +1 -0
  102. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +53 -0
  103. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +307 -0
  104. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +1 -0
  105. package/build/dex/trader-joe-v2_1/types.d.ts +82 -0
  106. package/build/dex/trader-joe-v2_1/types.js +9 -0
  107. package/build/dex/trader-joe-v2_1/types.js.map +1 -0
  108. package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
  109. package/build/dex/wombat/wombat-pool-poller.js +164 -0
  110. package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
  111. package/package.json +1 -1
  112. package/src/config.ts +2 -1
  113. package/src/dex/solidly-v3/config.ts +15 -1
  114. package/src/dex/solidly-v3/solidly-v3-e2e.test.ts +33 -0
  115. package/src/dex/solidly-v3/solidly-v3.ts +0 -3
  116. package/src/dex/solidly-v3/types.ts +0 -1
  117. package/tests/constants-e2e.ts +7 -2
  118. package/tests/utils-e2e.ts +2 -1
  119. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  120. package/build/abi/balancer-v2/gyro-e.abi.json +0 -1595
  121. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  122. package/build/dex/algebra/algebra-pool.d.ts +0 -46
  123. package/build/dex/algebra/algebra-pool.js +0 -336
  124. package/build/dex/algebra/algebra-pool.js.map +0 -1
  125. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.d.ts +0 -32
  126. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js +0 -151
  127. package/build/dex/balancer-v2/pools/gyro/Gyro3Pool.js.map +0 -1
  128. package/build/dex/balancer-v2/pools/gyro/GyroEPool.d.ts +0 -37
  129. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js +0 -222
  130. package/build/dex/balancer-v2/pools/gyro/GyroEPool.js.map +0 -1
  131. package/build/dex/balancer-v2/queryOnChain.d.ts +0 -1
  132. package/build/dex/balancer-v2/queryOnChain.js +0 -40
  133. package/build/dex/balancer-v2/queryOnChain.js.map +0 -1
  134. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  135. package/build/dex/quickswap/camelot-v3.js +0 -19
  136. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  137. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  138. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  139. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
  140. package/build/dex/uniswap-v2/rebase-tokens.json +0 -7
@@ -0,0 +1,82 @@
1
+ import { Address } from '../../types';
2
+ import { BigNumber } from 'ethers';
3
+ import { NumberAsString } from '@paraswap/core';
4
+ export declare type Bin = {
5
+ id: bigint;
6
+ reserveX: bigint;
7
+ reserveY: bigint;
8
+ };
9
+ export declare type PoolState = {
10
+ tokenX: Address;
11
+ tokenY: Address;
12
+ binStep: bigint;
13
+ bins: Bin[];
14
+ pairAddress: string;
15
+ blockTimestamp: bigint;
16
+ reserves: {
17
+ reserveX: bigint;
18
+ reserveY: bigint;
19
+ };
20
+ activeId: bigint;
21
+ protocolFees: {
22
+ protocolFeeX: bigint;
23
+ protocolFeeY: bigint;
24
+ };
25
+ staticFeeParameters: {
26
+ baseFactor: bigint;
27
+ filterPeriod: bigint;
28
+ decayPeriod: bigint;
29
+ reductionFactor: bigint;
30
+ variableFeeControl: bigint;
31
+ protocolShare: bigint;
32
+ maxVolatilityAccumulator: bigint;
33
+ };
34
+ variableFeeParameters: {
35
+ volatilityAccumulator: bigint;
36
+ volatilityReference: bigint;
37
+ idReference: bigint;
38
+ timeOfLastUpdate: bigint;
39
+ };
40
+ };
41
+ export declare type DecodedStateMultiCallResult = {};
42
+ export declare type TraderJoeV2_1Data = {
43
+ tokenIn: string;
44
+ tokenOut: string;
45
+ binStep: string;
46
+ };
47
+ export declare type DexParams = {
48
+ factory: Address;
49
+ router: Address;
50
+ stateMulticall: Address;
51
+ };
52
+ export declare type LBPairsAvailable = {
53
+ binStep: BigNumber;
54
+ LBPair: string;
55
+ createdByOwner: boolean;
56
+ ignoredForRouting: boolean;
57
+ tokenX: string;
58
+ };
59
+ export declare type RouterPath = [
60
+ pairBinSteps: NumberAsString[],
61
+ versions: NumberAsString[],
62
+ tokenPath: Address[]
63
+ ];
64
+ export declare type TraderJoeV2RouterSellParams = [
65
+ _amountIn: NumberAsString,
66
+ _amountOutMin: NumberAsString,
67
+ _routerPath: RouterPath,
68
+ to: Address,
69
+ _deadline: string
70
+ ];
71
+ export declare type TraderJoeV2RouterBuyParams = [
72
+ _amountOut: NumberAsString,
73
+ _amountInMax: NumberAsString,
74
+ _routerPath: RouterPath,
75
+ to: Address,
76
+ _deadline: string
77
+ ];
78
+ export declare type TraderJoeV2RouterParam = TraderJoeV2RouterSellParams | TraderJoeV2RouterBuyParams;
79
+ export declare enum TraderJoeV2RouterFunctions {
80
+ swapExactTokensForTokens = "swapExactTokensForTokens",
81
+ swapTokensForExactTokens = "swapTokensForExactTokens"
82
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TraderJoeV2RouterFunctions = void 0;
4
+ var TraderJoeV2RouterFunctions;
5
+ (function (TraderJoeV2RouterFunctions) {
6
+ TraderJoeV2RouterFunctions["swapExactTokensForTokens"] = "swapExactTokensForTokens";
7
+ TraderJoeV2RouterFunctions["swapTokensForExactTokens"] = "swapTokensForExactTokens";
8
+ })(TraderJoeV2RouterFunctions = exports.TraderJoeV2RouterFunctions || (exports.TraderJoeV2RouterFunctions = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2_1/types.ts"],"names":[],"mappings":";;;AAyGA,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IACpC,mFAAqD,CAAA;IACrD,mFAAqD,CAAA;AACvD,CAAC,EAHW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAGrC"}
@@ -0,0 +1,22 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { Address } from '@paraswap/core';
3
+ import { MultiCallParams, MultiResult } from '../../lib/multi-wrapper';
4
+ import { IDexHelper } from '../../dex-helper';
5
+ import { StatefulRpcPoller } from '../../lib/stateful-rpc-poller/stateful-rpc-poller';
6
+ import { ObjWithUpdateInfo } from '../../lib/stateful-rpc-poller/types';
7
+ import { MulticallResultOutputs, PoolState } from './types';
8
+ export declare class WombatPool extends StatefulRpcPoller<PoolState, MulticallResultOutputs> {
9
+ protected poolAddress: Address;
10
+ protected asset2TokenMap: Map<Address, Address>;
11
+ static readonly poolInterface: Interface;
12
+ static readonly assetInterface: Interface;
13
+ constructor(dexKey: string, poolIdentifier: string, dexHelper: IDexHelper, poolAddress: Address, asset2TokenMap: Map<Address, Address>);
14
+ protected _getFetchStateMultiCalls(): MultiCallParams<MulticallResultOutputs>[];
15
+ protected _parseStateFromMultiResults(multiOutputs: MulticallResultOutputs[]): PoolState;
16
+ fetchLatestStateFromRpc(): Promise<ObjWithUpdateInfo<PoolState> | null>;
17
+ parseStateFromMultiResultsWithBlockInfo(multiOutputs: [
18
+ MultiResult<number>,
19
+ ...MultiResult<MulticallResultOutputs>[]
20
+ ], lastUpdatedAtMs: number): ObjWithUpdateInfo<PoolState>;
21
+ addAssets(asset2TokenMap: Map<Address, Address>): void;
22
+ }
@@ -0,0 +1,164 @@
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.WombatPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const stateful_rpc_poller_1 = require("../../lib/stateful-rpc-poller/stateful-rpc-poller");
10
+ const state_polling_manager_1 = require("../../lib/stateful-rpc-poller/state-polling-manager");
11
+ const utils_1 = require("../../lib/stateful-rpc-poller/utils");
12
+ const decoders_1 = require("../../lib/decoders");
13
+ const pool_json_1 = __importDefault(require("../../abi/wombat/pool.json"));
14
+ const asset_json_1 = __importDefault(require("../../abi/wombat/asset.json"));
15
+ const utils_2 = require("./utils");
16
+ class WombatPool extends stateful_rpc_poller_1.StatefulRpcPoller {
17
+ constructor(dexKey, poolIdentifier, dexHelper, poolAddress, asset2TokenMap) {
18
+ const callbacks = (0, utils_1.pollingManagerCbExtractor)(state_polling_manager_1.StatePollingManager.getInstance(dexHelper));
19
+ super(dexKey, poolIdentifier, dexHelper, 0, 0, false, callbacks);
20
+ this.poolAddress = poolAddress;
21
+ this.asset2TokenMap = asset2TokenMap;
22
+ }
23
+ _getFetchStateMultiCalls() {
24
+ const params = [];
25
+ params.push({
26
+ target: this.poolAddress,
27
+ callData: WombatPool.poolInterface.encodeFunctionData('paused'),
28
+ decodeFunction: decoders_1.booleanDecode,
29
+ });
30
+ params.push({
31
+ target: this.poolAddress,
32
+ callData: WombatPool.poolInterface.encodeFunctionData('ampFactor'),
33
+ decodeFunction: decoders_1.uint256ToBigInt,
34
+ });
35
+ params.push({
36
+ target: this.poolAddress,
37
+ callData: WombatPool.poolInterface.encodeFunctionData('haircutRate'),
38
+ decodeFunction: decoders_1.uint256ToBigInt,
39
+ });
40
+ params.push({
41
+ target: this.poolAddress,
42
+ callData: WombatPool.poolInterface.encodeFunctionData('startCovRatio'),
43
+ decodeFunction: decoders_1.uint256ToBigInt,
44
+ });
45
+ params.push({
46
+ target: this.poolAddress,
47
+ callData: WombatPool.poolInterface.encodeFunctionData('endCovRatio'),
48
+ decodeFunction: decoders_1.uint256ToBigInt,
49
+ });
50
+ params.push({
51
+ target: this.poolAddress,
52
+ callData: WombatPool.poolInterface.encodeFunctionData('getTokens'),
53
+ decodeFunction: decoders_1.addressArrayDecode,
54
+ });
55
+ this.asset2TokenMap.forEach((token, asset) => {
56
+ params.push({
57
+ target: this.poolAddress,
58
+ callData: WombatPool.poolInterface.encodeFunctionData('isPaused', [
59
+ token,
60
+ ]),
61
+ decodeFunction: decoders_1.booleanDecode,
62
+ });
63
+ params.push({
64
+ target: asset,
65
+ callData: WombatPool.assetInterface.encodeFunctionData('cash'),
66
+ decodeFunction: utils_2.uint120ToBigInt,
67
+ });
68
+ params.push({
69
+ target: asset,
70
+ callData: WombatPool.assetInterface.encodeFunctionData('liability'),
71
+ decodeFunction: utils_2.uint120ToBigInt,
72
+ });
73
+ params.push({
74
+ target: asset,
75
+ callData: WombatPool.assetInterface.encodeFunctionData('underlyingTokenDecimals'),
76
+ decodeFunction: decoders_1.uint8ToNumber,
77
+ });
78
+ params.push({
79
+ target: asset,
80
+ callData: WombatPool.assetInterface.encodeFunctionData('getRelativePrice'),
81
+ decodeFunction: decoders_1.uint256ToBigInt,
82
+ });
83
+ });
84
+ return params;
85
+ }
86
+ _parseStateFromMultiResults(multiOutputs) {
87
+ const [paused, ampFactor, haircutRate, startCovRatio, endCovRatio, tokens, ...remained] = multiOutputs;
88
+ const assetTokenArray = Array.from(this.asset2TokenMap.entries());
89
+ const token2AssetStates = new Map();
90
+ lodash_1.default.chunk(remained, 5).forEach((chunk, i) => {
91
+ const [paused, cash, liability, underlyingTokenDecimals, relativePrice] = chunk;
92
+ const [asset, token] = assetTokenArray[i];
93
+ token2AssetStates.set(token, {
94
+ address: asset,
95
+ paused,
96
+ cash,
97
+ liability,
98
+ underlyingTokenDecimals,
99
+ relativePrice,
100
+ });
101
+ });
102
+ const poolState = {
103
+ params: {
104
+ paused,
105
+ ampFactor,
106
+ haircutRate,
107
+ startCovRatio,
108
+ endCovRatio,
109
+ },
110
+ underlyingAddresses: tokens,
111
+ asset: {},
112
+ };
113
+ const isMainPool = Array.from(token2AssetStates.values()).filter(assetState => assetState.relativePrice === undefined).length > 0;
114
+ for (const token of poolState.underlyingAddresses) {
115
+ if (!token2AssetStates.has(token)) {
116
+ // this happens when asset has been added to pool but is not added to BMW yet
117
+ continue;
118
+ }
119
+ poolState.asset[token] = token2AssetStates.get(token);
120
+ if (isMainPool) {
121
+ poolState.asset[token].relativePrice = undefined;
122
+ }
123
+ }
124
+ return poolState;
125
+ }
126
+ async fetchLatestStateFromRpc() {
127
+ const multiCalls = this.getFetchStateWithBlockInfoMultiCalls();
128
+ try {
129
+ const lastUpdatedAtMs = Date.now();
130
+ const aggregatedResults = (await this.dexHelper.multiWrapper.tryAggregate(false, multiCalls, undefined, undefined,
131
+ // multiCalls includes calls asset.isPaused, asset.getRelativePrice
132
+ // some of the contracts don't have these methods, so prevent logging errors
133
+ false));
134
+ return this.parseStateFromMultiResultsWithBlockInfo(aggregatedResults, lastUpdatedAtMs);
135
+ }
136
+ catch (e) {
137
+ this._logMessageWithSuppression('ERROR_FETCHING_STATE_FROM_RPC', e);
138
+ }
139
+ return null;
140
+ }
141
+ parseStateFromMultiResultsWithBlockInfo(multiOutputs, lastUpdatedAtMs) {
142
+ const [blockNumber, ...outputsForAbstract] = multiOutputs.map((m, i) => {
143
+ return m.returnData;
144
+ });
145
+ return {
146
+ value: this._parseStateFromMultiResults(outputsForAbstract),
147
+ blockNumber,
148
+ lastUpdatedAtMs,
149
+ };
150
+ }
151
+ addAssets(asset2TokenMap) {
152
+ for (const [asset, token] of asset2TokenMap) {
153
+ if (this.asset2TokenMap.has(asset)) {
154
+ continue;
155
+ }
156
+ this.asset2TokenMap.set(asset, token);
157
+ this._cachedMultiCallData = undefined;
158
+ }
159
+ }
160
+ }
161
+ exports.WombatPool = WombatPool;
162
+ WombatPool.poolInterface = new abi_1.Interface(pool_json_1.default);
163
+ WombatPool.assetInterface = new abi_1.Interface(asset_json_1.default);
164
+ //# sourceMappingURL=wombat-pool-poller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wombat-pool-poller.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-pool-poller.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.47.2",
3
+ "version": "2.47.3",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
package/src/config.ts CHANGED
@@ -260,7 +260,8 @@ const baseConfigs: { [network: number]: BaseConfig } = {
260
260
 
261
261
  adapterAddresses: {
262
262
  FantomAdapter01: '0x654dE10890f8B2C5bF54E50Af169a7E93165C416',
263
- FantomBuyAdapter: '0xb2634B3CBc1E401AB3C2743DB44d459C5c9aA662',
263
+ FantomAdapter02: '0x248009f6F78b5AcD5EA2fc86d56b77A7AeEe2eFc',
264
+ FantomBuyAdapter: '0xEECA9223063bD13e8ca77ed9e39a07f2BD1923E6',
264
265
  },
265
266
  uniswapV2ExchangeRouterAddress:
266
267
  '0xAB86e2bC9ec5485a9b60E684BA6d49bf4686ACC2',
@@ -44,7 +44,6 @@ export const SolidlyV3Config: DexConfigMap<DexParams> = {
44
44
  SolidlyV3: {
45
45
  [Network.MAINNET]: {
46
46
  factory: '0x70Fe4a44EA505cFa3A57b95cF2862D4fd5F0f687',
47
- quoter: '0x61fFE014bA17989E743c5F6cB21bF9697530B21e',
48
47
  supportedTickSpacings: SUPPORTED_TICK_SPACINGS,
49
48
  stateMulticall: '0xb229563028302AA693EEaD62F80CC331aEDE4e26',
50
49
  chunksCount: 10,
@@ -53,6 +52,17 @@ export const SolidlyV3Config: DexConfigMap<DexParams> = {
53
52
  subgraphURL:
54
53
  'https://api.thegraph.com/subgraphs/name/solidlylabs/solidly-v3',
55
54
  },
55
+ [Network.FANTOM]: {
56
+ factory: '0x70Fe4a44EA505cFa3A57b95cF2862D4fd5F0f687',
57
+ supportedTickSpacings: SUPPORTED_TICK_SPACINGS,
58
+ stateMulticall: '0x000c5dd531b3e2327c0E3a382bC8B21a284E6F61',
59
+ chunksCount: 10,
60
+ initRetryFrequency: 10,
61
+ initHash:
62
+ '0xe9b68c5f77858eecac2e651646e208175e9b1359d68d0e14fc69f8c54e5010bf',
63
+ subgraphURL:
64
+ 'https://api.thegraph.com/subgraphs/name/solidlylabs/solidly-v3-fantom',
65
+ },
56
66
  },
57
67
  };
58
68
 
@@ -61,4 +71,8 @@ export const Adapters: Record<number, AdapterMappings> = {
61
71
  [SwapSide.SELL]: [{ name: 'Adapter04', index: 7 }],
62
72
  [SwapSide.BUY]: [{ name: 'BuyAdapter02', index: 3 }],
63
73
  },
74
+ [Network.FANTOM]: {
75
+ [SwapSide.SELL]: [{ name: 'FantomAdapter02', index: 1 }],
76
+ [SwapSide.BUY]: [{ name: 'FantomBuyAdapter', index: 5 }],
77
+ },
64
78
  };
@@ -121,4 +121,37 @@ describe('SolidlyV3 E2E', () => {
121
121
 
122
122
  testForNetwork(network, dexKey, pairs);
123
123
  });
124
+
125
+ describe('Fantom', () => {
126
+ const network = Network.FANTOM;
127
+
128
+ const pairs = [
129
+ [
130
+ {
131
+ name: NativeTokenSymbols[network],
132
+ sellAmount: '100000000000000000',
133
+ buyAmount: '1000000000',
134
+ },
135
+ {
136
+ name: 'SOLID',
137
+ sellAmount: '1000000000000000000',
138
+ buyAmount: '1000000000',
139
+ },
140
+ ],
141
+ [
142
+ {
143
+ name: 'WFTM',
144
+ sellAmount: '1000000000000000000',
145
+ buyAmount: '1000000000',
146
+ },
147
+ {
148
+ name: 'SOLID',
149
+ sellAmount: '1000000000000000000',
150
+ buyAmount: '1000000000',
151
+ },
152
+ ],
153
+ ];
154
+
155
+ testForNetwork(network, dexKey, pairs);
156
+ });
124
157
  });
@@ -33,7 +33,6 @@ import {
33
33
  } from '../simple-exchange';
34
34
  import { SolidlyV3Config, Adapters, PoolsToPreload } from './config';
35
35
  import { SolidlyV3EventPool } from './solidly-v3-pool';
36
- import UniswapV3QuoterV2ABI from '../../abi/uniswap-v3/UniswapV3QuoterV2.abi.json';
37
36
  import DirectSwapABI from '../../abi/DirectSwap.json';
38
37
  import SolidlyV3StateMulticallABI from '../../abi/solidly-v3/SolidlyV3StateMulticall.abi.json';
39
38
  import SolidlyV3PoolABI from '../../abi/solidly-v3/SolidlyV3Pool.abi.json';
@@ -91,7 +90,6 @@ export class SolidlyV3
91
90
  protected dexHelper: IDexHelper,
92
91
  protected adapters = Adapters[network] || {},
93
92
  readonly poolIface = new Interface(SolidlyV3PoolABI),
94
- readonly quoterIface = new Interface(UniswapV3QuoterV2ABI),
95
93
  protected config = SolidlyV3Config[dexKey][network],
96
94
  protected poolsToPreload = PoolsToPreload[dexKey]?.[network] || [],
97
95
  ) {
@@ -851,7 +849,6 @@ export class SolidlyV3
851
849
  private _toLowerForAllConfigAddresses() {
852
850
  // If new config property will be added, the TS will throw compile error
853
851
  const newConfig: DexParams = {
854
- quoter: this.config.quoter.toLowerCase(),
855
852
  factory: this.config.factory.toLowerCase(),
856
853
  supportedTickSpacings: this.config.supportedTickSpacings,
857
854
  stateMulticall: this.config.stateMulticall.toLowerCase(),
@@ -46,7 +46,6 @@ export type DecodeStateMultiCallFunc = (
46
46
  ) => DecodedStateMultiCallResultWithRelativeBitmaps;
47
47
 
48
48
  export type DexParams = {
49
- quoter: Address;
50
49
  factory: Address;
51
50
  stateMulticall: Address;
52
51
  supportedTickSpacings: bigint[];
@@ -472,6 +472,10 @@ export const Tokens: {
472
472
  },
473
473
  [Network.FANTOM]: {
474
474
  FTM: { address: ETHER_ADDRESS, decimals: 18 },
475
+ SOLID: {
476
+ address: '0x777cf5ba9c291a1a8f57ff14836f6f9dc5c0f9dd',
477
+ decimals: 18,
478
+ },
475
479
  WFTM: {
476
480
  address: '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83',
477
481
  decimals: 18,
@@ -1121,7 +1125,7 @@ export const Holders: {
1121
1125
  [Network.FANTOM]: {
1122
1126
  DAI: '0x370f4b2dcf75c94d8d4450b493661a9c6170d0b5',
1123
1127
  FTM: '0x431e81E5dfB5A24541b5Ff8762bDEF3f32F96354',
1124
- WFTM: '0x3e923747ca2675e096d812c3b24846ac39aed645',
1128
+ WFTM: '0xB7D0fB518a5b7bf8dc7ea19A715E8FD8BD983e27',
1125
1129
  USDC: '0xf53feaeb035361c046e5669745695e450ebb4028',
1126
1130
  FUSDT: '0x9ade1c17d25246c405604344f89E8F23F8c1c632',
1127
1131
  POPS: '0x4b78b52e7de4d8b7d367297cb8a87c1875a9d591',
@@ -1141,7 +1145,8 @@ export const Holders: {
1141
1145
  EQUAL: '0x8b187ea19c93091a4d6b426b71871648182b5fac',
1142
1146
  FVM: '0x07BB65fAaC502d4996532F834A1B7ba5dC32Ff96',
1143
1147
  lzUSDC: '0x1e38e2e0e7df3be6592867d0ac2713a4dbda8350',
1144
- axlUSDC: '0xccf932cd565c21d2e516c8ff3a4f244eea27e09a',
1148
+ axlUSDC: '0x1c664Bafc646510684Ba1588798c67fe22a8c7cf',
1149
+ SOLID: '0xdF6A50d16320D9eAf0D91e0039fcE89c700F95F1',
1145
1150
  },
1146
1151
  [Network.BSC]: {
1147
1152
  DAI: '0xf68a4b64162906eff0ff6ae34e2bb1cd42fef62d',
@@ -119,7 +119,8 @@ class APIParaswapSDK implements IParaSwapSDK {
119
119
  amount: amount.toString(),
120
120
  options: {
121
121
  includeDEXS: [this.dexKey],
122
- includeContractMethods: [contractMethod],
122
+ // TODO: Improve typing
123
+ includeContractMethods: [contractMethod as any],
123
124
  partner: 'any',
124
125
  },
125
126
  srcDecimals: from.decimals,