From 1f41fe6a206e7ff41c0310c8b185626b33019594 Mon Sep 17 00:00:00 2001 From: Megan <77161947+fluffypill0w@users.noreply.github.com> Date: Thu, 2 Jun 2022 19:11:25 +0200 Subject: [PATCH] feat/add MeshSwap on Polygon [TKR-374] (#491) * Added MeshSwap on Polygon * Updated changelog --- packages/asset-swapper/CHANGELOG.json | 4 ++++ .../market_operation_utils/bridge_source_utils.ts | 6 +++++- .../src/utils/market_operation_utils/constants.ts | 10 ++++++++++ .../src/utils/market_operation_utils/orders.ts | 4 ++++ .../utils/market_operation_utils/sampler_operations.ts | 2 ++ .../src/utils/market_operation_utils/types.ts | 1 + 6 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/asset-swapper/CHANGELOG.json b/packages/asset-swapper/CHANGELOG.json index 2afaeecc0f..53f33d05b1 100644 --- a/packages/asset-swapper/CHANGELOG.json +++ b/packages/asset-swapper/CHANGELOG.json @@ -9,6 +9,10 @@ { "note": "Offboard/clean up Oasis, CoFix, and legacy Kyber", "pr": 482 + }, + { + "note": "Add MeshSwap on Polygon", + "pr": 491 } ] }, diff --git a/packages/asset-swapper/src/utils/market_operation_utils/bridge_source_utils.ts b/packages/asset-swapper/src/utils/market_operation_utils/bridge_source_utils.ts index 82af9bafd0..c438c49aa0 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/bridge_source_utils.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/bridge_source_utils.ts @@ -29,6 +29,7 @@ import { JETSWAP_ROUTER_BY_CHAIN_ID, JULSWAP_ROUTER_BY_CHAIN_ID, MAX_DODOV2_POOLS_QUERIED, + MESHSWAP_ROUTER_BY_CHAIN_ID, MOBIUSMONEY_CELO_INFOS, MORPHEUSSWAP_ROUTER_BY_CHAIN_ID, MSTABLE_POOLS_BY_CHAIN_ID, @@ -543,7 +544,8 @@ export function uniswapV2LikeRouterAddress( | ERC20BridgeSource.SpookySwap | ERC20BridgeSource.SpiritSwap | ERC20BridgeSource.BiSwap - | ERC20BridgeSource.Yoshi, + | ERC20BridgeSource.Yoshi + | ERC20BridgeSource.MeshSwap, ): string { switch (source) { case ERC20BridgeSource.UniswapV2: @@ -596,6 +598,8 @@ export function uniswapV2LikeRouterAddress( return BISWAP_ROUTER_BY_CHAIN_ID[chainId]; case ERC20BridgeSource.Yoshi: return YOSHI_ROUTER_BY_CHAIN_ID[chainId]; + case ERC20BridgeSource.MeshSwap: + return MESHSWAP_ROUTER_BY_CHAIN_ID[chainId]; default: throw new Error(`Unknown UniswapV2 like source ${source}`); } diff --git a/packages/asset-swapper/src/utils/market_operation_utils/constants.ts b/packages/asset-swapper/src/utils/market_operation_utils/constants.ts index 373bb919fa..2a5b0c73a1 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/constants.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/constants.ts @@ -170,6 +170,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId( ERC20BridgeSource.AaveV2, ERC20BridgeSource.UniswapV3, ERC20BridgeSource.Synapse, + ERC20BridgeSource.MeshSwap, ]), [ChainId.Avalanche]: new SourceFilters([ ERC20BridgeSource.MultiHop, @@ -314,6 +315,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId( ERC20BridgeSource.AaveV2, ERC20BridgeSource.UniswapV3, ERC20BridgeSource.Synapse, + ERC20BridgeSource.MeshSwap, ]), [ChainId.Avalanche]: new SourceFilters([ ERC20BridgeSource.MultiHop, @@ -2294,6 +2296,13 @@ export const POLYDEX_ROUTER_BY_CHAIN_ID = valueByChainId( NULL_ADDRESS, ); +export const MESHSWAP_ROUTER_BY_CHAIN_ID = valueByChainId( + { + [ChainId.Polygon]: '0x10f4a785f458bc144e3706575924889954946639', + }, + NULL_ADDRESS, +); + export const JETSWAP_ROUTER_BY_CHAIN_ID = valueByChainId( { [ChainId.BSC]: '0xbe65b8f75b9f20f4c522e0067a3887fada714800', @@ -2585,6 +2594,7 @@ export const DEFAULT_GAS_SCHEDULE: Required = { [ERC20BridgeSource.Dfyn]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.Polydex]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.JetSwap]: uniswapV2CloneGasSchedule, + [ERC20BridgeSource.MeshSwap]: uniswapV2CloneGasSchedule, // // Avalanche diff --git a/packages/asset-swapper/src/utils/market_operation_utils/orders.ts b/packages/asset-swapper/src/utils/market_operation_utils/orders.ts index 5c6b72f3db..f3055a5c06 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/orders.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/orders.ts @@ -206,6 +206,8 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s return encodeBridgeSourceId(BridgeProtocol.GMX, 'GMX'); case ERC20BridgeSource.Platypus: return encodeBridgeSourceId(BridgeProtocol.Platypus, 'Platypus'); + case ERC20BridgeSource.MeshSwap: + return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'MeshSwap'); default: throw new Error(AggregationError.NoBridgeForSource); } @@ -297,6 +299,7 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.Yoshi: + case ERC20BridgeSource.MeshSwap: const uniswapV2FillData = (order as OptimizedMarketBridgeOrder).fillData; bridgeData = encoder.encode([uniswapV2FillData.router, uniswapV2FillData.tokenAddressPath]); break; @@ -517,6 +520,7 @@ export const BRIDGE_ENCODERS: { [ERC20BridgeSource.MorpheusSwap]: routerAddressPathEncoder, [ERC20BridgeSource.BiSwap]: routerAddressPathEncoder, [ERC20BridgeSource.Yoshi]: routerAddressPathEncoder, + [ERC20BridgeSource.MeshSwap]: routerAddressPathEncoder, // Avalanche [ERC20BridgeSource.GMX]: gmxAddressPathEncoder, [ERC20BridgeSource.Platypus]: platypusAddressPathEncoder, diff --git a/packages/asset-swapper/src/utils/market_operation_utils/sampler_operations.ts b/packages/asset-swapper/src/utils/market_operation_utils/sampler_operations.ts index d5c9edb0a8..d77ee9d5ff 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/sampler_operations.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/sampler_operations.ts @@ -1415,6 +1415,7 @@ export class SamplerOperations { case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.BiSwap: + case ERC20BridgeSource.MeshSwap: const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); if (!isValidAddress(uniLikeRouter)) { return []; @@ -1748,6 +1749,7 @@ export class SamplerOperations { case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.BiSwap: + case ERC20BridgeSource.MeshSwap: const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); if (!isValidAddress(uniLikeRouter)) { return []; diff --git a/packages/asset-swapper/src/utils/market_operation_utils/types.ts b/packages/asset-swapper/src/utils/market_operation_utils/types.ts index 60d026a981..d4f8228147 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/types.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/types.ts @@ -88,6 +88,7 @@ export enum ERC20BridgeSource { FirebirdOneSwap = 'FirebirdOneSwap', JetSwap = 'JetSwap', IronSwap = 'IronSwap', + MeshSwap = 'MeshSwap', // Avalanche Pangolin = 'Pangolin', TraderJoe = 'TraderJoe',