add more Fantom liquidity sources
This commit is contained in:
@@ -42,6 +42,8 @@ import {
|
|||||||
SMOOTHY_BSC_INFOS,
|
SMOOTHY_BSC_INFOS,
|
||||||
SMOOTHY_MAINNET_INFOS,
|
SMOOTHY_MAINNET_INFOS,
|
||||||
SNOWSWAP_MAINNET_INFOS,
|
SNOWSWAP_MAINNET_INFOS,
|
||||||
|
SPIRITSWAP_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,
|
||||||
TRADER_JOE_ROUTER_BY_CHAIN_ID,
|
TRADER_JOE_ROUTER_BY_CHAIN_ID,
|
||||||
@@ -468,7 +470,9 @@ export function uniswapV2LikeRouterAddress(
|
|||||||
| ERC20BridgeSource.ShibaSwap
|
| ERC20BridgeSource.ShibaSwap
|
||||||
| ERC20BridgeSource.JetSwap
|
| ERC20BridgeSource.JetSwap
|
||||||
| ERC20BridgeSource.TraderJoe
|
| ERC20BridgeSource.TraderJoe
|
||||||
| ERC20BridgeSource.Pangolin,
|
| ERC20BridgeSource.Pangolin
|
||||||
|
| ERC20BridgeSource.SpookySwap
|
||||||
|
| ERC20BridgeSource.SpiritSwap,
|
||||||
): string {
|
): string {
|
||||||
switch (source) {
|
switch (source) {
|
||||||
case ERC20BridgeSource.UniswapV2:
|
case ERC20BridgeSource.UniswapV2:
|
||||||
@@ -509,6 +513,10 @@ export function uniswapV2LikeRouterAddress(
|
|||||||
return PANGOLIN_ROUTER_BY_CHAIN_ID[chainId];
|
return PANGOLIN_ROUTER_BY_CHAIN_ID[chainId];
|
||||||
case ERC20BridgeSource.TraderJoe:
|
case ERC20BridgeSource.TraderJoe:
|
||||||
return TRADER_JOE_ROUTER_BY_CHAIN_ID[chainId];
|
return TRADER_JOE_ROUTER_BY_CHAIN_ID[chainId];
|
||||||
|
case ERC20BridgeSource.SpookySwap:
|
||||||
|
return SPOOKYSWAP_ROUTER_BY_CHAIN_ID[chainId];
|
||||||
|
case ERC20BridgeSource.SpiritSwap:
|
||||||
|
return SPIRITSWAP_ROUTER_BY_CHAIN_ID[chainId];
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown UniswapV2 like source ${source}`);
|
throw new Error(`Unknown UniswapV2 like source ${source}`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,6 +167,8 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
|
|||||||
[ChainId.Fantom]: new SourceFilters([
|
[ChainId.Fantom]: new SourceFilters([
|
||||||
ERC20BridgeSource.Curve,
|
ERC20BridgeSource.Curve,
|
||||||
ERC20BridgeSource.CurveV2,
|
ERC20BridgeSource.CurveV2,
|
||||||
|
ERC20BridgeSource.SpiritSwap,
|
||||||
|
ERC20BridgeSource.SpookySwap,
|
||||||
ERC20BridgeSource.SushiSwap,
|
ERC20BridgeSource.SushiSwap,
|
||||||
]),
|
]),
|
||||||
},
|
},
|
||||||
@@ -278,6 +280,8 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
|
|||||||
[ChainId.Fantom]: new SourceFilters([
|
[ChainId.Fantom]: new SourceFilters([
|
||||||
ERC20BridgeSource.Curve,
|
ERC20BridgeSource.Curve,
|
||||||
ERC20BridgeSource.CurveV2,
|
ERC20BridgeSource.CurveV2,
|
||||||
|
ERC20BridgeSource.SpiritSwap,
|
||||||
|
ERC20BridgeSource.SpookySwap,
|
||||||
ERC20BridgeSource.SushiSwap,
|
ERC20BridgeSource.SushiSwap,
|
||||||
]),
|
]),
|
||||||
},
|
},
|
||||||
@@ -299,7 +303,7 @@ export const FEE_QUOTE_SOURCES_BY_CHAIN_ID = valueByChainId<ERC20BridgeSource[]>
|
|||||||
[ChainId.Ropsten]: [ERC20BridgeSource.UniswapV2, ERC20BridgeSource.SushiSwap],
|
[ChainId.Ropsten]: [ERC20BridgeSource.UniswapV2, ERC20BridgeSource.SushiSwap],
|
||||||
[ChainId.Polygon]: [ERC20BridgeSource.QuickSwap, ERC20BridgeSource.SushiSwap],
|
[ChainId.Polygon]: [ERC20BridgeSource.QuickSwap, ERC20BridgeSource.SushiSwap],
|
||||||
[ChainId.Avalanche]: [ERC20BridgeSource.Pangolin, ERC20BridgeSource.TraderJoe, ERC20BridgeSource.SushiSwap],
|
[ChainId.Avalanche]: [ERC20BridgeSource.Pangolin, ERC20BridgeSource.TraderJoe, ERC20BridgeSource.SushiSwap],
|
||||||
[ChainId.Fantom]: [ERC20BridgeSource.SushiSwap],
|
[ChainId.Fantom]: [ERC20BridgeSource.SpiritSwap, ERC20BridgeSource.SpookySwap, ERC20BridgeSource.SushiSwap],
|
||||||
},
|
},
|
||||||
[],
|
[],
|
||||||
);
|
);
|
||||||
@@ -1702,6 +1706,20 @@ export const TRADER_JOE_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
|
|||||||
NULL_ADDRESS,
|
NULL_ADDRESS,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const SPIRITSWAP_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
|
||||||
|
{
|
||||||
|
[ChainId.Fantom]: '0x16327e3fbdaca3bcf7e38f5af2599d2ddc33ae52',
|
||||||
|
},
|
||||||
|
NULL_ADDRESS,
|
||||||
|
);
|
||||||
|
|
||||||
|
export const SPOOKYSWAP_ROUTER_BY_CHAIN_ID = valueByChainId<string>(
|
||||||
|
{
|
||||||
|
[ChainId.Fantom]: '0xf491e7b69e4244ad4002bc14e878a34207e38c29',
|
||||||
|
},
|
||||||
|
NULL_ADDRESS,
|
||||||
|
);
|
||||||
|
|
||||||
export const VIP_ERC20_BRIDGE_SOURCES_BY_CHAIN_ID = valueByChainId<ERC20BridgeSource[]>(
|
export const VIP_ERC20_BRIDGE_SOURCES_BY_CHAIN_ID = valueByChainId<ERC20BridgeSource[]>(
|
||||||
{
|
{
|
||||||
[ChainId.Mainnet]: [ERC20BridgeSource.UniswapV2, ERC20BridgeSource.SushiSwap, ERC20BridgeSource.UniswapV3],
|
[ChainId.Mainnet]: [ERC20BridgeSource.UniswapV2, ERC20BridgeSource.SushiSwap, ERC20BridgeSource.UniswapV3],
|
||||||
@@ -1852,6 +1870,12 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = {
|
|||||||
//
|
//
|
||||||
[ERC20BridgeSource.Pangolin]: uniswapV2CloneGasSchedule,
|
[ERC20BridgeSource.Pangolin]: uniswapV2CloneGasSchedule,
|
||||||
[ERC20BridgeSource.TraderJoe]: uniswapV2CloneGasSchedule,
|
[ERC20BridgeSource.TraderJoe]: uniswapV2CloneGasSchedule,
|
||||||
|
|
||||||
|
//
|
||||||
|
// Fantom
|
||||||
|
//
|
||||||
|
[ERC20BridgeSource.SpiritSwap]: uniswapV2CloneGasSchedule,
|
||||||
|
[ERC20BridgeSource.SpookySwap]: uniswapV2CloneGasSchedule,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const DEFAULT_FEE_SCHEDULE: Required<FeeSchedule> = { ...DEFAULT_GAS_SCHEDULE };
|
export const DEFAULT_FEE_SCHEDULE: Required<FeeSchedule> = { ...DEFAULT_GAS_SCHEDULE };
|
||||||
|
|||||||
@@ -184,6 +184,10 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s
|
|||||||
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'Pangolin');
|
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'Pangolin');
|
||||||
case ERC20BridgeSource.TraderJoe:
|
case ERC20BridgeSource.TraderJoe:
|
||||||
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'TraderJoe');
|
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'TraderJoe');
|
||||||
|
case ERC20BridgeSource.SpiritSwap:
|
||||||
|
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'SpiritSwap');
|
||||||
|
case ERC20BridgeSource.SpookySwap:
|
||||||
|
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'SpookySwap');
|
||||||
default:
|
default:
|
||||||
throw new Error(AggregationError.NoBridgeForSource);
|
throw new Error(AggregationError.NoBridgeForSource);
|
||||||
}
|
}
|
||||||
@@ -260,6 +264,8 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder
|
|||||||
case ERC20BridgeSource.JetSwap:
|
case ERC20BridgeSource.JetSwap:
|
||||||
case ERC20BridgeSource.Pangolin:
|
case ERC20BridgeSource.Pangolin:
|
||||||
case ERC20BridgeSource.TraderJoe:
|
case ERC20BridgeSource.TraderJoe:
|
||||||
|
case ERC20BridgeSource.SpiritSwap:
|
||||||
|
case ERC20BridgeSource.SpookySwap:
|
||||||
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;
|
||||||
@@ -450,6 +456,8 @@ export const BRIDGE_ENCODERS: {
|
|||||||
[ERC20BridgeSource.ShibaSwap]: routerAddressPathEncoder,
|
[ERC20BridgeSource.ShibaSwap]: routerAddressPathEncoder,
|
||||||
[ERC20BridgeSource.Pangolin]: routerAddressPathEncoder,
|
[ERC20BridgeSource.Pangolin]: routerAddressPathEncoder,
|
||||||
[ERC20BridgeSource.TraderJoe]: routerAddressPathEncoder,
|
[ERC20BridgeSource.TraderJoe]: routerAddressPathEncoder,
|
||||||
|
[ERC20BridgeSource.SpiritSwap]: routerAddressPathEncoder,
|
||||||
|
[ERC20BridgeSource.SpookySwap]: routerAddressPathEncoder,
|
||||||
// BSC
|
// BSC
|
||||||
[ERC20BridgeSource.PancakeSwap]: routerAddressPathEncoder,
|
[ERC20BridgeSource.PancakeSwap]: routerAddressPathEncoder,
|
||||||
[ERC20BridgeSource.PancakeSwapV2]: routerAddressPathEncoder,
|
[ERC20BridgeSource.PancakeSwapV2]: routerAddressPathEncoder,
|
||||||
|
|||||||
@@ -1203,6 +1203,8 @@ export class SamplerOperations {
|
|||||||
case ERC20BridgeSource.JetSwap:
|
case ERC20BridgeSource.JetSwap:
|
||||||
case ERC20BridgeSource.Pangolin:
|
case ERC20BridgeSource.Pangolin:
|
||||||
case ERC20BridgeSource.TraderJoe:
|
case ERC20BridgeSource.TraderJoe:
|
||||||
|
case ERC20BridgeSource.SpiritSwap:
|
||||||
|
case ERC20BridgeSource.SpookySwap:
|
||||||
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
|
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
|
||||||
if (!isValidAddress(uniLikeRouter)) {
|
if (!isValidAddress(uniLikeRouter)) {
|
||||||
return [];
|
return [];
|
||||||
@@ -1472,6 +1474,8 @@ export class SamplerOperations {
|
|||||||
case ERC20BridgeSource.JetSwap:
|
case ERC20BridgeSource.JetSwap:
|
||||||
case ERC20BridgeSource.Pangolin:
|
case ERC20BridgeSource.Pangolin:
|
||||||
case ERC20BridgeSource.TraderJoe:
|
case ERC20BridgeSource.TraderJoe:
|
||||||
|
case ERC20BridgeSource.SpiritSwap:
|
||||||
|
case ERC20BridgeSource.SpookySwap:
|
||||||
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
|
const uniLikeRouter = uniswapV2LikeRouterAddress(this.chainId, source);
|
||||||
if (!isValidAddress(uniLikeRouter)) {
|
if (!isValidAddress(uniLikeRouter)) {
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
@@ -93,6 +93,9 @@ export enum ERC20BridgeSource {
|
|||||||
// Avalanche
|
// Avalanche
|
||||||
Pangolin = 'Pangolin',
|
Pangolin = 'Pangolin',
|
||||||
TraderJoe = 'TraderJoe',
|
TraderJoe = 'TraderJoe',
|
||||||
|
// Fantom
|
||||||
|
SpiritSwap = 'SpiritSwap',
|
||||||
|
SpookySwap = 'SpookySwap',
|
||||||
}
|
}
|
||||||
export type SourcesWithPoolsCache = ERC20BridgeSource.Balancer | ERC20BridgeSource.BalancerV2 | ERC20BridgeSource.Cream;
|
export type SourcesWithPoolsCache = ERC20BridgeSource.Balancer | ERC20BridgeSource.BalancerV2 | ERC20BridgeSource.Cream;
|
||||||
|
|
||||||
|
|||||||
@@ -406,7 +406,7 @@
|
|||||||
"maximumGasPrice": "0x0000000000000000000000000000000000000000",
|
"maximumGasPrice": "0x0000000000000000000000000000000000000000",
|
||||||
"dexForwarderBridge": "0x0000000000000000000000000000000000000000",
|
"dexForwarderBridge": "0x0000000000000000000000000000000000000000",
|
||||||
"exchangeProxyGovernor": "0xca7bab1b2d1ec7d81710b7f9e2ab4e6788930588",
|
"exchangeProxyGovernor": "0xca7bab1b2d1ec7d81710b7f9e2ab4e6788930588",
|
||||||
"exchangeProxy": "0xDEf1520C89538d9e43Aa273b7803a16F871d21e3",
|
"exchangeProxy": "0xDEF189DeAEF76E379df891899eb5A00a94cBC250",
|
||||||
"exchangeProxyTransformerDeployer": "0x47F01db18a38261E4cB153bAe6db7d3743AcB33c",
|
"exchangeProxyTransformerDeployer": "0x47F01db18a38261E4cB153bAe6db7d3743AcB33c",
|
||||||
"exchangeProxyFlashWallet": "0xdb6f1920a889355780af7570773609bd8cb1f498",
|
"exchangeProxyFlashWallet": "0xdb6f1920a889355780af7570773609bd8cb1f498",
|
||||||
"exchangeProxyLiquidityProviderSandbox": "0xcA64D4225804F2Ae069760CB5fF2F1D8BaC1C2f9",
|
"exchangeProxyLiquidityProviderSandbox": "0xcA64D4225804F2Ae069760CB5fF2F1D8BaC1C2f9",
|
||||||
@@ -415,7 +415,7 @@
|
|||||||
"wethTransformer": "0x9b6aA8f26A92108e7d1F66373d757Bb955112703",
|
"wethTransformer": "0x9b6aA8f26A92108e7d1F66373d757Bb955112703",
|
||||||
"payTakerTransformer": "0x32dF54951D33D7460e15Fa59B1fCc262183ce4C2",
|
"payTakerTransformer": "0x32dF54951D33D7460e15Fa59B1fCc262183ce4C2",
|
||||||
"affiliateFeeTransformer": "0x67EfA679a4b56C38713d478e649C88247F4F8E88",
|
"affiliateFeeTransformer": "0x67EfA679a4b56C38713d478e649C88247F4F8E88",
|
||||||
"fillQuoteTransformer": "0xa21ab090bE8BDE78dAB8FA47988aBbEDF361327A",
|
"fillQuoteTransformer": "0x71de60a1B160094a3f6C7E1b883FF9337d639131",
|
||||||
"positiveSlippageFeeTransformer": "0xe87D69b285005CC82b53B844322652C49ED64600"
|
"positiveSlippageFeeTransformer": "0xe87D69b285005CC82b53B844322652C49ED64600"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user