impermax-sdk 1.0.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 (103) hide show
  1. package/.idea/impermax-sdk.iml +12 -0
  2. package/.idea/misc.xml +6 -0
  3. package/.idea/modules.xml +8 -0
  4. package/.idea/workspace.xml +642 -0
  5. package/abis/ImpermaxABI.ts +3 -0
  6. package/abis/contracts/BAllowance.json +4735 -0
  7. package/abis/contracts/BDeployer.json +1195 -0
  8. package/abis/contracts/BInterestRateModel.json +10796 -0
  9. package/abis/contracts/BSetter.json +6219 -0
  10. package/abis/contracts/BStorage.json +2613 -0
  11. package/abis/contracts/Borrowable.json +19937 -0
  12. package/abis/contracts/CDeployer.json +1104 -0
  13. package/abis/contracts/CSetter.json +5094 -0
  14. package/abis/contracts/CStorage.json +516 -0
  15. package/abis/contracts/ClaimAggregator.json +2015 -0
  16. package/abis/contracts/Collateral.json +21615 -0
  17. package/abis/contracts/ERC20.json +819 -0
  18. package/abis/contracts/Factory.json +21986 -0
  19. package/abis/contracts/FarmingPool.json +8601 -0
  20. package/abis/contracts/IBDeployer.json +351 -0
  21. package/abis/contracts/IBorrowTracker.json +346 -0
  22. package/abis/contracts/IBorrowable.json +13207 -0
  23. package/abis/contracts/ICDeployer.json +294 -0
  24. package/abis/contracts/IClaimable.json +406 -0
  25. package/abis/contracts/ICollateral.json +8952 -0
  26. package/abis/contracts/IERC20.json +2376 -0
  27. package/abis/contracts/IFactory.json +3660 -0
  28. package/abis/contracts/IFarmingPool.json +3584 -0
  29. package/abis/contracts/IImpermaxCallee.json +679 -0
  30. package/abis/contracts/IMerkleDistributor.json +1134 -0
  31. package/abis/contracts/IPoolToken.json +5343 -0
  32. package/abis/contracts/IRouter01.json +6891 -0
  33. package/abis/contracts/IRouter02.json +7283 -0
  34. package/abis/contracts/ISimpleUniswapOracle.json +1469 -0
  35. package/abis/contracts/IStakedLPToken.json +7309 -0
  36. package/abis/contracts/IStakingRewards.json +1036 -0
  37. package/abis/contracts/IUniswapV2Callee.json +403 -0
  38. package/abis/contracts/IUniswapV2ERC20.json +3155 -0
  39. package/abis/contracts/IUniswapV2Factory.json +1690 -0
  40. package/abis/contracts/IUniswapV2Pair.json +6761 -0
  41. package/abis/contracts/IWETH.json +561 -0
  42. package/abis/contracts/ImpermaxChef.json +20945 -0
  43. package/abis/contracts/ImpermaxERC20.json +12095 -0
  44. package/abis/contracts/Math.json +1966 -0
  45. package/abis/contracts/MockERC20.json +8884 -0
  46. package/abis/contracts/PoolToken.json +10784 -0
  47. package/abis/contracts/Router01.json +43963 -0
  48. package/abis/contracts/SafeMath.json +6828 -0
  49. package/abis/contracts/SimpleUniswapOracle.json +9640 -0
  50. package/abis/contracts/TransferHelper.json +4875 -0
  51. package/abis/contracts/UQ112x112.json +1201 -0
  52. package/abis/contracts/UniswapV2ERC20.json +10969 -0
  53. package/abis/contracts/UniswapV2Factory.json +5521 -0
  54. package/abis/contracts/UniswapV2Library.json +13789 -0
  55. package/abis/contracts/UniswapV2Pair.json +30782 -0
  56. package/abis/contracts/WETH9.json +6613 -0
  57. package/config/amms.ts +199 -0
  58. package/config/contracts/claim-aggregators.ts +16 -0
  59. package/config/contracts/impermax-chef.ts +16 -0
  60. package/config/contracts/imxes.ts +16 -0
  61. package/config/contracts/merkle-distributors.ts +13 -0
  62. package/config/contracts/routers.ts +36 -0
  63. package/config/contracts/simple-uniswap-oracles.ts +33 -0
  64. package/config/contracts/weths.ts +18 -0
  65. package/config/debank-ids.ts +15 -0
  66. package/config/endpoints/merkle-distributors.ts +13 -0
  67. package/config/eth.ts +32 -0
  68. package/config/factories.ts +26 -0
  69. package/config/farms.ts +119 -0
  70. package/config/general.ts +8 -0
  71. package/config/subgraphs.ts +69 -0
  72. package/config/types.ts +81 -0
  73. package/impermax-router/Account.ts +123 -0
  74. package/impermax-router/AccountBorrowable.ts +110 -0
  75. package/impermax-router/AccountCollateral.ts +40 -0
  76. package/impermax-router/AccountLendingPool.ts +231 -0
  77. package/impermax-router/AccountPoolToken.ts +76 -0
  78. package/impermax-router/Borrowable.ts +86 -0
  79. package/impermax-router/Collateral.ts +26 -0
  80. package/impermax-router/ContractsHelper.ts +64 -0
  81. package/impermax-router/ImpermaxFactory.ts +47 -0
  82. package/impermax-router/Interactions.ts +94 -0
  83. package/impermax-router/InteractionsLendingPool.ts +129 -0
  84. package/impermax-router/InteractionsPoolToken.ts +187 -0
  85. package/impermax-router/LendingPool.ts +256 -0
  86. package/impermax-router/PoolToken.ts +112 -0
  87. package/impermax-router/index.ts +49 -0
  88. package/impermax-router/interfaces.ts +233 -0
  89. package/index.ts +5 -0
  90. package/package.json +23 -0
  91. package/subgraph/Account.ts +93 -0
  92. package/subgraph/AccountLendingPool.ts +60 -0
  93. package/subgraph/AccountPoolToken.ts +60 -0
  94. package/subgraph/LendingPool.ts +179 -0
  95. package/subgraph/PoolToken.ts +381 -0
  96. package/subgraph/PriceHelper.ts +150 -0
  97. package/subgraph/SolidexHelper.ts +54 -0
  98. package/subgraph/index.ts +166 -0
  99. package/subgraph/initializer.ts +509 -0
  100. package/subgraph/query.ts +224 -0
  101. package/tsconfig.json +16 -0
  102. package/utils/ether-utils.ts +22 -0
  103. package/utils/index.ts +12 -0
package/config/amms.ts ADDED
@@ -0,0 +1,199 @@
1
+ import { Address, AmmIndex, Amms, Networks } from './types';
2
+
3
+ export const hrAmms = {
4
+ [Amms.uniswap]: 'Uniswap',
5
+ [Amms.quickswap]: 'QuickSwap',
6
+ [Amms.sushiswap]: 'SushiSwap',
7
+ [Amms.swapr]: 'Swapr',
8
+ [Amms.swapfish]: 'SwapFish',
9
+ [Amms.zyberswap]: 'ZyberSwap',
10
+ [Amms.pangolin]: 'Pangolin',
11
+ [Amms.traderJoe]: 'TraderJoe',
12
+ [Amms.solarbeam]: 'Solarbeam',
13
+ [Amms.thorus]: 'Thorus',
14
+ [Amms.tetuswap]: 'TetuSwap',
15
+ [Amms.solidly]: 'Solidly',
16
+ [Amms.solidlyB]: 'Solidly',
17
+ [Amms.solidlyUSDC]: 'Solidly',
18
+ [Amms.solidlyUSDCB]: 'Solidly',
19
+ [Amms.solidly091]: 'Solidly',
20
+ [Amms.solidlyOxd]: 'Solidly',
21
+ };
22
+
23
+ export const AMM_FACTORY: AmmIndex = {
24
+ [Networks.Ropsten]: {
25
+ [Amms.uniswap]: '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f',
26
+ },
27
+ [Networks.Mainnet]: {
28
+ [Amms.uniswap]: '0x5c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f',
29
+ },
30
+ [Networks.Polygon]: {
31
+ [Amms.quickswap]: '0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32',
32
+ [Amms.sushiswap]: '0xc35dadb65012ec5796536bd9864ed8773abc74c4',
33
+ [Amms.tetuswap]: '0x684d8c187be836171a1Af8D533e4724893031828',
34
+ },
35
+ [Networks.Arbitrum]: {
36
+ [Amms.sushiswap]: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4',
37
+ [Amms.swapr]: '0x359F20Ad0F42D75a5077e65F30274cABe6f4F01a',
38
+ [Amms.swapfish]: '0x71539D09D3890195dDa87A6198B98B75211b72F3',
39
+ [Amms.zyberswap]: '0xac2ee06a14c52570ef3b9812ed240bce359772e7',
40
+ },
41
+ [Networks.Avalanche]: {
42
+ [Amms.pangolin]: '0xefa94DE7a4656D787667C749f7E1223D71E9FD88',
43
+ [Amms.traderJoe]: '0x9Ad6C38BE94206cA50bb0d90783181662f0Cfa10',
44
+ [Amms.thorus]: '0xa98ea6356A316b44Bf710D5f9b6b4eA0081409Ef',
45
+ },
46
+ [Networks.Moonriver]: {
47
+ [Amms.sushiswap]: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4',
48
+ [Amms.solarbeam]: '0x049581aEB6Fe262727f290165C29BDAB065a1B68',
49
+ },
50
+ [Networks.Aurora]: {},
51
+ [Networks.Cronos]: {},
52
+ [Networks.Fantom]: {
53
+ [Amms.solidly]: '0x95887654d8646c26fab33f344576e2e74b211256', //NOTICE: this is actually the staked LP factory
54
+ [Amms.solidlyB]: '0x8610Dc1912a55761a713D827a1a1ad131bE8f579', //NOTICE: this is actually the staked LP factory
55
+ [Amms.solidlyUSDC]: '0xF14f98E6F34C12Bd74fcEAC1668aF749fc269cFf', //NOTICE: this is actually the staked LP factory
56
+ [Amms.solidlyUSDCB]: '0x9B1434a02Ee86302d463bB6B365EbdFAc56e067A', //NOTICE: this is actually the staked LP factory
57
+ [Amms.solidly091]: '0xdc4baf3b4b1df79083eedf3e46ec2c4ec1296f60', //NOTICE: this is actually the staked LP factory
58
+ [Amms.solidlyOxd]: '0xB83D21F60B73B21506c69DEcdBcF7Ab5AB737eB2', //NOTICE: this is actually the staked LP factory
59
+ },
60
+ [Networks.Harmony]: {},
61
+ [Networks.Moonbeam]: {},
62
+ [Networks.Sxnetwork]: {},
63
+ };
64
+
65
+ export function getAmmByFactory(network: Networks, address: Address) : Amms {
66
+ if (!address) return null;
67
+ for (const amm of Object.keys(Amms) as Amms[]) {
68
+ if (
69
+ AMM_FACTORY[network][amm] &&
70
+ address.toLowerCase() == AMM_FACTORY[network][amm].toLowerCase()
71
+ ) return amm;
72
+ }
73
+ return null;
74
+ }
75
+
76
+
77
+ export const AMM_SUBGRAPH_URLS: AmmIndex = {
78
+ [Networks.Ropsten]: {},
79
+ [Networks.Mainnet]: {
80
+ [Amms.uniswap]: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2',
81
+ },
82
+ [Networks.Polygon]: {
83
+ [Amms.quickswap]: 'https://api.fura.org/subgraphs/name/quickswap',
84
+ [Amms.sushiswap]: 'https://api.thegraph.com/subgraphs/name/sushiswap/matic-exchange',
85
+ [Amms.tetuswap]: 'https://api.thegraph.com/subgraphs/name/tetu-io/tetu-swap',
86
+ },
87
+ [Networks.Arbitrum]: {
88
+ [Amms.sushiswap]: 'https://api.thegraph.com/subgraphs/name/sushiswap/arbitrum-exchange',
89
+ [Amms.swapr]: 'https://api.thegraph.com/subgraphs/name/luzzif/swapr-arbitrum-one-v2',
90
+ [Amms.zyberswap]: 'https://api.thegraph.com/subgraphs/name/zyberswap-arbitrum/zyber-amm',
91
+ //[Amms.swapfish]: 'https://bsc.streamingfast.io/subgraphs/name/pancakeswap/exchange-v2',
92
+ },
93
+ [Networks.Avalanche]: {
94
+ [Amms.pangolin]: 'https://api.thegraph.com/subgraphs/name/dasconnor/pangolin-dex',
95
+ [Amms.traderJoe]: 'https://api.thegraph.com/subgraphs/name/traderjoe-xyz/exchange',
96
+ [Amms.thorus]: '',
97
+ },
98
+ [Networks.Moonriver]: {
99
+ [Amms.sushiswap]: 'https://api.thegraph.com/subgraphs/name/sushiswap/moonriver-exchange',
100
+ [Amms.solarbeam]: 'https://analytics.solarbeam.io/api/subgraph',
101
+ },
102
+ [Networks.Aurora]: {},
103
+ [Networks.Cronos]: {},
104
+ [Networks.Fantom]: {
105
+ [Amms.solidly]: 'https://api.thegraph.com/subgraphs/name/spartacus-finance/solidly',
106
+ [Amms.solidlyB]: 'https://api.thegraph.com/subgraphs/name/spartacus-finance/solidly',
107
+ [Amms.solidlyUSDC]: 'https://api.thegraph.com/subgraphs/name/spartacus-finance/solidly',
108
+ [Amms.solidlyUSDCB]: 'https://api.thegraph.com/subgraphs/name/spartacus-finance/solidly',
109
+ [Amms.solidly091]: 'https://api.thegraph.com/subgraphs/name/spartacus-finance/solidly',
110
+ [Amms.solidlyOxd]: 'https://api.thegraph.com/subgraphs/name/spartacus-finance/solidly',
111
+ },
112
+ [Networks.Harmony]: {},
113
+ [Networks.Moonbeam]: {},
114
+ [Networks.Sxnetwork]: {},
115
+ };
116
+
117
+ export const ADD_LIQUIDITY_URLS: AmmIndex = {
118
+ [Networks.Ropsten]: {
119
+ [Amms.uniswap]: 'https://app.uniswap.org/#/add/V2/',
120
+ },
121
+ [Networks.Mainnet]: {
122
+ [Amms.uniswap]: 'https://app.uniswap.org/#/add/V2/',
123
+ },
124
+ [Networks.Polygon]: {
125
+ [Amms.quickswap]: 'https://quickswap.exchange/#/add/',
126
+ [Amms.sushiswap]: 'https://app.sushi.com/legacy/add/',
127
+ [Amms.tetuswap]: 'https://swap.tetu.io/#/add/',
128
+ },
129
+ [Networks.Arbitrum]: {
130
+ [Amms.sushiswap]: 'https://app.sushi.com/legacy/add/',
131
+ [Amms.swapr]: 'https://swapr.eth.link/#/add/',
132
+ [Amms.swapfish]: 'https://swapfish.fi/add/',
133
+ [Amms.zyberswap]: 'https://app.zyberswap.io/exchange/add/',
134
+ },
135
+ [Networks.Avalanche]: {
136
+ [Amms.pangolin]: 'https://app.pangolin.exchange/#/add/',
137
+ [Amms.traderJoe]: 'https://www.traderjoexyz.com/#/pool/',
138
+ [Amms.thorus]: 'https://app.thorus.fi/add/',
139
+ },
140
+ [Networks.Moonriver]: {
141
+ [Amms.sushiswap]: 'https://app.sushi.com/legacy/add/',
142
+ [Amms.solarbeam]: 'https://app.solarbeam.io/exchange/add/',
143
+ },
144
+ [Networks.Aurora]: {},
145
+ [Networks.Cronos]: {},
146
+ [Networks.Fantom]: {
147
+ [Amms.solidly]: 'https://solidly.exchange/liquidity/create',
148
+ [Amms.solidlyB]: 'https://solidly.exchange/liquidity/create',
149
+ [Amms.solidlyUSDC]: 'https://solidly.exchange/liquidity/create',
150
+ [Amms.solidlyUSDCB]: 'https://solidly.exchange/liquidity/create',
151
+ [Amms.solidly091]: 'https://solidly.exchange/liquidity/create',
152
+ [Amms.solidlyOxd]: 'https://solidly.exchange/liquidity/create',
153
+ },
154
+ [Networks.Harmony]: {},
155
+ [Networks.Moonbeam]: {},
156
+ [Networks.Sxnetwork]: {},
157
+ };
158
+
159
+ export const AMM_LP_FEE: AmmIndex = {
160
+ [Networks.Ropsten]: {
161
+ [Amms.uniswap]: 0.003,
162
+ },
163
+ [Networks.Mainnet]: {
164
+ [Amms.uniswap]: 0.003,
165
+ },
166
+ [Networks.Polygon]: {
167
+ [Amms.quickswap]: 0.0025,
168
+ [Amms.sushiswap]: 0.0025,
169
+ [Amms.tetuswap]: 0,
170
+ },
171
+ [Networks.Arbitrum]: {
172
+ [Amms.sushiswap]: 0.0025,
173
+ [Amms.swapr]: 0.00225,
174
+ [Amms.swapfish]: 0.0017,
175
+ [Amms.zyberswap]: 0.0015,
176
+ },
177
+ [Networks.Avalanche]: {
178
+ [Amms.pangolin]: 0.0025,
179
+ [Amms.traderJoe]: 0.0025,
180
+ [Amms.thorus]: 0,
181
+ },
182
+ [Networks.Moonriver]: {
183
+ [Amms.sushiswap]: 0.0025,
184
+ [Amms.solarbeam]: 0.002,
185
+ },
186
+ [Networks.Aurora]: {},
187
+ [Networks.Cronos]: {},
188
+ [Networks.Fantom]: {
189
+ [Amms.solidly]: 0,
190
+ [Amms.solidlyB]: 0,
191
+ [Amms.solidlyUSDC]: 0,
192
+ [Amms.solidlyUSDCB]: 0,
193
+ [Amms.solidly091]: 0,
194
+ [Amms.solidlyOxd]: 0,
195
+ },
196
+ [Networks.Harmony]: {},
197
+ [Networks.Moonbeam]: {},
198
+ [Networks.Sxnetwork]: {},
199
+ };
@@ -0,0 +1,16 @@
1
+ import { Address, NetworkIndex, Networks } from '../types';
2
+
3
+ export const CLAIM_AGGREGATOR: NetworkIndex<Address> = {
4
+ [Networks.Ropsten]: '0x2078270ae9956f1298f8bfd8be43306bbd4ab551',
5
+ [Networks.Mainnet]: '0x5287cac629be59997602b4177cb4420165264b69',
6
+ [Networks.Polygon]: '0x718Cd1D06094b53de74dE745c4EAD3AC629a0c98',
7
+ [Networks.Arbitrum]: '0x95887654d8646C26fAb33F344576E2E74b211256',
8
+ [Networks.Avalanche]: '0x5e169082fFf23cEE6766062B96051A78c543127D',
9
+ [Networks.Moonriver]: '0x772a82D27b1024e9072aE33dCEd3C0DF1FbDA66e',
10
+ [Networks.Aurora]: '',
11
+ [Networks.Cronos]: '',
12
+ [Networks.Fantom]: '',
13
+ [Networks.Harmony]: '',
14
+ [Networks.Moonbeam]: '',
15
+ [Networks.Sxnetwork]: '',
16
+ };
@@ -0,0 +1,16 @@
1
+ import { Address, NetworkIndex, Networks } from '../types';
2
+
3
+ export const IMPERMAX_CHEF: NetworkIndex<Address> = {
4
+ [Networks.Ropsten]: '',
5
+ [Networks.Mainnet]: '',
6
+ [Networks.Polygon]: '0x89703cA5c6C3BD35f9D288Ff9710BecBFA8C6f7b',
7
+ [Networks.Arbitrum]: '0x99CF05461dd5F94761d4Fae6a2abDa47A93451f5',
8
+ [Networks.Avalanche]: '0x5475aEd9d11BeaA822e122C36ACDfa0dA2eb086f',
9
+ [Networks.Moonriver]: '0xD299D53Fc3B09038765af2091a0647e2304a7caa',
10
+ [Networks.Aurora]: '',
11
+ [Networks.Cronos]: '',
12
+ [Networks.Fantom]: '0x19D8a5Abbd08E8Cf6aA9b2df46A04D13CCB7E3b4',
13
+ [Networks.Harmony]: '',
14
+ [Networks.Moonbeam]: '',
15
+ [Networks.Sxnetwork]: '',
16
+ };
@@ -0,0 +1,16 @@
1
+ import { Address, NetworkIndex, Networks } from '../types';
2
+
3
+ export const IMX: NetworkIndex<Address> = {
4
+ [Networks.Ropsten]: '0x6659a9c5cd313974343e30b4fdffd95bd4b4dcd2',
5
+ [Networks.Mainnet]: '0x7b35ce522cb72e4077baeb96cb923a5529764a00',
6
+ [Networks.Polygon]: '0x60bb3d364b765c497c8ce50ae0ae3f0882c5bd05',
7
+ [Networks.Arbitrum]: '0x9c67ee39e3c4954396b9142010653f17257dd39c',
8
+ [Networks.Avalanche]: '0xea6887e4a9cda1b77e70129e5fba830cdb5cddef',
9
+ [Networks.Moonriver]: '0x900f1Ec5819FA087d368877cD03B265Bf1802667',
10
+ [Networks.Aurora]: '',
11
+ [Networks.Cronos]: '',
12
+ [Networks.Fantom]: '0xea38f1ccf77bf43f352636241b05dd8f6f5f52b2',
13
+ [Networks.Harmony]: '0xbd8064cdb96c00a73540922504f989c64b7b8b96',
14
+ [Networks.Moonbeam]: '',
15
+ [Networks.Sxnetwork]: '',
16
+ };
@@ -0,0 +1,13 @@
1
+ import { Address, NetworkIndex, Networks } from '../types';
2
+
3
+ export const MERKLE_DISTRIBUTOR_IBEX: NetworkIndex<Address> = {
4
+ [Networks.Polygon]: '0x9c7213207b5f8726164c96a76a4b9c0fbf984aba',
5
+ };
6
+
7
+ export const MERKLE_DISTRIBUTOR_IBEX_2: NetworkIndex<Address> = {
8
+ [Networks.Polygon]: '0x1c813cDd6dAecE2CB83C52F0798504e42816E9C5',
9
+ };
10
+
11
+ export const MERKLE_DISTRIBUTOR_ETH: NetworkIndex<Address> = {
12
+ [Networks.Polygon]: '0x7ce2f634f0698ecdca051ef1dc4be96ef3d05a62',
13
+ };
@@ -0,0 +1,36 @@
1
+ import { Address, Factory, NetworkFactoryIndex, Networks } from '../types';
2
+
3
+ export const ROUTER: NetworkFactoryIndex<Address> = {
4
+ [Networks.Ropsten]: {
5
+ [Factory.V2V1]: '0xbFf4acF789297A8507Eb7493AE18EB2C3A3A9632'
6
+ },
7
+ [Networks.Mainnet]: {
8
+ [Factory.V2V1]: '0x5e169082fff23cee6766062b96051a78c543127d'
9
+ },
10
+ [Networks.Polygon]: {
11
+ [Factory.V2V1_1]: '0x7C79A1c2152665273ebD50e9E88d92A887a83BA0',
12
+ [Factory.V2V2]: '0x4e69Cf49FF3aF82eFe304a3C723556efB7434736',
13
+ },
14
+ [Networks.Arbitrum]: {
15
+ [Factory.V2V1_1]: '0x5475aEd9d11BeaA822e122C36ACDfa0dA2eb086f',
16
+ [Factory.V2V2]: '0xaf82ee9246a608484e8567fadbef64ac1b8a87ab',
17
+ },
18
+ [Networks.Avalanche]: {
19
+ [Factory.V2V1_2]: '0x3039C26F9126833bAca8EdBF61c761CD909F461f',
20
+ [Factory.V2V2]: '0xaf82ee9246a608484e8567fadbef64ac1b8a87ab',
21
+ },
22
+ [Networks.Moonriver]: {
23
+ [Factory.V2V1_2]: '0x3271cc175577465691e48196955e09d638fa05d5',
24
+ },
25
+ [Networks.Aurora]: {
26
+ [Factory.V2V1_2]: '0xBB92270716C8c424849F17cCc12F4F24AD4064D6',
27
+ },
28
+ [Networks.Cronos]: {},
29
+ [Networks.Fantom]: {
30
+ [Factory.SOLV1_2]: '0xB9f3413e206F1D658D4DaFB233873dDe56cf94Fc',
31
+ [Factory.SOLV2]: '0xc75094b5cE53C050816A446701B0D69101c40937',
32
+ },
33
+ [Networks.Harmony]: {},
34
+ [Networks.Moonbeam]: {},
35
+ [Networks.Sxnetwork]: {},
36
+ };
@@ -0,0 +1,33 @@
1
+ import { Address, Factory, NetworkFactoryIndex, Networks } from '../types';
2
+
3
+ export const SIMPLE_UNISWAP_ORACLE: NetworkFactoryIndex<Address> = {
4
+ [Networks.Ropsten]: {
5
+ [Factory.V2V1]: '0xc53bb18028feA1B413057e2b2474F9838c465Fc3'
6
+ },
7
+ [Networks.Mainnet]: {
8
+ [Factory.V2V1]: '0x5671B249391cA5E6a8FE28CEb1e85Dc41c12Ba7D'
9
+ },
10
+ [Networks.Polygon]: {
11
+ [Factory.V2V1_1]: '0x3271CC175577465691E48196955e09d638Fa05D5',
12
+ [Factory.V2V2]: '0x3271CC175577465691E48196955e09d638Fa05D5',
13
+ },
14
+ [Networks.Arbitrum]: {
15
+ [Factory.V2V1_1]: '0x5671B249391cA5E6a8FE28CEb1e85Dc41c12Ba7D',
16
+ [Factory.V2V2]: '0x9c7213207b5f8726164c96a76a4b9c0fbf984aba',
17
+ },
18
+ [Networks.Avalanche]: {
19
+ [Factory.V2V1_2]: '0xC12E00DE204d58eAd5B5cE9054E94aeE7747fB6C',
20
+ [Factory.V2V2]: '0x9c7213207b5f8726164c96a76a4b9c0fbf984aba',
21
+ },
22
+ [Networks.Moonriver]: {
23
+ [Factory.V2V1_2]: '0x5671B249391cA5E6a8FE28CEb1e85Dc41c12Ba7D'
24
+ },
25
+ [Networks.Aurora]: {
26
+ [Factory.V2V1_2]: '0x5671B249391cA5E6a8FE28CEb1e85Dc41c12Ba7D'
27
+ },
28
+ [Networks.Cronos]: {},
29
+ [Networks.Fantom]: {},
30
+ [Networks.Harmony]: {},
31
+ [Networks.Moonbeam]: {},
32
+ [Networks.Sxnetwork]: {},
33
+ };
@@ -0,0 +1,18 @@
1
+ import { Address, NetworkIndex, Networks } from '../types';
2
+
3
+
4
+ export const WETH: NetworkIndex<Address> = {
5
+ [Networks.Ropsten]: '0xc778417E063141139Fce010982780140Aa0cD5Ab',
6
+ [Networks.Mainnet]: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
7
+ [Networks.Polygon]: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', // WMATIC
8
+ [Networks.Arbitrum]: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',
9
+ [Networks.Avalanche]: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', // WAVAX
10
+ //[Networks.Moonriver]: '0xf50225a84382c74cbdea10b0c176f71fc3de0c4d', // WMOVR
11
+ [Networks.Moonriver]: '0x98878b06940ae243284ca214f92bb71a2b032b8a', // WMOVR
12
+ [Networks.Aurora]: '0xC9BdeEd33CD01541e1eeD10f90519d2C06Fe3feB', // WETH
13
+ [Networks.Cronos]: '0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23', // WCRO
14
+ [Networks.Fantom]: '0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83', // WFTM
15
+ [Networks.Harmony]: '0xcf664087a5bb0237a0bad6742852ec6c8d69a27a', // WONE
16
+ [Networks.Moonbeam]: '0xacc15dc74880c9944775448304b263d191c6077f', // WGLMR
17
+ [Networks.Sxnetwork]: '0xacc15dc74880c9944775448304b263d191c6077f', // WGLMR
18
+ };
@@ -0,0 +1,15 @@
1
+ import { NetworkIndex, Networks } from './types';
2
+
3
+ export const DEBANK_IDS : NetworkIndex<string> = {
4
+ [Networks.Ropsten]: '',
5
+ [Networks.Mainnet]: 'eth',
6
+ [Networks.Polygon]: 'matic',
7
+ [Networks.Arbitrum]: 'arb',
8
+ [Networks.Avalanche]: 'avax',
9
+ [Networks.Moonriver]: 'movr',
10
+ [Networks.Fantom]: 'ftm',
11
+ [Networks.Cronos]: 'cro',
12
+ [Networks.Aurora]: '',
13
+ [Networks.Harmony]: '',
14
+ [Networks.Moonbeam]: '',
15
+ }
@@ -0,0 +1,13 @@
1
+ import { NetworkIndex, Networks } from '../types';
2
+
3
+ export const MERKLE_URL_IBEX: NetworkIndex<string> = {
4
+ [Networks.Polygon]: 'https://falling-tooth-1f6f.impermax.workers.dev',
5
+ };
6
+
7
+ export const MERKLE_URL_IBEX_2: NetworkIndex<string> = {
8
+ [Networks.Polygon]: 'https://misty-rice-9880.impermax.workers.dev',
9
+ };
10
+
11
+ export const MERKLE_URL_ETH: NetworkIndex<string> = {
12
+ [Networks.Polygon]: 'https://damp-hill-13d0.impermax.workers.dev',
13
+ };
package/config/eth.ts ADDED
@@ -0,0 +1,32 @@
1
+ import { Address, NetworkIndex, Networks } from './types';
2
+
3
+
4
+ export const ETH_NAME: NetworkIndex<Address> = {
5
+ [Networks.Ropsten]: 'Ethereum',
6
+ [Networks.Mainnet]: 'Ethereum',
7
+ [Networks.Polygon]: 'Polygon',
8
+ [Networks.Arbitrum]: 'Ethereum',
9
+ [Networks.Avalanche]: 'Avalanche',
10
+ [Networks.Moonriver]: 'Moonriver',
11
+ [Networks.Aurora]: 'Ethereum',
12
+ [Networks.Cronos]: 'Crypto.com',
13
+ [Networks.Fantom]: 'Fantom',
14
+ [Networks.Harmony]: 'Harmony',
15
+ [Networks.Moonbeam]: 'Moonbeam',
16
+ [Networks.Sxnetwork]: 'SX Network',
17
+ };
18
+
19
+ export const ETH_SYMBOL: NetworkIndex<Address> = {
20
+ [Networks.Ropsten]: 'ETH',
21
+ [Networks.Mainnet]: 'ETH',
22
+ [Networks.Polygon]: 'MATIC',
23
+ [Networks.Arbitrum]: 'ETH',
24
+ [Networks.Avalanche]: 'AVAX',
25
+ [Networks.Moonriver]: 'MOVR',
26
+ [Networks.Aurora]: 'ETH',
27
+ [Networks.Cronos]: 'CRO',
28
+ [Networks.Fantom]: 'FTM',
29
+ [Networks.Harmony]: 'ONE',
30
+ [Networks.Moonbeam]: 'GLMR',
31
+ [Networks.Sxnetwork]: 'SX',
32
+ };
@@ -0,0 +1,26 @@
1
+ import { Factory } from './types';
2
+
3
+ export const SOLIDEX_FACTORIES = [
4
+ Factory.SOLV1_2,
5
+ Factory.SOLV2,
6
+ ];
7
+
8
+ export const BORROW_FEE_FACTORIES = [
9
+ Factory.V2V1,
10
+ Factory.V2V1_1,
11
+ ];
12
+
13
+ export const OLD_KINK_MULTIPLIER_FACTORIES = [
14
+ Factory.V2V1,
15
+ Factory.V2V1_1,
16
+ ];
17
+
18
+ export const LIQUIDATION_FEE_FACTORIES = [
19
+ Factory.V2V2,
20
+ Factory.SOLV2,
21
+ ];
22
+
23
+ export const V2_FACTORIES = [
24
+ Factory.V2V2,
25
+ Factory.SOLV2,
26
+ ];
@@ -0,0 +1,119 @@
1
+ import { Address, Networks } from './types';
2
+
3
+ export enum Farms {
4
+ quickswapOld = 'quickswapOld',
5
+ quickswap = 'quickswap',
6
+ quickswapDual = 'quickswapDual',
7
+ sushiswap = 'sushiswap',
8
+ arbinyan = 'arbinyan',
9
+ swapr = 'swapr',
10
+ swapfish = 'swapfish',
11
+ zyberswap = 'zyberswap',
12
+ radiant = '',
13
+ plutusDao = '',
14
+ pangolin = 'pangolin',
15
+ pangolinV2 = 'pangolinV2',
16
+ traderJoeV2 = 'traderJoeV2',
17
+ traderJoeV3 = 'traderJoeV3',
18
+ traderJoeV4 = 'traderJoeV4',
19
+ solarbeam = 'solarbeam',
20
+ solarbeam2 = 'solarbeam2',
21
+ thorus = 'thorus',
22
+ tetuswap = 'tetuswap',
23
+ solidex = 'solidex',
24
+ solidexB = 'solidexB',
25
+ solidexUSDC = 'solidexUSDC',
26
+ solidexUSDCB = 'solidexUSDCB',
27
+ oxdao = 'oxdao',
28
+ }
29
+
30
+ export const hrFarms = {
31
+ [Farms.quickswapOld]: 'QuickSwap',
32
+ [Farms.quickswap]: 'QuickSwap',
33
+ [Farms.quickswapDual]: 'QuickSwap',
34
+ [Farms.sushiswap]: 'SushiSwap',
35
+ [Farms.arbinyan]: 'ArbyNYAN',
36
+ [Farms.swapr]: 'Swapr',
37
+ [Farms.swapfish]: 'SwapFish',
38
+ [Farms.zyberswap]: 'ZyberSwap',
39
+ [Farms.radiant]: 'Radiant',
40
+ [Farms.plutusDao]: 'Plutus DAO',
41
+ [Farms.pangolin]: 'Pangolin',
42
+ [Farms.pangolinV2]: 'Pangolin',
43
+ [Farms.traderJoeV2]: 'TraderJoe',
44
+ [Farms.traderJoeV3]: 'TraderJoe',
45
+ [Farms.traderJoeV4]: 'TraderJoe',
46
+ [Farms.solarbeam]: 'Solarbeam',
47
+ [Farms.solarbeam2]: 'Solarbeam',
48
+ [Farms.thorus]: 'Thorus',
49
+ [Farms.tetuswap]: 'TetuSwap',
50
+ [Farms.solidex]: 'Solidex',
51
+ [Farms.solidexB]: 'Solidex',
52
+ [Farms.solidexUSDC]: 'Solidex',
53
+ [Farms.solidexUSDCB]: 'Solidex',
54
+ [Farms.oxdao]: '0xDAO',
55
+ };
56
+
57
+ export type FarmIndex = {
58
+ [key in Networks]: {
59
+ [key in Farms]?: any
60
+ }
61
+ };
62
+
63
+ export const STAKED_LP_FACTORY: FarmIndex = {
64
+ [Networks.Ropsten]: {},
65
+ [Networks.Mainnet]: {},
66
+ [Networks.Polygon]: {
67
+ [Farms.quickswapOld]: '0xF47B652cDE9b30D6aDd0b13027Bb7AD2F7AF04f4',
68
+ [Farms.quickswap]: '0x846019FB6f136fC98b80e527C3d34F39D16a38c4',
69
+ [Farms.quickswapDual]: '0xC4505Cc6125d61E2A352ce5cf2129f2fb19259a8',
70
+ [Farms.sushiswap]: '0xcb30A66e72Ed90D1b34f78fc0655895FC28bB6CF',
71
+ [Farms.tetuswap]: '0x8E45622663Bb01dc285B4F51Eb8F9FE4fa7b5899',
72
+ },
73
+ [Networks.Arbitrum]: {
74
+ [Farms.arbinyan]: '0x6659a9c5cD313974343E30b4fDfFD95bD4b4dCd2',
75
+ [Farms.sushiswap]: '0x270250F59C1ffA06C9e3234D528858Ff59aFCE68',
76
+ [Farms.swapr]: '0x5643C3aCEC0D4970a385fb9Cc1555bec1d912bb8',
77
+ //[Farms.swapfish]: '0xcDAeC65495Fa5c0545c5a405224214e3594f30d8',
78
+ [Farms.swapfish]: '0x3bE7B59Ab6558845FfA1f026Dff40b305dd47b37',
79
+ [Farms.zyberswap]: '0xBCE93e2D822CfDD70F106e32FCB266457cece45F',
80
+ [Farms.radiant]: '0x4aE11dC7D7e70eE16d7eaE32851302e55f6CA85e',
81
+ [Farms.plutusDao]: '0x4dC48B93855F42cCcc54f65615AeF6FFC12EC1DF',
82
+ },
83
+ [Networks.Avalanche]: {
84
+ [Farms.pangolin]: '0xBB92270716C8c424849F17cCc12F4F24AD4064D6',
85
+ [Farms.pangolinV2]: '0xC596f6455054D8cdDE627096bE671e377791E295',
86
+ [Farms.traderJoeV2]: '0x16ED59ffbfbe62ebA9a69a304D38901F86461282',
87
+ [Farms.traderJoeV3]: '0x58Fde5bdB2C6Bd828Bc41c12a68189C7cd93dCE2',
88
+ [Farms.traderJoeV4]: '0xbc1bb900e34adbb99957672361433c6ad62a0cac',
89
+ [Farms.thorus]: '0x9141B3d02443a84793794f661Ae1e6607A03A201',
90
+ },
91
+ [Networks.Moonriver]: {
92
+ [Farms.sushiswap]: '0xBB92270716C8c424849F17cCc12F4F24AD4064D6',
93
+ [Farms.solarbeam]: '0x95887654d8646c26fab33f344576e2e74b211256',
94
+ [Farms.solarbeam2]: '0x23bdECdB7073D5f899708f33FCaFff787b81e287',
95
+ },
96
+ [Networks.Aurora]: {},
97
+ [Networks.Cronos]: {},
98
+ [Networks.Fantom]: {
99
+ [Farms.solidex]: '0x95887654d8646C26fAb33F344576E2E74b211256',
100
+ [Farms.solidexB]: '0x8610Dc1912a55761a713D827a1a1ad131bE8f579',
101
+ [Farms.solidexUSDC]: '0xF14f98E6F34C12Bd74fcEAC1668aF749fc269cFf',
102
+ [Farms.solidexUSDCB]: '0x9B1434a02Ee86302d463bB6B365EbdFAc56e067A',
103
+ [Farms.oxdao]: '0xB83D21F60B73B21506c69DEcdBcF7Ab5AB737eB2',
104
+ },
105
+ [Networks.Harmony]: {},
106
+ [Networks.Moonbeam]: {},
107
+ [Networks.Sxnetwork]: {},
108
+ };
109
+
110
+ export function getFarmByStakedLPFactory(network: Networks, address: Address) : Farms {
111
+ if (!address) return null;
112
+ for (const farm of Object.keys(Farms) as Farms[]) {
113
+ if (
114
+ STAKED_LP_FACTORY[network][farm] &&
115
+ address.toLowerCase() == STAKED_LP_FACTORY[network][farm].toLowerCase()
116
+ ) return farm;
117
+ }
118
+ return null;
119
+ }
@@ -0,0 +1,8 @@
1
+ import { BigNumber, ethers } from 'ethers';
2
+
3
+ export const NOT_SYNCED = false;
4
+
5
+ export const DEADLINE = BigNumber.from(Math.floor(Date.now() / 1000) + 3600 * 24 * 365); //1 year deadline
6
+
7
+ const ZERO = ethers.constants.Zero;
8
+ const APPROVE_AMOUNT = ethers.constants.MaxUint256;
@@ -0,0 +1,69 @@
1
+ import { Address, Factory, NetworkFactoryIndex, NetworkIndex, Networks } from './types';
2
+
3
+ export const IMPERMAX_SUBGRAPH_URL: NetworkFactoryIndex<Address> = {
4
+ [Networks.Ropsten]: {
5
+ [Factory.V2V1]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-ropsten'
6
+ },
7
+ [Networks.Mainnet]: {
8
+ [Factory.V2V1]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap1'
9
+ },
10
+ [Networks.Polygon]: {
11
+ [Factory.V2V1_1]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-polygon',
12
+ [Factory.V2V2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-polygon-v2',
13
+ },
14
+ [Networks.Arbitrum]: {
15
+ [Factory.V2V1_1]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-arbitrum',
16
+ [Factory.V2V2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-arbitrum-v2',
17
+ //[F.V2V1_1]: 'https://api.impermax.finance/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-arbitrum02'
18
+ },
19
+ [Networks.Avalanche]: {
20
+ [Factory.V2V1_2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-avalanche1',
21
+ [Factory.V2V2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-avalanche-v2',
22
+ },
23
+ [Networks.Moonriver]: {
24
+ [Factory.V2V1_2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-moonriver'
25
+ },
26
+ [Networks.Aurora]: {
27
+ [Factory.V2V1_2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-aurora'
28
+ },
29
+ [Networks.Cronos]: {},
30
+ [Networks.Fantom]: {
31
+ [Factory.SOLV1_2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-fantom',
32
+ //[Factory.SOLV2]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-x-uniswap-v2-fantom-v2',
33
+ },
34
+ [Networks.Harmony]: {},
35
+ [Networks.Moonbeam]: {},
36
+ [Networks.Sxnetwork]: {},
37
+ };
38
+
39
+ export const IMPERMAX_CHEF_SUBGRAPH_URL: NetworkIndex<string> = {
40
+ [Networks.Ropsten]: '',
41
+ [Networks.Mainnet]: '',
42
+ [Networks.Polygon]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-chef-polygon',
43
+ [Networks.Arbitrum]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-chef-arbitrum',
44
+ [Networks.Avalanche]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-chef-avalanche',
45
+ [Networks.Moonriver]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-chef-moonriver',
46
+ [Networks.Fantom]: 'https://api.thegraph.com/subgraphs/name/impermax-finance/impermax-chef-fantom',
47
+ [Networks.Aurora]: '',
48
+ [Networks.Cronos]: '',
49
+ [Networks.Harmony]: '',
50
+ [Networks.Moonbeam]: '',
51
+ [Networks.Sxnetwork]: '',
52
+ };
53
+
54
+ export const BLOCKS_SUBGRAPH_URL: NetworkIndex<string> = {
55
+ [Networks.Ropsten]: '',
56
+ [Networks.Mainnet]: 'https://api.thegraph.com/subgraphs/name/blocklytics/ethereum-blocks',
57
+ [Networks.Polygon]: 'https://api.thegraph.com/subgraphs/name/matthewlilley/polygon-blocks',
58
+ [Networks.Arbitrum]: 'https://api.thegraph.com/subgraphs/name/sushiswap/arbitrum-blocks',
59
+ [Networks.Avalanche]: 'https://api.thegraph.com/subgraphs/name/dasconnor/avalanche-blocks',
60
+ [Networks.Moonriver]: 'https://api.thegraph.com/subgraphs/name/sushiswap/moonriver-blocks',
61
+ [Networks.Aurora]: '',
62
+ [Networks.Cronos]: '',
63
+ [Networks.Fantom]: 'https://api.thegraph.com/subgraphs/name/matthewlilley/fantom-blocks',
64
+ [Networks.Harmony]: '',
65
+ [Networks.Moonbeam]: '',
66
+ [Networks.Sxnetwork]: '',
67
+ };
68
+
69
+ export const XIMX_SUBGRAPH_URL = "https://api.thegraph.com/subgraphs/name/impermax-finance/imx-staking";