@curvefi/api 1.25.0 → 2.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 (213) hide show
  1. package/README.md +775 -589
  2. package/docs/v1/README.md +916 -0
  3. package/lib/boosting.d.ts +12 -12
  4. package/lib/boosting.js +23 -23
  5. package/lib/constants/abis/{json/2pool → 2pool}/swap.json +0 -0
  6. package/lib/constants/abis/{json/3pool → 3pool}/swap.json +0 -0
  7. package/lib/constants/abis/{json/4pool → 4pool}/swap.json +0 -0
  8. package/lib/constants/abis/{json/ERC20.json → ERC20.json} +0 -0
  9. package/lib/constants/abis/{json/aave → aave}/rewards.json +0 -0
  10. package/lib/constants/abis/{json/aave → aave}/swap.json +0 -0
  11. package/lib/constants/abis/{json/address_provider.json → address_provider.json} +0 -0
  12. package/lib/constants/abis/{json/ankreth → ankreth}/sCurveRewards.json +0 -0
  13. package/lib/constants/abis/{json/ankreth → ankreth}/swap.json +0 -0
  14. package/lib/constants/abis/{json/atricrypto3 → atricrypto3}/swap.json +0 -0
  15. package/lib/constants/abis/{json/atricrypto3 → atricrypto3}/zap.json +0 -0
  16. package/lib/constants/abis/{json/bbtc → bbtc}/deposit.json +0 -0
  17. package/lib/constants/abis/{json/bbtc → bbtc}/swap.json +0 -0
  18. package/lib/constants/abis/{json/busd → busd}/deposit.json +0 -0
  19. package/lib/constants/abis/{json/busd → busd}/swap.json +0 -0
  20. package/lib/constants/abis/{json/cERC20.json → cERC20.json} +0 -0
  21. package/lib/constants/abis/{json/compound → compound}/deposit.json +0 -0
  22. package/lib/constants/abis/{json/compound → compound}/swap.json +0 -0
  23. package/lib/constants/abis/{json/crveth → crveth}/swap.json +0 -0
  24. package/lib/constants/abis/{json/deposit_and_stake.json → deposit_and_stake.json} +0 -0
  25. package/lib/constants/abis/{json/dusd → dusd}/deposit.json +0 -0
  26. package/lib/constants/abis/{json/dusd → dusd}/sCurveRewards.json +0 -0
  27. package/lib/constants/abis/{json/dusd → dusd}/swap.json +0 -0
  28. package/lib/constants/abis/{json/eurs → eurs}/sCurveRewards.json +0 -0
  29. package/lib/constants/abis/{json/eurs → eurs}/swap.json +0 -0
  30. package/lib/constants/abis/{json/eursusd → eursusd}/swap.json +0 -0
  31. package/lib/constants/abis/{json/eurt → eurt}/swap.json +0 -0
  32. package/lib/constants/abis/{json/eurtusd → eurtusd}/deposit.json +0 -0
  33. package/lib/constants/abis/{json/eurtusd → eurtusd}/swap.json +0 -0
  34. package/lib/constants/abis/{json/factory-crypto → factory-crypto}/factory-crypto-pool-2.json +0 -0
  35. package/lib/constants/abis/{json/factory-crypto.json → factory-crypto.json} +0 -0
  36. package/lib/constants/abis/{json/factory-v2 → factory-v2}/DepositZapMetaBtcPolygon.json +0 -0
  37. package/lib/constants/abis/{json/factory-v2 → factory-v2}/DepositZapMetaUsdPolygon.json +0 -0
  38. package/lib/constants/abis/{json/factory-v2 → factory-v2}/MetaBTC.json +0 -0
  39. package/lib/constants/abis/{json/factory-v2 → factory-v2}/MetaBTCBalances.json +0 -0
  40. package/lib/constants/abis/{json/factory-v2 → factory-v2}/MetaBTCBalancesRen.json +0 -0
  41. package/lib/constants/abis/{json/factory-v2 → factory-v2}/MetaBTCRen.json +0 -0
  42. package/lib/constants/abis/{json/factory-v2 → factory-v2}/MetaUSD.json +0 -0
  43. package/lib/constants/abis/{json/factory-v2 → factory-v2}/MetaUSDBalances.json +0 -0
  44. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain2Balances.json +0 -0
  45. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain2Basic.json +0 -0
  46. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain2ETH.json +0 -0
  47. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain2Optimized.json +0 -0
  48. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain3Balances.json +0 -0
  49. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain3Basic.json +0 -0
  50. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain3ETH.json +0 -0
  51. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain3Optimized.json +0 -0
  52. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain4Balances.json +0 -0
  53. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain4Basic.json +0 -0
  54. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain4ETH.json +0 -0
  55. package/lib/constants/abis/{json/factory-v2 → factory-v2}/Plain4Optimized.json +0 -0
  56. package/lib/constants/abis/{json/factory.json → factory.json} +0 -0
  57. package/lib/constants/abis/{json/factoryPools → factoryPools}/deposit.json +0 -0
  58. package/lib/constants/abis/{json/factoryPools → factoryPools}/rewards.json +0 -0
  59. package/lib/constants/abis/{json/factoryPools → factoryPools}/swap.json +0 -0
  60. package/lib/constants/abis/{json/gauge.json → gauge.json} +0 -0
  61. package/lib/constants/abis/{json/gauge_factory.json → gauge_factory.json} +0 -0
  62. package/lib/constants/abis/{json/gauge_rewards_only.json → gauge_rewards_only.json} +0 -0
  63. package/lib/constants/abis/{json/gauge_synthetix.json → gauge_synthetix.json} +0 -0
  64. package/lib/constants/abis/{json/gauge_v2.json → gauge_v2.json} +0 -0
  65. package/lib/constants/abis/{json/gauge_v3.json → gauge_v3.json} +0 -0
  66. package/lib/constants/abis/{json/gauge_v4.json → gauge_v4.json} +0 -0
  67. package/lib/constants/abis/{json/gauge_v5.json → gauge_v5.json} +0 -0
  68. package/lib/constants/abis/{json/gaugecontroller.json → gaugecontroller.json} +0 -0
  69. package/lib/constants/abis/{json/gusd → gusd}/deposit.json +0 -0
  70. package/lib/constants/abis/{json/gusd → gusd}/swap.json +0 -0
  71. package/lib/constants/abis/{json/hbtc → hbtc}/swap.json +0 -0
  72. package/lib/constants/abis/{json/husd → husd}/deposit.json +0 -0
  73. package/lib/constants/abis/{json/husd → husd}/swap.json +0 -0
  74. package/lib/constants/abis/{json/ib → ib}/swap.json +0 -0
  75. package/lib/constants/abis/{json/iearn → iearn}/deposit.json +0 -0
  76. package/lib/constants/abis/{json/iearn → iearn}/sCurveRewards.json +0 -0
  77. package/lib/constants/abis/{json/iearn → iearn}/swap.json +0 -0
  78. package/lib/constants/abis/{json/link → link}/swap.json +0 -0
  79. package/lib/constants/abis/{json/minter.json → minter.json} +0 -0
  80. package/lib/constants/abis/{json/musd → musd}/deposit.json +0 -0
  81. package/lib/constants/abis/{json/musd → musd}/sCurveRewards.json +0 -0
  82. package/lib/constants/abis/{json/musd → musd}/swap.json +0 -0
  83. package/lib/constants/abis/{json/obtc → obtc}/deposit.json +0 -0
  84. package/lib/constants/abis/{json/obtc → obtc}/sCurveRewards.json +0 -0
  85. package/lib/constants/abis/{json/obtc → obtc}/swap.json +0 -0
  86. package/lib/constants/abis/{json/paave → paave}/rewards.json +0 -0
  87. package/lib/constants/abis/{json/pax → pax}/deposit.json +0 -0
  88. package/lib/constants/abis/{json/pax → pax}/swap.json +0 -0
  89. package/lib/constants/abis/{json/pbtc → pbtc}/deposit.json +0 -0
  90. package/lib/constants/abis/{json/pbtc → pbtc}/sCurveRewards.json +0 -0
  91. package/lib/constants/abis/{json/pbtc → pbtc}/swap.json +0 -0
  92. package/lib/constants/abis/{json/rai → rai}/deposit.json +0 -0
  93. package/lib/constants/abis/{json/rai → rai}/swap.json +0 -0
  94. package/lib/constants/abis/{json/registry_exchange.json → registry_exchange.json} +0 -0
  95. package/lib/constants/abis/{json/ren → ren}/swap.json +0 -0
  96. package/lib/constants/abis/{json/ren-polygon → ren-polygon}/swap.json +0 -0
  97. package/lib/constants/abis/{json/reth → reth}/swap.json +0 -0
  98. package/lib/constants/abis/{json/router.json → router.json} +0 -0
  99. package/lib/constants/abis/{json/rsv → rsv}/deposit.json +0 -0
  100. package/lib/constants/abis/{json/rsv → rsv}/sCurveRewards.json +0 -0
  101. package/lib/constants/abis/{json/rsv → rsv}/swap.json +0 -0
  102. package/lib/constants/abis/{json/saave → saave}/swap.json +0 -0
  103. package/lib/constants/abis/{json/sbtc → sbtc}/sCurveRewards.json +0 -0
  104. package/lib/constants/abis/{json/sbtc → sbtc}/swap.json +0 -0
  105. package/lib/constants/abis/{json/seth → seth}/swap.json +0 -0
  106. package/lib/constants/abis/{json/steth → steth}/sCurveRewards.json +0 -0
  107. package/lib/constants/abis/{json/steth → steth}/swap.json +0 -0
  108. package/lib/constants/abis/{json/streamer.json → streamer.json} +0 -0
  109. package/lib/constants/abis/{json/susdv2 → susdv2}/deposit.json +0 -0
  110. package/lib/constants/abis/{json/susdv2 → susdv2}/sCurveRewards.json +0 -0
  111. package/lib/constants/abis/{json/susdv2 → susdv2}/swap.json +0 -0
  112. package/lib/constants/abis/{json/tbtc → tbtc}/deposit.json +0 -0
  113. package/lib/constants/abis/{json/tbtc → tbtc}/sCurveRewards.json +0 -0
  114. package/lib/constants/abis/{json/tbtc → tbtc}/swap.json +0 -0
  115. package/lib/constants/abis/{json/tricrypto2 → tricrypto2}/deposit.json +0 -0
  116. package/lib/constants/abis/{json/tricrypto2 → tricrypto2}/swap.json +0 -0
  117. package/lib/constants/abis/{json/usdk → usdk}/deposit.json +0 -0
  118. package/lib/constants/abis/{json/usdk → usdk}/swap.json +0 -0
  119. package/lib/constants/abis/{json/usdn → usdn}/deposit.json +0 -0
  120. package/lib/constants/abis/{json/usdn → usdn}/swap.json +0 -0
  121. package/lib/constants/abis/{json/usdp → usdp}/deposit.json +0 -0
  122. package/lib/constants/abis/{json/usdp → usdp}/swap.json +0 -0
  123. package/lib/constants/abis/{json/usdt → usdt}/deposit.json +0 -0
  124. package/lib/constants/abis/{json/usdt → usdt}/swap.json +0 -0
  125. package/lib/constants/abis/{json/ust → ust}/deposit.json +0 -0
  126. package/lib/constants/abis/{json/ust → ust}/swap.json +0 -0
  127. package/lib/constants/abis/{json/votingescrow.json → votingescrow.json} +0 -0
  128. package/lib/constants/abis/{json/yERC20.json → yERC20.json} +0 -0
  129. package/lib/constants/aliases.d.ts +2 -24
  130. package/lib/constants/aliases.js +5 -4
  131. package/lib/constants/{coins-ethereum.d.ts → coins/ethereum.d.ts} +0 -9
  132. package/lib/constants/{coins-ethereum.js → coins/ethereum.js} +12 -23
  133. package/lib/constants/{coins-polygon.d.ts → coins/polygon.d.ts} +0 -12
  134. package/lib/constants/{coins-polygon.js → coins/polygon.js} +8 -20
  135. package/lib/constants/pools/ethereum.d.ts +2 -0
  136. package/lib/constants/{abis/abis-ethereum.js → pools/ethereum.js} +517 -1012
  137. package/lib/constants/pools/index.d.ts +3 -0
  138. package/lib/constants/pools/index.js +7 -0
  139. package/lib/constants/pools/polygon.d.ts +4 -0
  140. package/lib/constants/{abis/abis-polygon.js → pools/polygon.js} +53 -81
  141. package/lib/constants/utils.d.ts +5 -0
  142. package/lib/constants/utils.js +69 -0
  143. package/lib/curve.d.ts +10 -32
  144. package/lib/curve.js +189 -232
  145. package/lib/external-api.d.ts +3 -1
  146. package/lib/external-api.js +34 -1
  147. package/lib/factory/constants.d.ts +15 -15
  148. package/lib/factory/constants.js +19 -19
  149. package/lib/factory/factory-api.d.ts +2 -2
  150. package/lib/factory/factory-api.js +52 -45
  151. package/lib/factory/factory-crypto.d.ts +2 -2
  152. package/lib/factory/factory-crypto.js +23 -31
  153. package/lib/factory/factory.d.ts +2 -2
  154. package/lib/factory/factory.js +53 -66
  155. package/lib/index.d.ts +36 -53
  156. package/lib/index.js +27 -35
  157. package/lib/interfaces.d.ts +35 -72
  158. package/lib/pools/PoolTemplate.d.ts +210 -0
  159. package/lib/pools/PoolTemplate.js +2292 -0
  160. package/lib/pools/index.d.ts +3 -0
  161. package/lib/pools/index.js +7 -0
  162. package/lib/pools/mixins/common.d.ts +3 -0
  163. package/lib/pools/mixins/common.js +77 -0
  164. package/lib/pools/mixins/depositBalancedAmountsMixins.d.ts +5 -0
  165. package/lib/pools/mixins/depositBalancedAmountsMixins.js +145 -0
  166. package/lib/pools/mixins/depositBonusMixins.d.ts +5 -0
  167. package/lib/pools/mixins/depositBonusMixins.js +164 -0
  168. package/lib/pools/mixins/depositMixins.d.ts +5 -0
  169. package/lib/pools/mixins/depositMixins.js +373 -0
  170. package/lib/pools/mixins/depositWrappedMixins.d.ts +3 -0
  171. package/lib/pools/mixins/depositWrappedMixins.js +243 -0
  172. package/lib/pools/mixins/poolBalancesMixin.d.ts +4 -0
  173. package/lib/pools/mixins/poolBalancesMixin.js +129 -0
  174. package/lib/pools/mixins/swapMixins.d.ts +4 -0
  175. package/lib/pools/mixins/swapMixins.js +313 -0
  176. package/lib/pools/mixins/swapWrappedMixins.d.ts +4 -0
  177. package/lib/pools/mixins/swapWrappedMixins.js +297 -0
  178. package/lib/pools/mixins/withdrawExpectedMixins.d.ts +6 -0
  179. package/lib/pools/mixins/withdrawExpectedMixins.js +164 -0
  180. package/lib/pools/mixins/withdrawImbalanceMixins.d.ts +5 -0
  181. package/lib/pools/mixins/withdrawImbalanceMixins.js +348 -0
  182. package/lib/pools/mixins/withdrawImbalanceWrappedMixins.d.ts +3 -0
  183. package/lib/pools/mixins/withdrawImbalanceWrappedMixins.js +207 -0
  184. package/lib/pools/mixins/withdrawMixins.d.ts +5 -0
  185. package/lib/pools/mixins/withdrawMixins.js +347 -0
  186. package/lib/pools/mixins/withdrawOneCoinExpectedMixins.d.ts +5 -0
  187. package/lib/pools/mixins/withdrawOneCoinExpectedMixins.js +104 -0
  188. package/lib/pools/mixins/withdrawOneCoinMixins.d.ts +5 -0
  189. package/lib/pools/mixins/withdrawOneCoinMixins.js +347 -0
  190. package/lib/pools/mixins/withdrawOneCoinWrappedExpectedMixins.d.ts +3 -0
  191. package/lib/pools/mixins/withdrawOneCoinWrappedExpectedMixins.js +72 -0
  192. package/lib/pools/mixins/withdrawOneCoinWrappedMixins.d.ts +3 -0
  193. package/lib/pools/mixins/withdrawOneCoinWrappedMixins.js +205 -0
  194. package/lib/pools/mixins/withdrawWrappedMixins.d.ts +3 -0
  195. package/lib/pools/mixins/withdrawWrappedMixins.js +206 -0
  196. package/lib/pools/poolConstructor.d.ts +2 -0
  197. package/lib/pools/poolConstructor.js +228 -0
  198. package/lib/pools/utils.d.ts +4 -0
  199. package/lib/pools/utils.js +85 -0
  200. package/lib/router.d.ts +12 -0
  201. package/lib/router.js +624 -0
  202. package/lib/utils.d.ts +10 -16
  203. package/lib/utils.js +43 -130
  204. package/package.json +1 -1
  205. package/lib/constants/abis/abis-ethereum.d.ts +0 -4
  206. package/lib/constants/abis/abis-polygon.d.ts +0 -4
  207. package/lib/constants/abis/json/aRewards.json +0 -1
  208. package/lib/constants/abis/json/compound/migration.json +0 -57
  209. package/lib/constants/abis/json/compound/oldSwap.json +0 -688
  210. package/lib/constants/abis/json/ren/adapter.json +0 -1
  211. package/lib/constants/abis/json/sbtc/adapter.json +0 -1
  212. package/lib/pools.d.ts +0 -267
  213. package/lib/pools.js +0 -4742
package/lib/utils.d.ts CHANGED
@@ -1,35 +1,29 @@
1
- import memoize from 'memoizee';
2
1
  import { ethers } from 'ethers';
3
2
  import BigNumber from 'bignumber.js';
4
- import { DictInterface, IStats } from './interfaces';
3
+ import { IDict } from './interfaces';
5
4
  export declare const MAX_ALLOWANCE: ethers.BigNumber;
6
5
  export declare const BN: (val: number | string) => BigNumber;
7
6
  export declare const toBN: (n: ethers.BigNumber, decimals?: number) => BigNumber;
8
7
  export declare const toStringFromBN: (bn: BigNumber, decimals?: number) => string;
9
8
  export declare const fromBN: (bn: BigNumber, decimals?: number) => ethers.BigNumber;
9
+ export declare const checkNumber: (n: number | string) => number | string;
10
+ export declare const formatNumber: (n: number | string, decimals?: number) => string;
11
+ export declare const parseUnits: (n: number | string, decimals?: number) => ethers.BigNumber;
10
12
  export declare const isEth: (address: string) => boolean;
11
13
  export declare const getEthIndex: (addresses: string[]) => number;
12
14
  export declare const _getCoinAddresses: (...coins: string[] | string[][]) => string[];
13
15
  export declare const _getCoinDecimals: (...coinAddresses: string[] | string[][]) => number[];
14
- export declare const _getBalances: (coins: string[], addresses: string[]) => Promise<DictInterface<string[]>>;
16
+ export declare const _getBalances: (coins: string[], addresses: string[]) => Promise<IDict<string[]>>;
15
17
  export declare const _prepareAddresses: (addresses: string[] | string[][]) => string[];
16
- export declare const getBalances: (coins: string[], ...addresses: string[] | string[][]) => Promise<DictInterface<string[]> | string[]>;
18
+ export declare const getBalances: (coins: string[], ...addresses: string[] | string[][]) => Promise<IDict<string[]> | string[]>;
17
19
  export declare const _getAllowance: (coins: string[], address: string, spender: string) => Promise<ethers.BigNumber[]>;
18
20
  export declare const getAllowance: (coins: string[], address: string, spender: string) => Promise<string[]>;
19
- export declare const hasAllowance: (coins: string[], amounts: string[], address: string, spender: string) => Promise<boolean>;
21
+ export declare const hasAllowance: (coins: string[], amounts: (number | string)[], address: string, spender: string) => Promise<boolean>;
20
22
  export declare const _ensureAllowance: (coins: string[], amounts: ethers.BigNumber[], spender: string) => Promise<string[]>;
21
- export declare const ensureAllowanceEstimateGas: (coins: string[], amounts: string[], spender: string) => Promise<number>;
22
- export declare const ensureAllowance: (coins: string[], amounts: string[], spender: string) => Promise<string[]>;
23
+ export declare const ensureAllowanceEstimateGas: (coins: string[], amounts: (number | string)[], spender: string) => Promise<number>;
24
+ export declare const ensureAllowance: (coins: string[], amounts: (number | string)[], spender: string) => Promise<string[]>;
23
25
  export declare const getPoolNameBySwapAddress: (swapAddress: string) => string;
24
- export declare const _getUsdPricesFromApi: () => Promise<DictInterface<number>>;
26
+ export declare const _getUsdPricesFromApi: () => Promise<IDict<number>>;
25
27
  export declare const _getUsdRate: (assetId: string) => Promise<number>;
26
- export declare const _getFactoryStatsUrl: () => string;
27
- export declare const _getStatsUrl: (isCrypto?: boolean) => string;
28
- export declare const _getStats: ((statsUrl: string) => Promise<IStats>) & memoize.Memoized<(statsUrl: string) => Promise<IStats>>;
29
- export declare const _getFactoryStatsEthereum: ((statsUrl: string) => Promise<IStats>) & memoize.Memoized<(statsUrl: string) => Promise<IStats>>;
30
- export declare const _getFactoryStatsPolygon: ((statsUrl: string) => Promise<IStats>) & memoize.Memoized<(statsUrl: string) => Promise<IStats>>;
31
- export declare const getPoolList: () => string[];
32
- export declare const getFactoryPoolList: () => string[];
33
- export declare const getCryptoFactoryPoolList: () => string[];
34
28
  export declare const getUsdRate: (coin: string) => Promise<number>;
35
29
  export declare const getTVL: (chainId?: number) => Promise<number>;
package/lib/utils.js CHANGED
@@ -59,13 +59,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
59
59
  return (mod && mod.__esModule) ? mod : { "default": mod };
60
60
  };
61
61
  Object.defineProperty(exports, "__esModule", { value: true });
62
- exports.getTVL = exports.getUsdRate = exports.getCryptoFactoryPoolList = exports.getFactoryPoolList = exports.getPoolList = exports._getFactoryStatsPolygon = exports._getFactoryStatsEthereum = exports._getStats = exports._getStatsUrl = exports._getFactoryStatsUrl = exports._getUsdRate = exports._getUsdPricesFromApi = exports.getPoolNameBySwapAddress = exports.ensureAllowance = exports.ensureAllowanceEstimateGas = exports._ensureAllowance = exports.hasAllowance = exports.getAllowance = exports._getAllowance = exports.getBalances = exports._prepareAddresses = exports._getBalances = exports._getCoinDecimals = exports._getCoinAddresses = exports.getEthIndex = exports.isEth = exports.fromBN = exports.toStringFromBN = exports.toBN = exports.BN = exports.MAX_ALLOWANCE = void 0;
62
+ exports.getTVL = exports.getUsdRate = exports._getUsdRate = exports._getUsdPricesFromApi = exports.getPoolNameBySwapAddress = exports.ensureAllowance = exports.ensureAllowanceEstimateGas = exports._ensureAllowance = exports.hasAllowance = exports.getAllowance = exports._getAllowance = exports.getBalances = exports._prepareAddresses = exports._getBalances = exports._getCoinDecimals = exports._getCoinAddresses = exports.getEthIndex = exports.isEth = exports.parseUnits = exports.formatNumber = exports.checkNumber = exports.fromBN = exports.toStringFromBN = exports.toBN = exports.BN = exports.MAX_ALLOWANCE = void 0;
63
63
  var axios_1 = __importDefault(require("axios"));
64
- var memoizee_1 = __importDefault(require("memoizee"));
65
64
  var ethers_1 = require("ethers");
66
65
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
67
66
  var curve_1 = require("./curve");
68
- var curve_2 = require("./curve");
69
67
  var external_api_1 = require("./external-api");
70
68
  var ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE';
71
69
  exports.MAX_ALLOWANCE = ethers_1.ethers.BigNumber.from(2).pow(ethers_1.ethers.BigNumber.from(256)).sub(ethers_1.ethers.BigNumber.from(1));
@@ -87,6 +85,26 @@ var fromBN = function (bn, decimals) {
87
85
  return ethers_1.ethers.utils.parseUnits((0, exports.toStringFromBN)(bn, decimals), decimals);
88
86
  };
89
87
  exports.fromBN = fromBN;
88
+ // Formatting numbers
89
+ var checkNumber = function (n) {
90
+ if (Number(n) !== Number(n))
91
+ throw Error("".concat(n, " is not a number")); // NaN
92
+ return n;
93
+ };
94
+ exports.checkNumber = checkNumber;
95
+ var formatNumber = function (n, decimals) {
96
+ if (decimals === void 0) { decimals = 18; }
97
+ if (Number(n) !== Number(n))
98
+ throw Error("".concat(n, " is not a number")); // NaN
99
+ var _a = String(n).split("."), integer = _a[0], fractional = _a[1];
100
+ return !fractional ? integer : integer + "." + fractional.slice(0, decimals);
101
+ };
102
+ exports.formatNumber = formatNumber;
103
+ var parseUnits = function (n, decimals) {
104
+ if (decimals === void 0) { decimals = 18; }
105
+ return ethers_1.ethers.utils.parseUnits((0, exports.formatNumber)(n, decimals), decimals);
106
+ };
107
+ exports.parseUnits = parseUnits;
90
108
  // -------------------
91
109
  var isEth = function (address) { return address.toLowerCase() === ETH_ADDRESS.toLowerCase(); };
92
110
  exports.isEth = isEth;
@@ -101,11 +119,11 @@ var _getCoinAddresses = function () {
101
119
  if (coins.length == 1 && Array.isArray(coins[0]))
102
120
  coins = coins[0];
103
121
  coins = coins;
104
- var coinAddresses = coins.map(function (c) { return curve_2.COINS[c.toLowerCase()] || c; });
105
- var availableAddresses = __spreadArray(__spreadArray(__spreadArray([], Object.keys(curve_2.DECIMALS_LOWER_CASE).filter(function (c) { var _a; return c !== ((_a = curve_2.COINS['snx']) === null || _a === void 0 ? void 0 : _a.toLowerCase()); }), true), curve_1.LP_TOKENS, true), curve_1.GAUGES, true);
122
+ var coinAddresses = coins.map(function (c) { return c.toLowerCase(); }).map(function (c) { return curve_1.curve.constants.COINS[c] || c; });
123
+ var availableAddresses = __spreadArray(__spreadArray([], Object.keys(curve_1.curve.constants.DECIMALS), true), curve_1.curve.constants.GAUGES, true);
106
124
  for (var _a = 0, coinAddresses_1 = coinAddresses; _a < coinAddresses_1.length; _a++) {
107
125
  var coinAddr = coinAddresses_1[_a];
108
- if (!availableAddresses.includes(coinAddr.toLowerCase()))
126
+ if (!availableAddresses.includes(coinAddr))
109
127
  throw Error("Coin with address '".concat(coinAddr, "' is not available"));
110
128
  }
111
129
  return coinAddresses;
@@ -119,7 +137,7 @@ var _getCoinDecimals = function () {
119
137
  if (coinAddresses.length == 1 && Array.isArray(coinAddresses[0]))
120
138
  coinAddresses = coinAddresses[0];
121
139
  coinAddresses = coinAddresses;
122
- return coinAddresses.map(function (coinAddr) { var _a; return (_a = curve_2.DECIMALS_LOWER_CASE[coinAddr.toLowerCase()]) !== null && _a !== void 0 ? _a : 18; });
140
+ return coinAddresses.map(function (coinAddr) { var _a; return (_a = curve_1.curve.constants.DECIMALS[coinAddr.toLowerCase()]) !== null && _a !== void 0 ? _a : 18; }); // 18 for gauges
123
141
  };
124
142
  exports._getCoinDecimals = _getCoinDecimals;
125
143
  var _getBalances = function (coins, addresses) { return __awaiter(void 0, void 0, void 0, function () {
@@ -263,7 +281,7 @@ var hasAllowance = function (coins, amounts, address, spender) { return __awaite
263
281
  return [4 /*yield*/, (0, exports._getAllowance)(coinAddresses, address, spender)];
264
282
  case 1:
265
283
  _allowance = _a.sent();
266
- _amounts = amounts.map(function (a, i) { return ethers_1.ethers.utils.parseUnits(a, decimals[i]); });
284
+ _amounts = amounts.map(function (a, i) { return (0, exports.parseUnits)(a, decimals[i]); });
267
285
  return [2 /*return*/, _allowance.map(function (a, i) { return a.gte(_amounts[i]); }).reduce(function (a, b) { return a && b; })];
268
286
  }
269
287
  });
@@ -321,7 +339,7 @@ var ensureAllowanceEstimateGas = function (coins, amounts, spender) { return __a
321
339
  case 0:
322
340
  coinAddresses = (0, exports._getCoinAddresses)(coins);
323
341
  decimals = (0, exports._getCoinDecimals)(coinAddresses);
324
- _amounts = amounts.map(function (a, i) { return ethers_1.ethers.utils.parseUnits(a, decimals[i]); });
342
+ _amounts = amounts.map(function (a, i) { return (0, exports.parseUnits)(a, decimals[i]); });
325
343
  address = curve_1.curve.signerAddress;
326
344
  return [4 /*yield*/, (0, exports._getAllowance)(coinAddresses, address, spender)];
327
345
  case 1:
@@ -361,7 +379,7 @@ var ensureAllowance = function (coins, amounts, spender) { return __awaiter(void
361
379
  case 0:
362
380
  coinAddresses = (0, exports._getCoinAddresses)(coins);
363
381
  decimals = (0, exports._getCoinDecimals)(coinAddresses);
364
- _amounts = amounts.map(function (a, i) { return ethers_1.ethers.utils.parseUnits(a, decimals[i]); });
382
+ _amounts = amounts.map(function (a, i) { return (0, exports.parseUnits)(a, decimals[i]); });
365
383
  return [4 /*yield*/, (0, exports._ensureAllowance)(coinAddresses, _amounts, spender)];
366
384
  case 1: return [2 /*return*/, _a.sent()];
367
385
  }
@@ -369,16 +387,18 @@ var ensureAllowance = function (coins, amounts, spender) { return __awaiter(void
369
387
  }); };
370
388
  exports.ensureAllowance = ensureAllowance;
371
389
  var getPoolNameBySwapAddress = function (swapAddress) {
372
- return Object.entries(curve_1.POOLS_DATA).filter(function (_a) {
390
+ var poolsData = __assign(__assign(__assign({}, curve_1.curve.constants.POOLS_DATA), curve_1.curve.constants.FACTORY_POOLS_DATA), curve_1.curve.constants.CRYPTO_FACTORY_POOLS_DATA);
391
+ return Object.entries(poolsData).filter(function (_a) {
373
392
  var _ = _a[0], poolData = _a[1];
374
393
  return poolData.swap_address.toLowerCase() === swapAddress.toLowerCase();
375
394
  })[0][0];
376
395
  };
377
396
  exports.getPoolNameBySwapAddress = getPoolNameBySwapAddress;
378
397
  var _getUsdPricesFromApi = function () { return __awaiter(void 0, void 0, void 0, function () {
379
- var network, promises, allTypesExtendedPoolData, priceDict, _i, allTypesExtendedPoolData_1, extendedPoolData, _a, _b, pool, _c, _d, coin;
380
- return __generator(this, function (_e) {
381
- switch (_e.label) {
398
+ var network, promises, allTypesExtendedPoolData, priceDict, _i, allTypesExtendedPoolData_1, extendedPoolData, _a, _b, pool, _c, _d, coin, _e, _f, coin;
399
+ var _g;
400
+ return __generator(this, function (_h) {
401
+ switch (_h.label) {
382
402
  case 0:
383
403
  network = curve_1.curve.chainId === 137 ? "polygon" : "ethereum";
384
404
  promises = [
@@ -389,7 +409,7 @@ var _getUsdPricesFromApi = function () { return __awaiter(void 0, void 0, void 0
389
409
  ];
390
410
  return [4 /*yield*/, Promise.all(promises)];
391
411
  case 1:
392
- allTypesExtendedPoolData = _e.sent();
412
+ allTypesExtendedPoolData = _h.sent();
393
413
  priceDict = {};
394
414
  for (_i = 0, allTypesExtendedPoolData_1 = allTypesExtendedPoolData; _i < allTypesExtendedPoolData_1.length; _i++) {
395
415
  extendedPoolData = allTypesExtendedPoolData_1[_i];
@@ -400,6 +420,11 @@ var _getUsdPricesFromApi = function () { return __awaiter(void 0, void 0, void 0
400
420
  if (typeof coin.usdPrice === "number")
401
421
  priceDict[coin.address.toLowerCase()] = coin.usdPrice;
402
422
  }
423
+ for (_e = 0, _f = (_g = pool.gaugeRewards) !== null && _g !== void 0 ? _g : []; _e < _f.length; _e++) {
424
+ coin = _f[_e];
425
+ if (typeof coin.tokenPrice === "number")
426
+ priceDict[coin.tokenAddress.toLowerCase()] = coin.tokenPrice;
427
+ }
403
428
  }
404
429
  }
405
430
  return [2 /*return*/, priceDict];
@@ -418,7 +443,7 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
418
443
  pricesFromApi = _c.sent();
419
444
  if (assetId.toLowerCase() in pricesFromApi)
420
445
  return [2 /*return*/, pricesFromApi[assetId.toLowerCase()]];
421
- if (assetId === 'USD' || (curve_1.curve.chainId === 137 && (assetId.toLowerCase() === curve_2.COINS.am3crv.toLowerCase())))
446
+ if (assetId === 'USD' || (curve_1.curve.chainId === 137 && (assetId.toLowerCase() === curve_1.curve.constants.COINS.am3crv.toLowerCase())))
422
447
  return [2 /*return*/, 1];
423
448
  chainName = {
424
449
  1: 'ethereum',
@@ -429,14 +454,14 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
429
454
  throw Error('curve object is not initialized');
430
455
  }
431
456
  assetId = {
432
- 'EUR': curve_2.COINS.eurt,
457
+ 'EUR': curve_1.curve.constants.COINS.eurt,
433
458
  'BTC': 'bitcoin',
434
459
  'ETH': 'ethereum',
435
460
  'LINK': 'link',
436
461
  }[assetId] || assetId;
437
462
  assetId = (0, exports.isEth)(assetId) ? "ethereum" : assetId.toLowerCase();
438
463
  // No EURT on Coingecko Polygon
439
- if (assetId.toLowerCase() === curve_2.COINS.eurt.toLowerCase()) {
464
+ if (assetId.toLowerCase() === curve_1.curve.constants.COINS.eurt.toLowerCase()) {
440
465
  chainName = 'ethereum';
441
466
  assetId = '0xC581b735A1688071A1746c968e0798D642EDE491'.toLowerCase(); // EURT Ethereum
442
467
  }
@@ -459,118 +484,6 @@ var _getUsdRate = function (assetId) { return __awaiter(void 0, void 0, void 0,
459
484
  });
460
485
  }); };
461
486
  exports._getUsdRate = _getUsdRate;
462
- var _getFactoryStatsUrl = function () {
463
- if (curve_1.curve.chainId === 1 || curve_1.curve.chainId === 1337) {
464
- return "https://curve-api-hplkiejxx-curvefi.vercel.app/api/getSubgraphData";
465
- }
466
- else if (curve_1.curve.chainId === 137) {
467
- return "https://api.curve.fi/api/getFactoryAPYs-polygon";
468
- }
469
- else {
470
- throw Error("Unsupported network id".concat(curve_1.curve.chainId));
471
- }
472
- };
473
- exports._getFactoryStatsUrl = _getFactoryStatsUrl;
474
- var _getStatsUrl = function (isCrypto) {
475
- if (isCrypto === void 0) { isCrypto = false; }
476
- if (curve_1.curve.chainId === 1 || curve_1.curve.chainId === 1337) {
477
- return isCrypto ? "https://stats.curve.fi/raw-stats-crypto/apys.json" : "https://stats.curve.fi/raw-stats/apys.json";
478
- }
479
- else if (curve_1.curve.chainId === 137) {
480
- return "https://stats.curve.fi/raw-stats-polygon/apys.json";
481
- }
482
- else {
483
- throw Error("Unsupported network id".concat(curve_1.curve.chainId));
484
- }
485
- };
486
- exports._getStatsUrl = _getStatsUrl;
487
- exports._getStats = (0, memoizee_1.default)(function (statsUrl) { return __awaiter(void 0, void 0, void 0, function () {
488
- var rawData, data;
489
- return __generator(this, function (_a) {
490
- switch (_a.label) {
491
- case 0: return [4 /*yield*/, axios_1.default.get(statsUrl)];
492
- case 1:
493
- rawData = (_a.sent()).data;
494
- data = {};
495
- Object.keys(rawData.apy.day).forEach(function (poolName) {
496
- var _a;
497
- data[poolName] = {
498
- volume: (_a = rawData.volume[poolName]) !== null && _a !== void 0 ? _a : 0,
499
- apy: {
500
- day: rawData.apy.day[poolName],
501
- week: rawData.apy.week[poolName],
502
- month: rawData.apy.month[poolName],
503
- total: rawData.apy.total[poolName],
504
- },
505
- };
506
- });
507
- return [2 /*return*/, data];
508
- }
509
- });
510
- }); }, {
511
- promise: true,
512
- maxAge: 10 * 60 * 1000, // 10m
513
- });
514
- exports._getFactoryStatsEthereum = (0, memoizee_1.default)(function (statsUrl) { return __awaiter(void 0, void 0, void 0, function () {
515
- var rawData, data;
516
- return __generator(this, function (_a) {
517
- switch (_a.label) {
518
- case 0: return [4 /*yield*/, axios_1.default.get(statsUrl)];
519
- case 1:
520
- rawData = (_a.sent()).data.data.poolList;
521
- data = {};
522
- rawData.forEach(function (item) {
523
- var _a, _b, _c, _d, _e;
524
- data[item.address.toLowerCase()] = {
525
- volume: (_a = item.volumeUSD) !== null && _a !== void 0 ? _a : 0,
526
- apy: {
527
- day: (_b = item.latestDailyApy) !== null && _b !== void 0 ? _b : 0,
528
- week: (_c = item.latestWeeklyApy) !== null && _c !== void 0 ? _c : 0,
529
- month: (_d = item.latestWeeklyApy) !== null && _d !== void 0 ? _d : 0,
530
- total: (_e = item.latestWeeklyApy) !== null && _e !== void 0 ? _e : 0,
531
- },
532
- };
533
- });
534
- return [2 /*return*/, data];
535
- }
536
- });
537
- }); }, {
538
- promise: true,
539
- maxAge: 10 * 60 * 1000, // 10m
540
- });
541
- exports._getFactoryStatsPolygon = (0, memoizee_1.default)(function (statsUrl) { return __awaiter(void 0, void 0, void 0, function () {
542
- var rawData, data;
543
- return __generator(this, function (_a) {
544
- switch (_a.label) {
545
- case 0: return [4 /*yield*/, axios_1.default.get(statsUrl)];
546
- case 1:
547
- rawData = (_a.sent()).data.data.poolDetails;
548
- data = {};
549
- rawData.forEach(function (item) {
550
- var _a, _b, _c, _d, _e;
551
- data[item.poolAddress.toLowerCase()] = {
552
- volume: (_a = item.volume) !== null && _a !== void 0 ? _a : 0,
553
- apy: {
554
- day: (_b = item.apy) !== null && _b !== void 0 ? _b : 0,
555
- week: (_c = item.apy) !== null && _c !== void 0 ? _c : 0,
556
- month: (_d = item.apy) !== null && _d !== void 0 ? _d : 0,
557
- total: (_e = item.apy) !== null && _e !== void 0 ? _e : 0,
558
- },
559
- };
560
- });
561
- return [2 /*return*/, data];
562
- }
563
- });
564
- }); }, {
565
- promise: true,
566
- maxAge: 10 * 60 * 1000, // 10m
567
- });
568
- var getPoolList = function () { return Object.keys(curve_1.POOLS_DATA); };
569
- exports.getPoolList = getPoolList;
570
- var getFactoryPoolList = function () { return Object.keys(curve_1.curve.constants.FACTORY_POOLS_DATA); };
571
- exports.getFactoryPoolList = getFactoryPoolList;
572
- var getCryptoFactoryPoolList = function () { return Object.keys(curve_1.curve.constants.CRYPTO_FACTORY_POOLS_DATA); };
573
- exports.getCryptoFactoryPoolList = getCryptoFactoryPoolList;
574
487
  var getUsdRate = function (coin) { return __awaiter(void 0, void 0, void 0, function () {
575
488
  var coinAddress;
576
489
  return __generator(this, function (_a) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@curvefi/api",
3
- "version": "1.25.0",
3
+ "version": "2.0.0",
4
4
  "description": "JavaScript library for curve.fi",
5
5
  "main": "lib/index.js",
6
6
  "author": "Macket",
@@ -1,4 +0,0 @@
1
- import { PoolDataInterface } from "../../interfaces";
2
- export declare const POOLS_DATA_ETHEREUM: {
3
- [index: string]: PoolDataInterface;
4
- };
@@ -1,4 +0,0 @@
1
- import { PoolDataInterface } from "../../interfaces";
2
- export declare const POOLS_DATA_POLYGON: {
3
- [index: string]: PoolDataInterface;
4
- };
@@ -1 +0,0 @@
1
- [{ "inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "constant": true, "inputs": [], "name": "adai", "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "internalType": "uint256", "name": "_amount", "type": "uint256" }], "name": "claim", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [{ "internalType": "address", "name": "_claimer", "type": "address" }], "name": "claimable", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "governance", "outputs": [{ "internalType": "address", "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [{ "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }], "name": "seize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "yfi", "outputs": [{ "internalType": "contract IERC20", "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" }]
@@ -1,57 +0,0 @@
1
- [
2
- {
3
- "outputs": [],
4
- "inputs": [
5
- {
6
- "type": "address",
7
- "name": "_old"
8
- },
9
- {
10
- "type": "address",
11
- "name": "_old_token"
12
- },
13
- {
14
- "type": "address",
15
- "name": "_new"
16
- },
17
- {
18
- "type": "address",
19
- "name": "_new_token"
20
- },
21
- {
22
- "type": "address[2]",
23
- "name": "_coins"
24
- }
25
- ],
26
- "constant": false,
27
- "payable": false,
28
- "type": "constructor"
29
- },
30
- {
31
- "name": "migrate",
32
- "outputs": [],
33
- "inputs": [],
34
- "constant": false,
35
- "payable": false,
36
- "type": "function",
37
- "gas": "106812"
38
- },
39
- {
40
- "name": "coins",
41
- "outputs": [
42
- {
43
- "type": "address",
44
- "name": "out"
45
- }
46
- ],
47
- "inputs": [
48
- {
49
- "type": "int128",
50
- "name": "arg0"
51
- }
52
- ],
53
- "stateMutability": "view",
54
- "type": "function",
55
- "gas": "1380"
56
- }
57
- ]