Compare commits
	
		
			10 Commits
		
	
	
		
			refactor/n
			...
			feat/curve
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 280efa1954 | ||
|  | 63e800716e | ||
|  | 61cbb1a098 | ||
|  | 0cbb523918 | ||
|  | e30bfe1872 | ||
|  | cb09a1da03 | ||
|  | 4e3418ba3e | ||
|  | f25835df19 | ||
|  | 984cffca53 | ||
|  | 0b785a0f26 | 
| @@ -1,4 +1,24 @@ | |||||||
| [ | [ | ||||||
|  |     { | ||||||
|  |         "version": "16.48.0", | ||||||
|  |         "changes": [ | ||||||
|  |             { | ||||||
|  |                 "note": "Use `MIM` as an intermediate asset on `Fantom`", | ||||||
|  |                 "pr": 405 | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "timestamp": 1643148019 | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |         "version": "16.47.0", | ||||||
|  |         "changes": [ | ||||||
|  |             { | ||||||
|  |                 "note": "Adding support for Synapse on all networks", | ||||||
|  |                 "pr": 400 | ||||||
|  |             } | ||||||
|  |         ], | ||||||
|  |         "timestamp": 1643136662 | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|         "version": "16.46.0", |         "version": "16.46.0", | ||||||
|         "changes": [ |         "changes": [ | ||||||
|   | |||||||
| @@ -5,6 +5,14 @@ Edit the package's CHANGELOG.json file only. | |||||||
|  |  | ||||||
| CHANGELOG | CHANGELOG | ||||||
|  |  | ||||||
|  | ## v16.48.0 - _January 25, 2022_ | ||||||
|  |  | ||||||
|  |     * Use `MIM` as an intermediate asset on `Fantom` (#405) | ||||||
|  |  | ||||||
|  | ## v16.47.0 - _January 25, 2022_ | ||||||
|  |  | ||||||
|  |     * Adding support for Synapse on all networks (#400) | ||||||
|  |  | ||||||
| ## v16.46.0 - _January 11, 2022_ | ## v16.46.0 - _January 11, 2022_ | ||||||
|  |  | ||||||
|     * Enable `Curve` ETH/CVX pool (#394) |     * Enable `Curve` ETH/CVX pool (#394) | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|     "name": "@0x/asset-swapper", |     "name": "@0x/asset-swapper", | ||||||
|     "version": "16.46.0", |     "version": "16.48.0", | ||||||
|     "engines": { |     "engines": { | ||||||
|         "node": ">=6.12" |         "node": ">=6.12" | ||||||
|     }, |     }, | ||||||
|   | |||||||
| @@ -49,11 +49,18 @@ import { | |||||||
|     SPOOKYSWAP_ROUTER_BY_CHAIN_ID, |     SPOOKYSWAP_ROUTER_BY_CHAIN_ID, | ||||||
|     SUSHISWAP_ROUTER_BY_CHAIN_ID, |     SUSHISWAP_ROUTER_BY_CHAIN_ID, | ||||||
|     SWERVE_MAINNET_INFOS, |     SWERVE_MAINNET_INFOS, | ||||||
|  |     SYNAPSE_AVALANCHE_INFOS, | ||||||
|  |     SYNAPSE_BSC_INFOS, | ||||||
|  |     SYNAPSE_FANTOM_INFOS, | ||||||
|  |     SYNAPSE_MAINNET_INFOS, | ||||||
|  |     SYNAPSE_OPTIMISM_INFOS, | ||||||
|  |     SYNAPSE_POLYGON_INFOS, | ||||||
|     TRADER_JOE_ROUTER_BY_CHAIN_ID, |     TRADER_JOE_ROUTER_BY_CHAIN_ID, | ||||||
|     UBESWAP_ROUTER_BY_CHAIN_ID, |     UBESWAP_ROUTER_BY_CHAIN_ID, | ||||||
|     UNISWAPV2_ROUTER_BY_CHAIN_ID, |     UNISWAPV2_ROUTER_BY_CHAIN_ID, | ||||||
|     WAULTSWAP_ROUTER_BY_CHAIN_ID, |     WAULTSWAP_ROUTER_BY_CHAIN_ID, | ||||||
|     XSIGMA_MAINNET_INFOS, |     XSIGMA_MAINNET_INFOS, | ||||||
|  |     CURVE_OPTIMISM_INFOS, | ||||||
| } from './constants'; | } from './constants'; | ||||||
| import { CurveInfo, ERC20BridgeSource } from './types'; | import { CurveInfo, ERC20BridgeSource } from './types'; | ||||||
|  |  | ||||||
| @@ -159,6 +166,15 @@ export function getCurveInfosForPair(chainId: ChainId, takerToken: string, maker | |||||||
|                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|                 ), |                 ), | ||||||
|             ); |             ); | ||||||
|  |         case ChainId.Optimism: | ||||||
|  |             return Object.values(CURVE_OPTIMISM_INFOS).filter(c => | ||||||
|  |                 [makerToken, takerToken].every( | ||||||
|  |                     t => | ||||||
|  |                         (c.tokens.includes(t) && c.metaTokens === undefined) || | ||||||
|  |                         (c.tokens.includes(t) && | ||||||
|  |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|  |                 ), | ||||||
|  |             ); | ||||||
|         default: |         default: | ||||||
|             return []; |             return []; | ||||||
|     } |     } | ||||||
| @@ -247,6 +263,67 @@ export function getNerveInfosForPair(chainId: ChainId, takerToken: string, maker | |||||||
|     ); |     ); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export function getSynapseInfosForPair(chainId: ChainId, takerToken: string, makerToken: string): CurveInfo[] { | ||||||
|  |     switch (chainId) { | ||||||
|  |         case ChainId.Mainnet: | ||||||
|  |             return Object.values(SYNAPSE_MAINNET_INFOS).filter(c => | ||||||
|  |                 [makerToken, takerToken].every( | ||||||
|  |                     t => | ||||||
|  |                         (c.tokens.includes(t) && c.metaTokens === undefined) || | ||||||
|  |                         (c.tokens.includes(t) && | ||||||
|  |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|  |                 ), | ||||||
|  |             ); | ||||||
|  |         case ChainId.Optimism: | ||||||
|  |             return Object.values(SYNAPSE_OPTIMISM_INFOS).filter(c => | ||||||
|  |                 [makerToken, takerToken].every( | ||||||
|  |                     t => | ||||||
|  |                         (c.tokens.includes(t) && c.metaTokens === undefined) || | ||||||
|  |                         (c.tokens.includes(t) && | ||||||
|  |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|  |                 ), | ||||||
|  |             ); | ||||||
|  |         case ChainId.BSC: | ||||||
|  |             return Object.values(SYNAPSE_BSC_INFOS).filter(c => | ||||||
|  |                 [makerToken, takerToken].every( | ||||||
|  |                     t => | ||||||
|  |                         (c.tokens.includes(t) && c.metaTokens === undefined) || | ||||||
|  |                         (c.tokens.includes(t) && | ||||||
|  |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|  |                 ), | ||||||
|  |             ); | ||||||
|  |         case ChainId.Polygon: | ||||||
|  |             return Object.values(SYNAPSE_POLYGON_INFOS).filter(c => | ||||||
|  |                 [makerToken, takerToken].every( | ||||||
|  |                     t => | ||||||
|  |                         (c.tokens.includes(t) && c.metaTokens === undefined) || | ||||||
|  |                         (c.tokens.includes(t) && | ||||||
|  |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|  |                 ), | ||||||
|  |             ); | ||||||
|  |         case ChainId.Fantom: | ||||||
|  |             return Object.values(SYNAPSE_FANTOM_INFOS).filter(c => | ||||||
|  |                 [makerToken, takerToken].every( | ||||||
|  |                     t => | ||||||
|  |                         (c.tokens.includes(t) && c.metaTokens === undefined) || | ||||||
|  |                         (c.tokens.includes(t) && | ||||||
|  |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|  |                 ), | ||||||
|  |             ); | ||||||
|  |         case ChainId.Avalanche: | ||||||
|  |             return Object.values(SYNAPSE_AVALANCHE_INFOS).filter(c => | ||||||
|  |                 [makerToken, takerToken].every( | ||||||
|  |                     t => | ||||||
|  |                         (c.tokens.includes(t) && c.metaTokens === undefined) || | ||||||
|  |                         (c.tokens.includes(t) && | ||||||
|  |                             [makerToken, takerToken].filter(v => c.metaTokens?.includes(v)).length > 0), | ||||||
|  |                 ), | ||||||
|  |             ); | ||||||
|  |         default: | ||||||
|  |             return []; | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| export function getFirebirdOneSwapInfosForPair(chainId: ChainId, takerToken: string, makerToken: string): CurveInfo[] { | export function getFirebirdOneSwapInfosForPair(chainId: ChainId, takerToken: string, makerToken: string): CurveInfo[] { | ||||||
|     if (chainId === ChainId.BSC) { |     if (chainId === ChainId.BSC) { | ||||||
|         return Object.values(FIREBIRDONESWAP_BSC_INFOS).filter(c => |         return Object.values(FIREBIRDONESWAP_BSC_INFOS).filter(c => | ||||||
| @@ -406,6 +483,7 @@ export function getCurveLikeInfosForPair( | |||||||
|         | ERC20BridgeSource.Swerve |         | ERC20BridgeSource.Swerve | ||||||
|         | ERC20BridgeSource.SnowSwap |         | ERC20BridgeSource.SnowSwap | ||||||
|         | ERC20BridgeSource.Nerve |         | ERC20BridgeSource.Nerve | ||||||
|  |         | ERC20BridgeSource.Synapse | ||||||
|         | ERC20BridgeSource.Belt |         | ERC20BridgeSource.Belt | ||||||
|         | ERC20BridgeSource.Ellipsis |         | ERC20BridgeSource.Ellipsis | ||||||
|         | ERC20BridgeSource.Smoothy |         | ERC20BridgeSource.Smoothy | ||||||
| @@ -432,6 +510,9 @@ export function getCurveLikeInfosForPair( | |||||||
|         case ERC20BridgeSource.Nerve: |         case ERC20BridgeSource.Nerve: | ||||||
|             pools = getNerveInfosForPair(chainId, takerToken, makerToken); |             pools = getNerveInfosForPair(chainId, takerToken, makerToken); | ||||||
|             break; |             break; | ||||||
|  |         case ERC20BridgeSource.Synapse: | ||||||
|  |             pools = getSynapseInfosForPair(chainId, takerToken, makerToken); | ||||||
|  |             break; | ||||||
|         case ERC20BridgeSource.Belt: |         case ERC20BridgeSource.Belt: | ||||||
|             pools = getBeltInfosForPair(chainId, takerToken, makerToken); |             pools = getBeltInfosForPair(chainId, takerToken, makerToken); | ||||||
|             break; |             break; | ||||||
|   | |||||||
| @@ -104,6 +104,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.UniswapV3, |             ERC20BridgeSource.UniswapV3, | ||||||
|             ERC20BridgeSource.CurveV2, |             ERC20BridgeSource.CurveV2, | ||||||
|             ERC20BridgeSource.ShibaSwap, |             ERC20BridgeSource.ShibaSwap, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|             // TODO: enable after FQT has been redeployed on Ethereum mainnet |             // TODO: enable after FQT has been redeployed on Ethereum mainnet | ||||||
|             // ERC20BridgeSource.AaveV2, |             // ERC20BridgeSource.AaveV2, | ||||||
|             // ERC20BridgeSource.Compound, |             // ERC20BridgeSource.Compound, | ||||||
| @@ -130,6 +131,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.Mooniswap, |             ERC20BridgeSource.Mooniswap, | ||||||
|             ERC20BridgeSource.MultiHop, |             ERC20BridgeSource.MultiHop, | ||||||
|             ERC20BridgeSource.Nerve, |             ERC20BridgeSource.Nerve, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|             ERC20BridgeSource.PancakeSwap, |             ERC20BridgeSource.PancakeSwap, | ||||||
|             ERC20BridgeSource.PancakeSwapV2, |             ERC20BridgeSource.PancakeSwapV2, | ||||||
|             ERC20BridgeSource.SushiSwap, |             ERC20BridgeSource.SushiSwap, | ||||||
| @@ -167,6 +169,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.IronSwap, |             ERC20BridgeSource.IronSwap, | ||||||
|             ERC20BridgeSource.AaveV2, |             ERC20BridgeSource.AaveV2, | ||||||
|             ERC20BridgeSource.UniswapV3, |             ERC20BridgeSource.UniswapV3, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Avalanche]: new SourceFilters([ |         [ChainId.Avalanche]: new SourceFilters([ | ||||||
|             ERC20BridgeSource.MultiHop, |             ERC20BridgeSource.MultiHop, | ||||||
| @@ -177,6 +180,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.CurveV2, |             ERC20BridgeSource.CurveV2, | ||||||
|             ERC20BridgeSource.KyberDmm, |             ERC20BridgeSource.KyberDmm, | ||||||
|             ERC20BridgeSource.AaveV2, |             ERC20BridgeSource.AaveV2, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Fantom]: new SourceFilters([ |         [ChainId.Fantom]: new SourceFilters([ | ||||||
|             ERC20BridgeSource.MultiHop, |             ERC20BridgeSource.MultiHop, | ||||||
| @@ -188,13 +192,22 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.SpiritSwap, |             ERC20BridgeSource.SpiritSwap, | ||||||
|             ERC20BridgeSource.SpookySwap, |             ERC20BridgeSource.SpookySwap, | ||||||
|             ERC20BridgeSource.SushiSwap, |             ERC20BridgeSource.SushiSwap, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Celo]: new SourceFilters([ |         [ChainId.Celo]: new SourceFilters([ | ||||||
|             ERC20BridgeSource.UbeSwap, |             ERC20BridgeSource.UbeSwap, | ||||||
|             ERC20BridgeSource.SushiSwap, |             ERC20BridgeSource.SushiSwap, | ||||||
|             ERC20BridgeSource.MultiHop, |             ERC20BridgeSource.MultiHop, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Optimism]: new SourceFilters([ERC20BridgeSource.UniswapV3]), |         [ChainId.Optimism]: new SourceFilters([ | ||||||
|  |             ERC20BridgeSource.UniswapV3, | ||||||
|  |             ERC20BridgeSource.Curve, | ||||||
|  |             ERC20BridgeSource.CurveV2, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|  |             ERC20BridgeSource.Curve, | ||||||
|  |             ERC20BridgeSource.CurveV2, | ||||||
|  |             ERC20BridgeSource.MultiHop, | ||||||
|  |         ]), | ||||||
|     }, |     }, | ||||||
|     new SourceFilters([]), |     new SourceFilters([]), | ||||||
| ); | ); | ||||||
| @@ -237,6 +250,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.UniswapV3, |             ERC20BridgeSource.UniswapV3, | ||||||
|             ERC20BridgeSource.CurveV2, |             ERC20BridgeSource.CurveV2, | ||||||
|             ERC20BridgeSource.ShibaSwap, |             ERC20BridgeSource.ShibaSwap, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|             // TODO: enable after FQT has been redeployed on Ethereum mainnet |             // TODO: enable after FQT has been redeployed on Ethereum mainnet | ||||||
|             // ERC20BridgeSource.AaveV2, |             // ERC20BridgeSource.AaveV2, | ||||||
|             // ERC20BridgeSource.Compound, |             // ERC20BridgeSource.Compound, | ||||||
| @@ -277,6 +291,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.JetSwap, |             ERC20BridgeSource.JetSwap, | ||||||
|             ERC20BridgeSource.ACryptos, |             ERC20BridgeSource.ACryptos, | ||||||
|             ERC20BridgeSource.KyberDmm, |             ERC20BridgeSource.KyberDmm, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Polygon]: new SourceFilters([ |         [ChainId.Polygon]: new SourceFilters([ | ||||||
|             ERC20BridgeSource.SushiSwap, |             ERC20BridgeSource.SushiSwap, | ||||||
| @@ -300,6 +315,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.IronSwap, |             ERC20BridgeSource.IronSwap, | ||||||
|             ERC20BridgeSource.AaveV2, |             ERC20BridgeSource.AaveV2, | ||||||
|             ERC20BridgeSource.UniswapV3, |             ERC20BridgeSource.UniswapV3, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Avalanche]: new SourceFilters([ |         [ChainId.Avalanche]: new SourceFilters([ | ||||||
|             ERC20BridgeSource.MultiHop, |             ERC20BridgeSource.MultiHop, | ||||||
| @@ -310,6 +326,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.CurveV2, |             ERC20BridgeSource.CurveV2, | ||||||
|             ERC20BridgeSource.KyberDmm, |             ERC20BridgeSource.KyberDmm, | ||||||
|             ERC20BridgeSource.AaveV2, |             ERC20BridgeSource.AaveV2, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Fantom]: new SourceFilters([ |         [ChainId.Fantom]: new SourceFilters([ | ||||||
|             ERC20BridgeSource.MultiHop, |             ERC20BridgeSource.MultiHop, | ||||||
| @@ -321,13 +338,22 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>( | |||||||
|             ERC20BridgeSource.SpiritSwap, |             ERC20BridgeSource.SpiritSwap, | ||||||
|             ERC20BridgeSource.SpookySwap, |             ERC20BridgeSource.SpookySwap, | ||||||
|             ERC20BridgeSource.SushiSwap, |             ERC20BridgeSource.SushiSwap, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Celo]: new SourceFilters([ |         [ChainId.Celo]: new SourceFilters([ | ||||||
|             ERC20BridgeSource.UbeSwap, |             ERC20BridgeSource.UbeSwap, | ||||||
|             ERC20BridgeSource.SushiSwap, |             ERC20BridgeSource.SushiSwap, | ||||||
|             ERC20BridgeSource.MultiHop, |             ERC20BridgeSource.MultiHop, | ||||||
|         ]), |         ]), | ||||||
|         [ChainId.Optimism]: new SourceFilters([ERC20BridgeSource.UniswapV3]), |         [ChainId.Optimism]: new SourceFilters([ | ||||||
|  |             ERC20BridgeSource.UniswapV3, | ||||||
|  |             ERC20BridgeSource.Curve, | ||||||
|  |             ERC20BridgeSource.CurveV2, | ||||||
|  |             ERC20BridgeSource.Synapse, | ||||||
|  |             ERC20BridgeSource.Curve, | ||||||
|  |             ERC20BridgeSource.CurveV2, | ||||||
|  |             ERC20BridgeSource.MultiHop, | ||||||
|  |         ]), | ||||||
|     }, |     }, | ||||||
|     new SourceFilters([]), |     new SourceFilters([]), | ||||||
| ); | ); | ||||||
| @@ -462,7 +488,15 @@ export const MAINNET_TOKENS = { | |||||||
|     CRV: '0xd533a949740bb3306d119cc777fa900ba034cd52', |     CRV: '0xd533a949740bb3306d119cc777fa900ba034cd52', | ||||||
|     MIM: '0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3', |     MIM: '0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3', | ||||||
|     EURT: '0xc581b735a1688071a1746c968e0798d642ede491', |     EURT: '0xc581b735a1688071a1746c968e0798d642ede491', | ||||||
|  |     // Synapse ecosystem | ||||||
|  |     nUSD: '0x1b84765de8b7566e4ceaf4d0fd3c5af52d3dde4f', | ||||||
|     CVX: '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b', |     CVX: '0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b', | ||||||
|  |     UST_WORMHOLE: '0xa693b19d2931d498c5b318df961919bb4aee87a5', | ||||||
|  |     RAI: '0x03ab458634910aad20ef5f1c8ee96f1d6ac54919', | ||||||
|  |     DOLA: '0x865377367054516e17014ccded1e7d814edc9ce4', | ||||||
|  |     OUSD: '0x2a8e1e676ec238d8a992307b495b45b3feaa5e86', | ||||||
|  |     agEUR: '0x1a7e4e63778b4f12a199c062f3efdd288afcbce8', | ||||||
|  |     ibEUR: '0x96e61422b6a9ba0e068b6c5add4ffabc6a4aae27', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const BSC_TOKENS = { | export const BSC_TOKENS = { | ||||||
| @@ -479,6 +513,7 @@ export const BSC_TOKENS = { | |||||||
|     BTCB: '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', |     BTCB: '0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c', | ||||||
|     renBTC: '0xfce146bf3146100cfe5db4129cf6c82b0ef4ad8c', |     renBTC: '0xfce146bf3146100cfe5db4129cf6c82b0ef4ad8c', | ||||||
|     pBTC: '0xed28a457a5a76596ac48d87c0f577020f6ea1c4c', |     pBTC: '0xed28a457a5a76596ac48d87c0f577020f6ea1c4c', | ||||||
|  |     nUSD: '0x23b891e5c62e0955ae2bd185990103928ab817b3', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const POLYGON_TOKENS = { | export const POLYGON_TOKENS = { | ||||||
| @@ -488,6 +523,8 @@ export const POLYGON_TOKENS = { | |||||||
|     amDAI: '0x27f8d03b3a2196956ed754badc28d73be8830a6e', |     amDAI: '0x27f8d03b3a2196956ed754badc28d73be8830a6e', | ||||||
|     amUSDC: '0x1a13f4ca1d028320a707d99520abfefca3998b7f', |     amUSDC: '0x1a13f4ca1d028320a707d99520abfefca3998b7f', | ||||||
|     amUSDT: '0x60d55f02a771d515e077c9c2403a1ef324885cec', |     amUSDT: '0x60d55f02a771d515e077c9c2403a1ef324885cec', | ||||||
|  |     amWBTC: '0x5c2ed810328349100a66b82b78a1791b101c9d61', | ||||||
|  |     amWETH: '0x28424507fefb6f7f8e9d3860f56504e4e5f5f390', | ||||||
|     WBTC: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', |     WBTC: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', | ||||||
|     WMATIC: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', |     WMATIC: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', | ||||||
|     WETH: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', |     WETH: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', | ||||||
| @@ -496,6 +533,7 @@ export const POLYGON_TOKENS = { | |||||||
|     DFYN: '0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', |     DFYN: '0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97', | ||||||
|     BANANA: '0x5d47baba0d66083c52009271faf3f50dcc01023c', |     BANANA: '0x5d47baba0d66083c52009271faf3f50dcc01023c', | ||||||
|     WEXPOLY: '0x4c4bf319237d98a30a929a96112effa8da3510eb', |     WEXPOLY: '0x4c4bf319237d98a30a929a96112effa8da3510eb', | ||||||
|  |     nUSD: '0xb6c473756050de474286bed418b77aeac39b02af', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const AVALANCHE_TOKENS = { | export const AVALANCHE_TOKENS = { | ||||||
| @@ -503,11 +541,19 @@ export const AVALANCHE_TOKENS = { | |||||||
|     WETH: '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab', |     WETH: '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab', | ||||||
|     WBTC: '0x50b7545627a5162f82a992c33b87adc75187b218', |     WBTC: '0x50b7545627a5162f82a992c33b87adc75187b218', | ||||||
|     DAI: '0xd586e7f844cea2f87f50152665bcbc2c279d8d70', |     DAI: '0xd586e7f844cea2f87f50152665bcbc2c279d8d70', | ||||||
|  |     // bridged USDC | ||||||
|     USDC: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', |     USDC: '0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664', | ||||||
|  |     // native USDC on Avalanche | ||||||
|  |     nUSDC: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e', | ||||||
|     USDT: '0xc7198437980c041c805a1edcba50c1ce5db95118', |     USDT: '0xc7198437980c041c805a1edcba50c1ce5db95118', | ||||||
|     aDAI: '0x47afa96cdc9fab46904a55a6ad4bf6660b53c38a', |     aDAI: '0x47afa96cdc9fab46904a55a6ad4bf6660b53c38a', | ||||||
|     aUSDC: '0x46a51127c3ce23fb7ab1de06226147f446e4a857', |     aUSDC: '0x46a51127c3ce23fb7ab1de06226147f446e4a857', | ||||||
|     aUSDT: '0x532e6537fea298397212f09a61e03311686f548e', |     aUSDT: '0x532e6537fea298397212f09a61e03311686f548e', | ||||||
|  |     MIM: '0x130966628846bfd36ff31a822705796e8cb8c18d', | ||||||
|  |     nETH: '0x19e1ae0ee35c0404f835521146206595d37981ae', | ||||||
|  |     nUSD: '0xcfc37a6ab183dd4aed08c204d1c2773c0b1bdf46', | ||||||
|  |     aWETH: '0x53f7c5869a859f0aec3d334ee8b4cf01e3492f21', | ||||||
|  |     MIM: '0x130966628846bfd36ff31a822705796e8cb8c18d', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CELO_TOKENS = { | export const CELO_TOKENS = { | ||||||
| @@ -538,6 +584,13 @@ export const FANTOM_TOKENS = { | |||||||
|     fUSDT: '0x049d68029688eabf473097a2fc38ef61633a3c7a', |     fUSDT: '0x049d68029688eabf473097a2fc38ef61633a3c7a', | ||||||
|     WBTC: '0x321162cd933e2be498cd2267a90534a804051b11', |     WBTC: '0x321162cd933e2be498cd2267a90534a804051b11', | ||||||
|     renBTC: '0xdbf31df14b66535af65aac99c32e9ea844e14501', |     renBTC: '0xdbf31df14b66535af65aac99c32e9ea844e14501', | ||||||
|  |     MIM: '0x82f0b8b456c1a451378467398982d4834b6829c1', | ||||||
|  |     nUSD: '0xed2a7edd7413021d440b09d654f3b87712abab66', | ||||||
|  |     nETH: '0x67c10c397dd0ba417329543c1a40eb48aaa7cd00', | ||||||
|  |     gfUSDT: '0x940f41f0ec9ba1a34cf001cc03347ac092f5f6b5', | ||||||
|  |     gUSDC: '0xe578c856933d8e1082740bf7661e379aa2a30b26', | ||||||
|  |     gDAI: '0x07e6332dd090d287d3489245038daf987955dcfb', | ||||||
|  |     FRAX: '0xdc301622e621166bd8e82f2ca0a26c13ad0be355', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const OPTIMISM_TOKENS = { | export const OPTIMISM_TOKENS = { | ||||||
| @@ -546,6 +599,8 @@ export const OPTIMISM_TOKENS = { | |||||||
|     USDT: '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58', |     USDT: '0x94b008aa00579c1307b0ef2c499ad98a8ce58e58', | ||||||
|     DAI: '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', |     DAI: '0xda10009cbd5d07dd0cecc66161fc93d7c9000da1', | ||||||
|     WBTC: '0x68f180fcce6836688e9084f035309e29bf0a2095', |     WBTC: '0x68f180fcce6836688e9084f035309e29bf0a2095', | ||||||
|  |     nETH: '0x809dc529f07651bd43a172e8db6f4a7a0d771036', | ||||||
|  |     sWETH: '0x121ab82b49b2bc4c7901ca46b8277962b4350204', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_POOLS = { | export const CURVE_POOLS = { | ||||||
| @@ -594,6 +649,15 @@ export const CURVE_POOLS = { | |||||||
|     eurt: '0xfd5db7463a3ab53fd211b4af195c5bccc1a03890', |     eurt: '0xfd5db7463a3ab53fd211b4af195c5bccc1a03890', | ||||||
|     ethcrv: '0x8301ae4fc9c624d1d396cbdaa1ed877821d7c511', |     ethcrv: '0x8301ae4fc9c624d1d396cbdaa1ed877821d7c511', | ||||||
|     ethcvx: '0xb576491f1e6e5e62f1d8f26062ee822b40b0e0d4', |     ethcvx: '0xb576491f1e6e5e62f1d8f26062ee822b40b0e0d4', | ||||||
|  |     mimust: '0x55a8a39bc9694714e2874c1ce77aa1e599461e18', | ||||||
|  |     usttri_wormhole: '0xceaf7747579696a2f0bb206a14210e3c9e6fb269', | ||||||
|  |     fei_tri: '0x06cb22615ba53e60d67bf6c341a0fd5e718e1655', | ||||||
|  |     rai_tri: '0x618788357d0ebd8a37e763adab3bc575d54c2c7d', | ||||||
|  |     DOLA_tri: '0xaa5a67c256e27a5d80712c51971408db3370927d', | ||||||
|  |     OUSD_tri: '0x87650d7bbfc3a9f10587d7778206671719d9910d', | ||||||
|  |     d3pool: '0xbaaa1f5dba42c3389bdbc2c9d2de134f5cd0dc89', | ||||||
|  |     triEURpool: '0xb9446c4ef5ebe66268da6700d26f96273de3d571', | ||||||
|  |     ibEURsEUR: '0x19b080fe1ffa0553469d20ca36219f17fcf03859', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_POOLS = { | export const CURVE_V2_POOLS = { | ||||||
| @@ -607,12 +671,13 @@ export const CURVE_POLYGON_POOLS = { | |||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_POLYGON_POOLS = { | export const CURVE_V2_POLYGON_POOLS = { | ||||||
|     atricrypto: '0x3fcd5de6a9fc8a99995c406c77dda3ed7e406f81', |     atricrypto3: '0x1d8b86e3D88cDb2d34688e87E72F388Cb541B7C8', | ||||||
|     atricrypto3: '0x1d8b86e3d88cdb2d34688e87e72f388cb541b7c8', |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_AVALANCHE_POOLS = { | export const CURVE_AVALANCHE_POOLS = { | ||||||
|     aave: '0x7f90122bf0700f9e7e1f688fe926940e8839f353', |     aave: '0x7f90122bf0700f9e7e1f688fe926940e8839f353', | ||||||
|  |     mim: '0xaea2e71b631fa93683bcf256a8689dfa0e094fcd', | ||||||
|  |     USDC: '0x3a43a5851a3e3e0e25a3c1089670269786be1577', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_AVALANCHE_POOLS = { | export const CURVE_V2_AVALANCHE_POOLS = { | ||||||
| @@ -623,12 +688,19 @@ export const CURVE_FANTOM_POOLS = { | |||||||
|     fUSDT: '0x92d5ebf3593a92888c25c0abef126583d4b5312e', |     fUSDT: '0x92d5ebf3593a92888c25c0abef126583d4b5312e', | ||||||
|     twoPool: '0x27e611fd27b276acbd5ffd632e5eaebec9761e40', |     twoPool: '0x27e611fd27b276acbd5ffd632e5eaebec9761e40', | ||||||
|     ren: '0x3ef6a01a0f81d6046290f3e2a8c5b843e738e604', |     ren: '0x3ef6a01a0f81d6046290f3e2a8c5b843e738e604', | ||||||
|  |     tri_v2: '0x2dd7c9371965472e5a5fd28fbe165007c61439e1', | ||||||
|  |     geist: '0x0fa949783947bf6c1b171db13aeacbb488845b3f', | ||||||
|  |     FRAX_twoPool: '0x7a656b342e14f745e2b164890e88017e27ae7320', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_FANTOM_POOLS = { | export const CURVE_V2_FANTOM_POOLS = { | ||||||
|     tricrypto: '0x3a1659ddcf2339be3aea159ca010979fb49155ff', |     tricrypto: '0x3a1659ddcf2339be3aea159ca010979fb49155ff', | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | export const CURVE_OPTIMISM_POOLS = { | ||||||
|  |     tri: '0x1337bedc9d22ecbe766df105c9623922a27963ec', | ||||||
|  | }; | ||||||
|  |  | ||||||
| export const SWERVE_POOLS = { | export const SWERVE_POOLS = { | ||||||
|     y: '0x329239599afb305da0a2ec69c58f8a6697f9f88d', |     y: '0x329239599afb305da0a2ec69c58f8a6697f9f88d', | ||||||
| }; | }; | ||||||
| @@ -663,6 +735,37 @@ export const NERVE_POOLS = { | |||||||
|     threePool: '0x1b3771a66ee31180906972580ade9b81afc5fcdc', |     threePool: '0x1b3771a66ee31180906972580ade9b81afc5fcdc', | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_MAINNET_POOLS = { | ||||||
|  |     nUSDLP: '0x1116898dda4015ed8ddefb84b6e8bc24528af2d8', | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_OPTIMISM_POOLS = { | ||||||
|  |     nETHLP: '0xe27bff97ce92c3e1ff7aa9f86781fdd6d48f5ee9', | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_BSC_POOLS = { | ||||||
|  |     nUSDLP: '0x28ec0b36f0819ecb5005cab836f4ed5a2eca4d13', | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_POLYGON_POOLS = { | ||||||
|  |     nUSDLP: '0x85fcd7dd0a1e1a9fcd5fd886ed522de8221c3ee5', | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_FANTOM_POOLS = { | ||||||
|  |     nUSDLP: '0x2913e812cf0dcca30fb28e6cac3d2dcff4497688', | ||||||
|  |     nETHLP: '0x8d9ba570d6cb60c7e3e0f31343efe75ab8e65fb1', | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_AVALANCHE_POOLS = { | ||||||
|  |     nUSDLP: '0xed2a7edd7413021d440b09d654f3b87712abab66', | ||||||
|  |     nETHLP: '0x77a7e60555bc18b4be44c181b2575eee46212d44', | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_ARBITRUM_POOLS = { | ||||||
|  |     nUSDLP: '0x0db3fe3b770c95a0b99d1ed6f2627933466c0dd8', | ||||||
|  |     nETHLP: '0xd70a52248e546a3b260849386410c7170c7bd1e9', | ||||||
|  | }; | ||||||
|  |  | ||||||
| export const BELT_POOLS = { | export const BELT_POOLS = { | ||||||
|     vPool: '0xf16d312d119c13dd27fd0dc814b0bcdcaaa62dfd', |     vPool: '0xf16d312d119c13dd27fd0dc814b0bcdcaaa62dfd', | ||||||
| }; | }; | ||||||
| @@ -720,6 +823,7 @@ export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId<string[]>( | |||||||
|             POLYGON_TOKENS.DAI, |             POLYGON_TOKENS.DAI, | ||||||
|             POLYGON_TOKENS.USDT, |             POLYGON_TOKENS.USDT, | ||||||
|             POLYGON_TOKENS.WBTC, |             POLYGON_TOKENS.WBTC, | ||||||
|  |             POLYGON_TOKENS.nUSD, | ||||||
|         ], |         ], | ||||||
|         [ChainId.Avalanche]: [ |         [ChainId.Avalanche]: [ | ||||||
|             AVALANCHE_TOKENS.WAVAX, |             AVALANCHE_TOKENS.WAVAX, | ||||||
| @@ -727,10 +831,28 @@ export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId<string[]>( | |||||||
|             AVALANCHE_TOKENS.DAI, |             AVALANCHE_TOKENS.DAI, | ||||||
|             AVALANCHE_TOKENS.USDT, |             AVALANCHE_TOKENS.USDT, | ||||||
|             AVALANCHE_TOKENS.USDC, |             AVALANCHE_TOKENS.USDC, | ||||||
|  |             AVALANCHE_TOKENS.nUSD, | ||||||
|  |             AVALANCHE_TOKENS.nETH, | ||||||
|  |             AVALANCHE_TOKENS.aWETH, | ||||||
|  |         ], | ||||||
|  |         [ChainId.Fantom]: [ | ||||||
|  |             FANTOM_TOKENS.WFTM, | ||||||
|  |             FANTOM_TOKENS.WETH, | ||||||
|  |             FANTOM_TOKENS.DAI, | ||||||
|  |             FANTOM_TOKENS.USDC, | ||||||
|  |             FANTOM_TOKENS.nUSD, | ||||||
|  |             FANTOM_TOKENS.nETH, | ||||||
|  |             FANTOM_TOKENS.MIM, | ||||||
|         ], |         ], | ||||||
|         [ChainId.Fantom]: [FANTOM_TOKENS.WFTM, FANTOM_TOKENS.WETH, FANTOM_TOKENS.DAI, FANTOM_TOKENS.USDC], |  | ||||||
|         [ChainId.Celo]: [CELO_TOKENS.WCELO, CELO_TOKENS.mCUSD, CELO_TOKENS.WETH, CELO_TOKENS.amCUSD, CELO_TOKENS.WBTC], |         [ChainId.Celo]: [CELO_TOKENS.WCELO, CELO_TOKENS.mCUSD, CELO_TOKENS.WETH, CELO_TOKENS.amCUSD, CELO_TOKENS.WBTC], | ||||||
|         [ChainId.Optimism]: [OPTIMISM_TOKENS.WETH, OPTIMISM_TOKENS.DAI, OPTIMISM_TOKENS.USDC], |         [ChainId.Optimism]: [ | ||||||
|  |             OPTIMISM_TOKENS.WETH, | ||||||
|  |             OPTIMISM_TOKENS.DAI, | ||||||
|  |             OPTIMISM_TOKENS.USDC, | ||||||
|  |             OPTIMISM_TOKENS.USDT, | ||||||
|  |             OPTIMISM_TOKENS.nETH, | ||||||
|  |             OPTIMISM_TOKENS.sWETH, | ||||||
|  |         ], | ||||||
|     }, |     }, | ||||||
|     [], |     [], | ||||||
| ); | ); | ||||||
| @@ -763,7 +885,14 @@ export const DEFAULT_TOKEN_ADJACENCY_GRAPH_BY_CHAIN_ID = valueByChainId<TokenAdj | |||||||
|         }).build(), |         }).build(), | ||||||
|         [ChainId.Avalanche]: new TokenAdjacencyGraphBuilder({ |         [ChainId.Avalanche]: new TokenAdjacencyGraphBuilder({ | ||||||
|             default: DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID[ChainId.Avalanche], |             default: DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID[ChainId.Avalanche], | ||||||
|         }).build(), |         }) | ||||||
|  |             .tap(builder => { | ||||||
|  |                 // Synape nETH/aWETH pool | ||||||
|  |                 builder | ||||||
|  |                     .add(AVALANCHE_TOKENS.aWETH, AVALANCHE_TOKENS.nETH) | ||||||
|  |                     .add(AVALANCHE_TOKENS.nETH, AVALANCHE_TOKENS.aWETH); | ||||||
|  |             }) | ||||||
|  |             .build(), | ||||||
|         [ChainId.Fantom]: new TokenAdjacencyGraphBuilder({ |         [ChainId.Fantom]: new TokenAdjacencyGraphBuilder({ | ||||||
|             default: DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID[ChainId.Fantom], |             default: DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID[ChainId.Fantom], | ||||||
|         }).build(), |         }).build(), | ||||||
| @@ -804,6 +933,7 @@ const CURVE_TRI_POOL_MAINNET_TOKENS = [MAINNET_TOKENS.DAI, MAINNET_TOKENS.USDC, | |||||||
| const CURVE_TRI_BTC_POOL_TOKEN = [MAINNET_TOKENS.RenBTC, MAINNET_TOKENS.WBTC, MAINNET_TOKENS.sBTC]; | const CURVE_TRI_BTC_POOL_TOKEN = [MAINNET_TOKENS.RenBTC, MAINNET_TOKENS.WBTC, MAINNET_TOKENS.sBTC]; | ||||||
| const CURVE_POLYGON_ATRICRYPTO_UNDERLYING_TOKENS = [POLYGON_TOKENS.DAI, POLYGON_TOKENS.USDC, POLYGON_TOKENS.USDT]; | const CURVE_POLYGON_ATRICRYPTO_UNDERLYING_TOKENS = [POLYGON_TOKENS.DAI, POLYGON_TOKENS.USDC, POLYGON_TOKENS.USDT]; | ||||||
| const CURVE_POLYGON_ATRICRYPTO_TOKENS = [POLYGON_TOKENS.amDAI, POLYGON_TOKENS.amUSDC, POLYGON_TOKENS.amUSDT]; | const CURVE_POLYGON_ATRICRYPTO_TOKENS = [POLYGON_TOKENS.amDAI, POLYGON_TOKENS.amUSDC, POLYGON_TOKENS.amUSDT]; | ||||||
|  | const CURVE_FANTOM_TWO_POOL_TOKENS = [FANTOM_TOKENS.DAI, FANTOM_TOKENS.USDC]; | ||||||
|  |  | ||||||
| const createCurveExchangePool = (info: { tokens: string[]; pool: string; gasSchedule: number }) => ({ | const createCurveExchangePool = (info: { tokens: string[]; pool: string; gasSchedule: number }) => ({ | ||||||
|     exchangeFunctionSelector: CurveFunctionSelectors.exchange, |     exchangeFunctionSelector: CurveFunctionSelectors.exchange, | ||||||
| @@ -845,6 +975,16 @@ const createCurveMetaTriBtcPool = (info: { tokens: string[]; pool: string; gasSc | |||||||
|     gasSchedule: info.gasSchedule, |     gasSchedule: info.gasSchedule, | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  | const createCurveMetaTwoPoolFantom = (info: { tokens: string[]; pool: string; gasSchedule: number }) => ({ | ||||||
|  |     exchangeFunctionSelector: CurveFunctionSelectors.exchange_underlying, | ||||||
|  |     sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_underlying, | ||||||
|  |     buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |     tokens: [...info.tokens, ...CURVE_FANTOM_TWO_POOL_TOKENS], | ||||||
|  |     metaTokens: info.tokens, | ||||||
|  |     poolAddress: info.pool, | ||||||
|  |     gasSchedule: info.gasSchedule, | ||||||
|  | }); | ||||||
|  |  | ||||||
| const createCurveExchangeV2Pool = (info: { tokens: string[]; pool: string; gasSchedule: number }) => ({ | const createCurveExchangeV2Pool = (info: { tokens: string[]; pool: string; gasSchedule: number }) => ({ | ||||||
|     exchangeFunctionSelector: CurveFunctionSelectors.exchange_v2, |     exchangeFunctionSelector: CurveFunctionSelectors.exchange_v2, | ||||||
|     sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_v2, |     sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_v2, | ||||||
| @@ -1086,6 +1226,51 @@ export const CURVE_MAINNET_INFOS: { [name: string]: CurveInfo } = { | |||||||
|         sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_uint256, |         sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_uint256, | ||||||
|         exchangeFunctionSelector: CurveFunctionSelectors.exchange_underlying_uint256, |         exchangeFunctionSelector: CurveFunctionSelectors.exchange_underlying_uint256, | ||||||
|     }, |     }, | ||||||
|  |     [CURVE_POOLS.mimust]: createCurveExchangePool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.MIM, MAINNET_TOKENS.UST], | ||||||
|  |         pool: CURVE_POOLS.mimust, | ||||||
|  |         gasSchedule: 105e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.usttri_wormhole]: createCurveMetaTriPool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.UST_WORMHOLE], | ||||||
|  |         pool: CURVE_POOLS.usttri_wormhole, | ||||||
|  |         gasSchedule: 340e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.fei_tri]: createCurveMetaTriPool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.FEI], | ||||||
|  |         pool: CURVE_POOLS.fei_tri, | ||||||
|  |         gasSchedule: 340e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.rai_tri]: createCurveMetaTriPool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.RAI], | ||||||
|  |         pool: CURVE_POOLS.rai_tri, | ||||||
|  |         gasSchedule: 340e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.DOLA_tri]: createCurveMetaTriPool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.DOLA], | ||||||
|  |         pool: CURVE_POOLS.DOLA_tri, | ||||||
|  |         gasSchedule: 340e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.OUSD_tri]: createCurveMetaTriPool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.OUSD], | ||||||
|  |         pool: CURVE_POOLS.OUSD_tri, | ||||||
|  |         gasSchedule: 340e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.d3pool]: createCurveExchangePool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.FRAX, MAINNET_TOKENS.FEI, MAINNET_TOKENS.alUSD], | ||||||
|  |         pool: CURVE_POOLS.d3pool, | ||||||
|  |         gasSchedule: 176e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.triEURpool]: createCurveExchangePool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.agEUR, MAINNET_TOKENS.EURT, MAINNET_TOKENS.EURS], | ||||||
|  |         pool: CURVE_POOLS.triEURpool, | ||||||
|  |         gasSchedule: 176e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_POOLS.ibEURsEUR]: createCurveExchangePool({ | ||||||
|  |         tokens: [MAINNET_TOKENS.ibEUR, MAINNET_TOKENS.sEUR], | ||||||
|  |         pool: CURVE_POOLS.ibEURsEUR, | ||||||
|  |         gasSchedule: 176e3, | ||||||
|  |     }), | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_MAINNET_INFOS: { [name: string]: CurveInfo } = { | export const CURVE_V2_MAINNET_INFOS: { [name: string]: CurveInfo } = { | ||||||
| @@ -1120,11 +1305,6 @@ export const CURVE_POLYGON_INFOS: { [name: string]: CurveInfo } = { | |||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_POLYGON_INFOS: { [name: string]: CurveInfo } = { | export const CURVE_V2_POLYGON_INFOS: { [name: string]: CurveInfo } = { | ||||||
|     [CURVE_V2_POLYGON_POOLS.atricrypto]: createCurveV2MetaTriPool({ |  | ||||||
|         tokens: [POLYGON_TOKENS.WBTC, POLYGON_TOKENS.WETH], |  | ||||||
|         pool: CURVE_V2_POLYGON_POOLS.atricrypto, |  | ||||||
|         gasSchedule: 300e3, |  | ||||||
|     }), |  | ||||||
|     [CURVE_V2_POLYGON_POOLS.atricrypto3]: createCurveV2MetaTriPool({ |     [CURVE_V2_POLYGON_POOLS.atricrypto3]: createCurveV2MetaTriPool({ | ||||||
|         tokens: [POLYGON_TOKENS.WBTC, POLYGON_TOKENS.WETH], |         tokens: [POLYGON_TOKENS.WBTC, POLYGON_TOKENS.WETH], | ||||||
|         pool: CURVE_V2_POLYGON_POOLS.atricrypto3, |         pool: CURVE_V2_POLYGON_POOLS.atricrypto3, | ||||||
| @@ -1143,6 +1323,16 @@ export const CURVE_AVALANCHE_INFOS: { [name: string]: CurveInfo } = { | |||||||
|         pool: CURVE_AVALANCHE_POOLS.aave, |         pool: CURVE_AVALANCHE_POOLS.aave, | ||||||
|         gasSchedule: 150e3, |         gasSchedule: 150e3, | ||||||
|     }), |     }), | ||||||
|  |     [CURVE_AVALANCHE_POOLS.mim]: createCurveExchangePool({ | ||||||
|  |         tokens: [AVALANCHE_TOKENS.MIM, AVALANCHE_TOKENS.USDT, AVALANCHE_TOKENS.USDC], | ||||||
|  |         pool: CURVE_AVALANCHE_POOLS.mim, | ||||||
|  |         gasSchedule: 150e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_AVALANCHE_POOLS.USDC]: createCurveExchangePool({ | ||||||
|  |         tokens: [AVALANCHE_TOKENS.USDC, AVALANCHE_TOKENS.nUSDC], | ||||||
|  |         pool: CURVE_AVALANCHE_POOLS.USDC, | ||||||
|  |         gasSchedule: 150e3, | ||||||
|  |     }), | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_AVALANCHE_INFOS: { [name: string]: CurveInfo } = { | export const CURVE_V2_AVALANCHE_INFOS: { [name: string]: CurveInfo } = { | ||||||
| @@ -1180,6 +1370,26 @@ export const CURVE_FANTOM_INFOS: { [name: string]: CurveInfo } = { | |||||||
|         pool: CURVE_FANTOM_POOLS.fUSDT, |         pool: CURVE_FANTOM_POOLS.fUSDT, | ||||||
|         gasSchedule: 587e3, |         gasSchedule: 587e3, | ||||||
|     }), |     }), | ||||||
|  |     [CURVE_FANTOM_POOLS.tri_v2]: createCurveExchangePool({ | ||||||
|  |         tokens: [FANTOM_TOKENS.MIM, FANTOM_TOKENS.fUSDT, FANTOM_TOKENS.USDC], | ||||||
|  |         pool: CURVE_FANTOM_POOLS.tri_v2, | ||||||
|  |         gasSchedule: 176e3, | ||||||
|  |     }), | ||||||
|  |     ['aave_exchangeunderlying']: createCurveExchangeUnderlyingPool({ | ||||||
|  |         tokens: [FANTOM_TOKENS.DAI, FANTOM_TOKENS.USDC, FANTOM_TOKENS.fUSDT], | ||||||
|  |         pool: CURVE_FANTOM_POOLS.geist, | ||||||
|  |         gasSchedule: 850e3, | ||||||
|  |     }), | ||||||
|  |     ['aave_exchange']: createCurveExchangePool({ | ||||||
|  |         tokens: [FANTOM_TOKENS.gDAI, FANTOM_TOKENS.gUSDC, FANTOM_TOKENS.gfUSDT], | ||||||
|  |         pool: CURVE_FANTOM_POOLS.geist, | ||||||
|  |         gasSchedule: 150e3, | ||||||
|  |     }), | ||||||
|  |     [CURVE_FANTOM_POOLS.FRAX_twoPool]: createCurveMetaTwoPoolFantom({ | ||||||
|  |         tokens: [FANTOM_TOKENS.FRAX], | ||||||
|  |         pool: CURVE_FANTOM_POOLS.FRAX_twoPool, | ||||||
|  |         gasSchedule: 411e3, | ||||||
|  |     }), | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const CURVE_V2_FANTOM_INFOS: { [name: string]: CurveInfo } = { | export const CURVE_V2_FANTOM_INFOS: { [name: string]: CurveInfo } = { | ||||||
| @@ -1190,6 +1400,14 @@ export const CURVE_V2_FANTOM_INFOS: { [name: string]: CurveInfo } = { | |||||||
|     }), |     }), | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | export const CURVE_OPTIMISM_INFOS: { [name: string]: CurveInfo } = { | ||||||
|  |     [CURVE_OPTIMISM_POOLS.tri]: createCurveExchangePool({ | ||||||
|  |         tokens: [OPTIMISM_TOKENS.DAI, OPTIMISM_TOKENS.USDC, OPTIMISM_TOKENS.USDT], | ||||||
|  |         pool: CURVE_OPTIMISM_POOLS.tri, | ||||||
|  |         gasSchedule: 150e3, | ||||||
|  |     }), | ||||||
|  | }; | ||||||
|  |  | ||||||
| export const SWERVE_MAINNET_INFOS: { [name: string]: CurveInfo } = { | export const SWERVE_MAINNET_INFOS: { [name: string]: CurveInfo } = { | ||||||
|     [SWERVE_POOLS.y]: createCurveExchangePool({ |     [SWERVE_POOLS.y]: createCurveExchangePool({ | ||||||
|         tokens: [MAINNET_TOKENS.DAI, MAINNET_TOKENS.USDC, MAINNET_TOKENS.USDT, MAINNET_TOKENS.TUSD], |         tokens: [MAINNET_TOKENS.DAI, MAINNET_TOKENS.USDC, MAINNET_TOKENS.USDT, MAINNET_TOKENS.TUSD], | ||||||
| @@ -1343,6 +1561,87 @@ export const NERVE_BSC_INFOS: { [name: string]: CurveInfo } = { | |||||||
|     }, |     }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_BSC_INFOS: { [name: string]: CurveInfo } = { | ||||||
|  |     [SYNAPSE_BSC_POOLS.nUSDLP]: { | ||||||
|  |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
|  |         sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap, | ||||||
|  |         buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |         poolAddress: SYNAPSE_BSC_POOLS.nUSDLP, | ||||||
|  |         tokens: [BSC_TOKENS.nUSD, BSC_TOKENS.BUSD, BSC_TOKENS.USDC, BSC_TOKENS.USDT], | ||||||
|  |         metaTokens: undefined, | ||||||
|  |         gasSchedule: 140e3, | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_FANTOM_INFOS: { [name: string]: CurveInfo } = { | ||||||
|  |     [SYNAPSE_FANTOM_POOLS.nUSDLP]: { | ||||||
|  |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
|  |         sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap, | ||||||
|  |         buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |         poolAddress: SYNAPSE_FANTOM_POOLS.nUSDLP, | ||||||
|  |         tokens: [FANTOM_TOKENS.nUSD, FANTOM_TOKENS.MIM, FANTOM_TOKENS.USDC, FANTOM_TOKENS.fUSDT], | ||||||
|  |         metaTokens: undefined, | ||||||
|  |         gasSchedule: 140e3, | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_MAINNET_INFOS: { [name: string]: CurveInfo } = { | ||||||
|  |     [SYNAPSE_MAINNET_POOLS.nUSDLP]: { | ||||||
|  |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
|  |         sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap, | ||||||
|  |         buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |         poolAddress: SYNAPSE_MAINNET_POOLS.nUSDLP, | ||||||
|  |         tokens: [MAINNET_TOKENS.DAI, MAINNET_TOKENS.USDC, MAINNET_TOKENS.USDT], | ||||||
|  |         metaTokens: undefined, | ||||||
|  |         gasSchedule: 140e3, | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_OPTIMISM_INFOS: { [name: string]: CurveInfo } = { | ||||||
|  |     [SYNAPSE_OPTIMISM_POOLS.nETHLP]: { | ||||||
|  |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
|  |         sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap, | ||||||
|  |         buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |         poolAddress: SYNAPSE_OPTIMISM_POOLS.nETHLP, | ||||||
|  |         tokens: [OPTIMISM_TOKENS.nETH, OPTIMISM_TOKENS.sWETH], | ||||||
|  |         metaTokens: undefined, | ||||||
|  |         gasSchedule: 140e3, | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_POLYGON_INFOS: { [name: string]: CurveInfo } = { | ||||||
|  |     [SYNAPSE_POLYGON_POOLS.nUSDLP]: { | ||||||
|  |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
|  |         sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap, | ||||||
|  |         buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |         poolAddress: SYNAPSE_POLYGON_POOLS.nUSDLP, | ||||||
|  |         tokens: [POLYGON_TOKENS.nUSD, POLYGON_TOKENS.DAI, POLYGON_TOKENS.USDC, POLYGON_TOKENS.USDT], | ||||||
|  |         metaTokens: undefined, | ||||||
|  |         gasSchedule: 140e3, | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | export const SYNAPSE_AVALANCHE_INFOS: { [name: string]: CurveInfo } = { | ||||||
|  |     [SYNAPSE_AVALANCHE_POOLS.nUSDLP]: { | ||||||
|  |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
|  |         sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap, | ||||||
|  |         buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |         poolAddress: SYNAPSE_AVALANCHE_POOLS.nUSDLP, | ||||||
|  |         tokens: [AVALANCHE_TOKENS.nUSD, AVALANCHE_TOKENS.DAI, AVALANCHE_TOKENS.USDC, AVALANCHE_TOKENS.USDT], | ||||||
|  |         metaTokens: undefined, | ||||||
|  |         gasSchedule: 140e3, | ||||||
|  |     }, | ||||||
|  |     [SYNAPSE_AVALANCHE_POOLS.nETHLP]: { | ||||||
|  |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
|  |         sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap, | ||||||
|  |         buyQuoteFunctionSelector: CurveFunctionSelectors.None, | ||||||
|  |         poolAddress: SYNAPSE_AVALANCHE_POOLS.nETHLP, | ||||||
|  |         tokens: [AVALANCHE_TOKENS.nETH, AVALANCHE_TOKENS.aWETH], | ||||||
|  |         metaTokens: undefined, | ||||||
|  |         gasSchedule: 140e3, | ||||||
|  |     }, | ||||||
|  | }; | ||||||
|  |  | ||||||
| export const FIREBIRDONESWAP_BSC_INFOS: { [name: string]: CurveInfo } = { | export const FIREBIRDONESWAP_BSC_INFOS: { [name: string]: CurveInfo } = { | ||||||
|     [FIREBIRDONESWAP_BSC_POOLS.oneswap]: { |     [FIREBIRDONESWAP_BSC_POOLS.oneswap]: { | ||||||
|         exchangeFunctionSelector: CurveFunctionSelectors.swap, |         exchangeFunctionSelector: CurveFunctionSelectors.swap, | ||||||
| @@ -1982,6 +2281,7 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = { | |||||||
|     [ERC20BridgeSource.Swerve]: fillData => (fillData as CurveFillData).pool.gasSchedule, |     [ERC20BridgeSource.Swerve]: fillData => (fillData as CurveFillData).pool.gasSchedule, | ||||||
|     [ERC20BridgeSource.SnowSwap]: fillData => (fillData as CurveFillData).pool.gasSchedule, |     [ERC20BridgeSource.SnowSwap]: fillData => (fillData as CurveFillData).pool.gasSchedule, | ||||||
|     [ERC20BridgeSource.Nerve]: fillData => (fillData as CurveFillData).pool.gasSchedule, |     [ERC20BridgeSource.Nerve]: fillData => (fillData as CurveFillData).pool.gasSchedule, | ||||||
|  |     [ERC20BridgeSource.Synapse]: fillData => (fillData as CurveFillData).pool.gasSchedule, | ||||||
|     [ERC20BridgeSource.Belt]: fillData => (fillData as CurveFillData).pool.gasSchedule, |     [ERC20BridgeSource.Belt]: fillData => (fillData as CurveFillData).pool.gasSchedule, | ||||||
|     [ERC20BridgeSource.Ellipsis]: fillData => (fillData as CurveFillData).pool.gasSchedule, |     [ERC20BridgeSource.Ellipsis]: fillData => (fillData as CurveFillData).pool.gasSchedule, | ||||||
|     [ERC20BridgeSource.Smoothy]: fillData => (fillData as CurveFillData).pool.gasSchedule, |     [ERC20BridgeSource.Smoothy]: fillData => (fillData as CurveFillData).pool.gasSchedule, | ||||||
|   | |||||||
| @@ -134,6 +134,8 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s | |||||||
|             return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'BakerySwap'); |             return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'BakerySwap'); | ||||||
|         case ERC20BridgeSource.Nerve: |         case ERC20BridgeSource.Nerve: | ||||||
|             return encodeBridgeSourceId(BridgeProtocol.Nerve, 'Nerve'); |             return encodeBridgeSourceId(BridgeProtocol.Nerve, 'Nerve'); | ||||||
|  |         case ERC20BridgeSource.Synapse: | ||||||
|  |             return encodeBridgeSourceId(BridgeProtocol.Nerve, 'Synapse'); | ||||||
|         case ERC20BridgeSource.Belt: |         case ERC20BridgeSource.Belt: | ||||||
|             return encodeBridgeSourceId(BridgeProtocol.Curve, 'Belt'); |             return encodeBridgeSourceId(BridgeProtocol.Curve, 'Belt'); | ||||||
|         case ERC20BridgeSource.Ellipsis: |         case ERC20BridgeSource.Ellipsis: | ||||||
| @@ -226,6 +228,7 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder | |||||||
|         case ERC20BridgeSource.Swerve: |         case ERC20BridgeSource.Swerve: | ||||||
|         case ERC20BridgeSource.SnowSwap: |         case ERC20BridgeSource.SnowSwap: | ||||||
|         case ERC20BridgeSource.Nerve: |         case ERC20BridgeSource.Nerve: | ||||||
|  |         case ERC20BridgeSource.Synapse: | ||||||
|         case ERC20BridgeSource.Belt: |         case ERC20BridgeSource.Belt: | ||||||
|         case ERC20BridgeSource.Ellipsis: |         case ERC20BridgeSource.Ellipsis: | ||||||
|         case ERC20BridgeSource.Smoothy: |         case ERC20BridgeSource.Smoothy: | ||||||
| @@ -463,6 +466,7 @@ export const BRIDGE_ENCODERS: { | |||||||
|     [ERC20BridgeSource.Swerve]: curveEncoder, |     [ERC20BridgeSource.Swerve]: curveEncoder, | ||||||
|     [ERC20BridgeSource.SnowSwap]: curveEncoder, |     [ERC20BridgeSource.SnowSwap]: curveEncoder, | ||||||
|     [ERC20BridgeSource.Nerve]: curveEncoder, |     [ERC20BridgeSource.Nerve]: curveEncoder, | ||||||
|  |     [ERC20BridgeSource.Synapse]: curveEncoder, | ||||||
|     [ERC20BridgeSource.Belt]: curveEncoder, |     [ERC20BridgeSource.Belt]: curveEncoder, | ||||||
|     [ERC20BridgeSource.Ellipsis]: curveEncoder, |     [ERC20BridgeSource.Ellipsis]: curveEncoder, | ||||||
|     [ERC20BridgeSource.Smoothy]: curveEncoder, |     [ERC20BridgeSource.Smoothy]: curveEncoder, | ||||||
|   | |||||||
| @@ -1342,6 +1342,7 @@ export class SamplerOperations { | |||||||
|                     case ERC20BridgeSource.Swerve: |                     case ERC20BridgeSource.Swerve: | ||||||
|                     case ERC20BridgeSource.SnowSwap: |                     case ERC20BridgeSource.SnowSwap: | ||||||
|                     case ERC20BridgeSource.Nerve: |                     case ERC20BridgeSource.Nerve: | ||||||
|  |                     case ERC20BridgeSource.Synapse: | ||||||
|                     case ERC20BridgeSource.Belt: |                     case ERC20BridgeSource.Belt: | ||||||
|                     case ERC20BridgeSource.Ellipsis: |                     case ERC20BridgeSource.Ellipsis: | ||||||
|                     case ERC20BridgeSource.Saddle: |                     case ERC20BridgeSource.Saddle: | ||||||
| @@ -1647,6 +1648,7 @@ export class SamplerOperations { | |||||||
|                     case ERC20BridgeSource.Swerve: |                     case ERC20BridgeSource.Swerve: | ||||||
|                     case ERC20BridgeSource.SnowSwap: |                     case ERC20BridgeSource.SnowSwap: | ||||||
|                     case ERC20BridgeSource.Nerve: |                     case ERC20BridgeSource.Nerve: | ||||||
|  |                     case ERC20BridgeSource.Synapse: | ||||||
|                     case ERC20BridgeSource.Belt: |                     case ERC20BridgeSource.Belt: | ||||||
|                     case ERC20BridgeSource.Ellipsis: |                     case ERC20BridgeSource.Ellipsis: | ||||||
|                     case ERC20BridgeSource.Saddle: |                     case ERC20BridgeSource.Saddle: | ||||||
|   | |||||||
| @@ -70,6 +70,7 @@ export enum ERC20BridgeSource { | |||||||
|     ShibaSwap = 'ShibaSwap', |     ShibaSwap = 'ShibaSwap', | ||||||
|     AaveV2 = 'Aave_V2', |     AaveV2 = 'Aave_V2', | ||||||
|     Compound = 'Compound', |     Compound = 'Compound', | ||||||
|  |     Synapse = 'Synapse', | ||||||
|     // BSC only |     // BSC only | ||||||
|     PancakeSwap = 'PancakeSwap', |     PancakeSwap = 'PancakeSwap', | ||||||
|     PancakeSwapV2 = 'PancakeSwap_V2', |     PancakeSwapV2 = 'PancakeSwap_V2', | ||||||
| @@ -115,7 +116,7 @@ export type SourcesWithPoolsCache = | |||||||
| export enum CurveFunctionSelectors { | export enum CurveFunctionSelectors { | ||||||
|     None = '0x00000000', |     None = '0x00000000', | ||||||
|     exchange = '0x3df02124', |     exchange = '0x3df02124', | ||||||
|     exchange_underlying = '0xa6417ed6', |     exchange_underlying = '0xa6417ed6', // exchange_underlying(int128 i, int128 j, uint256 dx, uint256 min_dy) | ||||||
|     get_dy_underlying = '0x07211ef7', |     get_dy_underlying = '0x07211ef7', | ||||||
|     get_dx_underlying = '0x0e71d1b9', |     get_dx_underlying = '0x0e71d1b9', | ||||||
|     get_dy = '0x5e0d443f', // get_dy(int128,int128,uint256) |     get_dy = '0x5e0d443f', // get_dy(int128,int128,uint256) | ||||||
| @@ -130,7 +131,7 @@ export enum CurveFunctionSelectors { | |||||||
|     // Smoothy |     // Smoothy | ||||||
|     swap_uint256 = '0x5673b02d', // swap(uint256,uint256,uint256,uint256) |     swap_uint256 = '0x5673b02d', // swap(uint256,uint256,uint256,uint256) | ||||||
|     get_swap_amount = '0x45cf2ef6', // getSwapAmount(uint256,uint256,uint256) |     get_swap_amount = '0x45cf2ef6', // getSwapAmount(uint256,uint256,uint256) | ||||||
|     // Nerve BSC, Saddle Mainnet |     // Nerve BSC, Saddle Mainnet, Synapse | ||||||
|     swap = '0x91695586', // swap(uint8,uint8,uint256,uint256,uint256) |     swap = '0x91695586', // swap(uint8,uint8,uint256,uint256,uint256) | ||||||
|     calculateSwap = '0xa95b089f', // calculateSwap(uint8,uint8,uint256) |     calculateSwap = '0xa95b089f', // calculateSwap(uint8,uint8,uint256) | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user