feat/add MeshSwap on Polygon [TKR-374] (#491)

* Added MeshSwap on Polygon

* Updated changelog
This commit is contained in:
Megan 2022-06-02 19:11:25 +02:00 committed by GitHub
parent 7f4080e0a2
commit 1f41fe6a20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 26 additions and 1 deletions

View File

@ -9,6 +9,10 @@
{ {
"note": "Offboard/clean up Oasis, CoFix, and legacy Kyber", "note": "Offboard/clean up Oasis, CoFix, and legacy Kyber",
"pr": 482 "pr": 482
},
{
"note": "Add MeshSwap on Polygon",
"pr": 491
} }
] ]
}, },

View File

@ -29,6 +29,7 @@ import {
JETSWAP_ROUTER_BY_CHAIN_ID, JETSWAP_ROUTER_BY_CHAIN_ID,
JULSWAP_ROUTER_BY_CHAIN_ID, JULSWAP_ROUTER_BY_CHAIN_ID,
MAX_DODOV2_POOLS_QUERIED, MAX_DODOV2_POOLS_QUERIED,
MESHSWAP_ROUTER_BY_CHAIN_ID,
MOBIUSMONEY_CELO_INFOS, MOBIUSMONEY_CELO_INFOS,
MORPHEUSSWAP_ROUTER_BY_CHAIN_ID, MORPHEUSSWAP_ROUTER_BY_CHAIN_ID,
MSTABLE_POOLS_BY_CHAIN_ID, MSTABLE_POOLS_BY_CHAIN_ID,
@ -543,7 +544,8 @@ export function uniswapV2LikeRouterAddress(
| ERC20BridgeSource.SpookySwap | ERC20BridgeSource.SpookySwap
| ERC20BridgeSource.SpiritSwap | ERC20BridgeSource.SpiritSwap
| ERC20BridgeSource.BiSwap | ERC20BridgeSource.BiSwap
| ERC20BridgeSource.Yoshi, | ERC20BridgeSource.Yoshi
| ERC20BridgeSource.MeshSwap,
): string { ): string {
switch (source) { switch (source) {
case ERC20BridgeSource.UniswapV2: case ERC20BridgeSource.UniswapV2:
@ -596,6 +598,8 @@ export function uniswapV2LikeRouterAddress(
return BISWAP_ROUTER_BY_CHAIN_ID[chainId]; return BISWAP_ROUTER_BY_CHAIN_ID[chainId];
case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.Yoshi:
return YOSHI_ROUTER_BY_CHAIN_ID[chainId]; return YOSHI_ROUTER_BY_CHAIN_ID[chainId];
case ERC20BridgeSource.MeshSwap:
return MESHSWAP_ROUTER_BY_CHAIN_ID[chainId];
default: default:
throw new Error(`Unknown UniswapV2 like source ${source}`); throw new Error(`Unknown UniswapV2 like source ${source}`);
} }

View File

@ -170,6 +170,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.AaveV2, ERC20BridgeSource.AaveV2,
ERC20BridgeSource.UniswapV3, ERC20BridgeSource.UniswapV3,
ERC20BridgeSource.Synapse, ERC20BridgeSource.Synapse,
ERC20BridgeSource.MeshSwap,
]), ]),
[ChainId.Avalanche]: new SourceFilters([ [ChainId.Avalanche]: new SourceFilters([
ERC20BridgeSource.MultiHop, ERC20BridgeSource.MultiHop,
@ -314,6 +315,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
ERC20BridgeSource.AaveV2, ERC20BridgeSource.AaveV2,
ERC20BridgeSource.UniswapV3, ERC20BridgeSource.UniswapV3,
ERC20BridgeSource.Synapse, ERC20BridgeSource.Synapse,
ERC20BridgeSource.MeshSwap,
]), ]),
[ChainId.Avalanche]: new SourceFilters([ [ChainId.Avalanche]: new SourceFilters([
ERC20BridgeSource.MultiHop, ERC20BridgeSource.MultiHop,
@ -2294,6 +2296,13 @@ export const POLYDEX_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
NULL_ADDRESS, NULL_ADDRESS,
); );
export const MESHSWAP_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
{
[ChainId.Polygon]: '0x10f4a785f458bc144e3706575924889954946639',
},
NULL_ADDRESS,
);
export const JETSWAP_ROUTER_BY_CHAIN_ID = valueByChainId<string>( export const JETSWAP_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
{ {
[ChainId.BSC]: '0xbe65b8f75b9f20f4c522e0067a3887fada714800', [ChainId.BSC]: '0xbe65b8f75b9f20f4c522e0067a3887fada714800',
@ -2585,6 +2594,7 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = {
[ERC20BridgeSource.Dfyn]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.Dfyn]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.Polydex]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.Polydex]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.JetSwap]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.JetSwap]: uniswapV2CloneGasSchedule,
[ERC20BridgeSource.MeshSwap]: uniswapV2CloneGasSchedule,
// //
// Avalanche // Avalanche

View File

@ -206,6 +206,8 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s
return encodeBridgeSourceId(BridgeProtocol.GMX, 'GMX'); return encodeBridgeSourceId(BridgeProtocol.GMX, 'GMX');
case ERC20BridgeSource.Platypus: case ERC20BridgeSource.Platypus:
return encodeBridgeSourceId(BridgeProtocol.Platypus, 'Platypus'); return encodeBridgeSourceId(BridgeProtocol.Platypus, 'Platypus');
case ERC20BridgeSource.MeshSwap:
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'MeshSwap');
default: default:
throw new Error(AggregationError.NoBridgeForSource); throw new Error(AggregationError.NoBridgeForSource);
} }
@ -297,6 +299,7 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder
case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.MorpheusSwap:
case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.BiSwap:
case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.Yoshi:
case ERC20BridgeSource.MeshSwap:
const uniswapV2FillData = (order as OptimizedMarketBridgeOrder<UniswapV2FillData>).fillData; const uniswapV2FillData = (order as OptimizedMarketBridgeOrder<UniswapV2FillData>).fillData;
bridgeData = encoder.encode([uniswapV2FillData.router, uniswapV2FillData.tokenAddressPath]); bridgeData = encoder.encode([uniswapV2FillData.router, uniswapV2FillData.tokenAddressPath]);
break; break;
@ -517,6 +520,7 @@ export const BRIDGE_ENCODERS: {
[ERC20BridgeSource.MorpheusSwap]: routerAddressPathEncoder, [ERC20BridgeSource.MorpheusSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.BiSwap]: routerAddressPathEncoder, [ERC20BridgeSource.BiSwap]: routerAddressPathEncoder,
[ERC20BridgeSource.Yoshi]: routerAddressPathEncoder, [ERC20BridgeSource.Yoshi]: routerAddressPathEncoder,
[ERC20BridgeSource.MeshSwap]: routerAddressPathEncoder,
// Avalanche // Avalanche
[ERC20BridgeSource.GMX]: gmxAddressPathEncoder, [ERC20BridgeSource.GMX]: gmxAddressPathEncoder,
[ERC20BridgeSource.Platypus]: platypusAddressPathEncoder, [ERC20BridgeSource.Platypus]: platypusAddressPathEncoder,

View File

@ -1415,6 +1415,7 @@ export class SamplerOperations {
case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.Yoshi:
case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.MorpheusSwap:
case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.BiSwap:
case ERC20BridgeSource.MeshSwap:
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
if (!isValidAddress(uniLikeRouter)) { if (!isValidAddress(uniLikeRouter)) {
return []; return [];
@ -1748,6 +1749,7 @@ export class SamplerOperations {
case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.Yoshi:
case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.MorpheusSwap:
case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.BiSwap:
case ERC20BridgeSource.MeshSwap:
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
if (!isValidAddress(uniLikeRouter)) { if (!isValidAddress(uniLikeRouter)) {
return []; return [];

View File

@ -88,6 +88,7 @@ export enum ERC20BridgeSource {
FirebirdOneSwap = 'FirebirdOneSwap', FirebirdOneSwap = 'FirebirdOneSwap',
JetSwap = 'JetSwap', JetSwap = 'JetSwap',
IronSwap = 'IronSwap', IronSwap = 'IronSwap',
MeshSwap = 'MeshSwap',
// Avalanche // Avalanche
Pangolin = 'Pangolin', Pangolin = 'Pangolin',
TraderJoe = 'TraderJoe', TraderJoe = 'TraderJoe',