diff --git a/packages/asset-swapper/CHANGELOG.json b/packages/asset-swapper/CHANGELOG.json index 4f1cf225db..43af8fd9b6 100644 --- a/packages/asset-swapper/CHANGELOG.json +++ b/packages/asset-swapper/CHANGELOG.json @@ -1,4 +1,17 @@ [ + { + "version": "16.62.0", + "changes": [ + { + "note": "Add MDEX on BSC", + "pr": 496 + }, + { + "note": "Add KnightSwap on BSC", + "pr": 498 + } + ] + } { "version": "16.61.0", "changes": [ @@ -13,10 +26,6 @@ { "note": "Add MeshSwap on Polygon", "pr": 491 - }, - { - "note": "Add MDEX on BSC", - "pr": 496 } ], "timestamp": 1654284040 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 a485346a9a..73b41b8e15 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 @@ -8,6 +8,7 @@ import { BELT_BSC_INFOS, BISWAP_ROUTER_BY_CHAIN_ID, MDEX_ROUTER_BY_CHAIN_ID, + KNIGHTSWAP_ROUTER_BY_CHAIN_ID, CAFESWAP_ROUTER_BY_CHAIN_ID, CHEESESWAP_ROUTER_BY_CHAIN_ID, COMETHSWAP_ROUTER_BY_CHAIN_ID, @@ -547,6 +548,7 @@ export function uniswapV2LikeRouterAddress( | ERC20BridgeSource.BiSwap | ERC20BridgeSource.Yoshi | ERC20BridgeSource.MDex + | ERC20BridgeSource.KnightSwap | ERC20BridgeSource.MeshSwap, ): string { switch (source) { @@ -604,6 +606,8 @@ export function uniswapV2LikeRouterAddress( return MESHSWAP_ROUTER_BY_CHAIN_ID[chainId]; case ERC20BridgeSource.MDex: return MDEX_ROUTER_BY_CHAIN_ID[chainId]; + case ERC20BridgeSource.KnightSwap: + return KNIGHTSWAP_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 cc934dd22d..219d5f7b89 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/constants.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/constants.ts @@ -148,6 +148,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId( ERC20BridgeSource.KyberDmm, ERC20BridgeSource.BiSwap, ERC20BridgeSource.MDex, + ERC20BridgeSource.KnightSwap, ]), [ChainId.Polygon]: new SourceFilters([ ERC20BridgeSource.SushiSwap, @@ -295,6 +296,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId( ERC20BridgeSource.KyberDmm, ERC20BridgeSource.BiSwap, ERC20BridgeSource.MDex, + ERC20BridgeSource.KnightSwap, ]), [ChainId.Polygon]: new SourceFilters([ ERC20BridgeSource.SushiSwap, @@ -1982,6 +1984,13 @@ export const MDEX_ROUTER_BY_CHAIN_ID = valueByChainId( NULL_ADDRESS, ); +export const KNIGHTSWAP_ROUTER_BY_CHAIN_ID = valueByChainId( + { + [ChainId.BSC]: '0x05E61E0cDcD2170a76F9568a110CEe3AFdD6c46f', + }, + NULL_ADDRESS, +); + export const MOONISWAP_REGISTRIES_BY_CHAIN_ID = valueByChainId( { [ChainId.Mainnet]: ['0xbaf9a5d4b0052359326a6cdab54babaa3a3a9643'], @@ -2490,6 +2499,7 @@ export const DEFAULT_GAS_SCHEDULE: Required = { [ERC20BridgeSource.ShibaSwap]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.BiSwap]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.MDex]: uniswapV2CloneGasSchedule, + [ERC20BridgeSource.KnightSwap]: uniswapV2CloneGasSchedule, [ERC20BridgeSource.Balancer]: () => 120e3, [ERC20BridgeSource.BalancerV2]: (fillData?: FillData) => { return 100e3 + ((fillData as BalancerV2BatchSwapFillData).swapSteps.length - 1) * 50e3; 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 b42e781ae4..763a3b44b2 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/orders.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/orders.ts @@ -204,6 +204,8 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'BiSwap'); case ERC20BridgeSource.MDex: return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'MDex'); + case ERC20BridgeSource.KnightSwap: + return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'KnightSwap'); case ERC20BridgeSource.GMX: return encodeBridgeSourceId(BridgeProtocol.GMX, 'GMX'); case ERC20BridgeSource.Platypus: @@ -303,6 +305,7 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.MDex: + case ERC20BridgeSource.KnightSwap: case ERC20BridgeSource.Yoshi: case ERC20BridgeSource.MeshSwap: const uniswapV2FillData = (order as OptimizedMarketBridgeOrder).fillData; @@ -529,6 +532,7 @@ export const BRIDGE_ENCODERS: { [ERC20BridgeSource.MorpheusSwap]: routerAddressPathEncoder, [ERC20BridgeSource.BiSwap]: routerAddressPathEncoder, [ERC20BridgeSource.MDex]: routerAddressPathEncoder, + [ERC20BridgeSource.KnightSwap]: routerAddressPathEncoder, [ERC20BridgeSource.Yoshi]: routerAddressPathEncoder, [ERC20BridgeSource.MeshSwap]: routerAddressPathEncoder, // Avalanche 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 3df317d690..42bb17575b 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 @@ -1449,6 +1449,7 @@ export class SamplerOperations { case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.MDex: + case ERC20BridgeSource.KnightSwap: case ERC20BridgeSource.MeshSwap: const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); if (!isValidAddress(uniLikeRouter)) { @@ -1792,6 +1793,7 @@ export class SamplerOperations { case ERC20BridgeSource.MorpheusSwap: case ERC20BridgeSource.BiSwap: case ERC20BridgeSource.MDex: + case ERC20BridgeSource.KnightSwap: case ERC20BridgeSource.MeshSwap: const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source); if (!isValidAddress(uniLikeRouter)) { 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 331b6addd5..238f8cfa39 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/types.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/types.ts @@ -72,6 +72,7 @@ export enum ERC20BridgeSource { PancakeSwapV2 = 'PancakeSwap_V2', BiSwap = 'BiSwap', MDex = 'MDex', + KnightSwap = 'KnightSwap', BakerySwap = 'BakerySwap', Nerve = 'Nerve', Belt = 'Belt',