added mobius config for celo and some inital test pools
This commit is contained in:
parent
9a1df67d6b
commit
77a592e891
@ -61,6 +61,7 @@ import {
|
|||||||
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,
|
||||||
|
MOBIUSMONEY_CELO_INFOS,
|
||||||
} from './constants';
|
} from './constants';
|
||||||
import { CurveInfo, ERC20BridgeSource } from './types';
|
import { CurveInfo, ERC20BridgeSource } from './types';
|
||||||
|
|
||||||
@ -449,6 +450,18 @@ export function getAcryptosInfosForPair(chainId: ChainId, takerToken: string, ma
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
export function getMobiusMoneyInfoForPair(chainId: ChainId, takerToken: string, makerToken: string): CurveInfo[] {
|
||||||
|
if (chainId !== ChainId.Celo) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
return Object.values(MOBIUSMONEY_CELO_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),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export function getShellLikeInfosForPair(
|
export function getShellLikeInfosForPair(
|
||||||
chainId: ChainId,
|
chainId: ChainId,
|
||||||
@ -491,7 +504,8 @@ export function getCurveLikeInfosForPair(
|
|||||||
| ERC20BridgeSource.IronSwap
|
| ERC20BridgeSource.IronSwap
|
||||||
| ERC20BridgeSource.XSigma
|
| ERC20BridgeSource.XSigma
|
||||||
| ERC20BridgeSource.FirebirdOneSwap
|
| ERC20BridgeSource.FirebirdOneSwap
|
||||||
| ERC20BridgeSource.ACryptos,
|
| ERC20BridgeSource.ACryptos
|
||||||
|
| ERC20BridgeSource.MobiusMoney,
|
||||||
): CurveDetailedInfo[] {
|
): CurveDetailedInfo[] {
|
||||||
let pools: CurveInfo[] = [];
|
let pools: CurveInfo[] = [];
|
||||||
switch (source) {
|
switch (source) {
|
||||||
@ -537,6 +551,9 @@ export function getCurveLikeInfosForPair(
|
|||||||
case ERC20BridgeSource.ACryptos:
|
case ERC20BridgeSource.ACryptos:
|
||||||
pools = getAcryptosInfosForPair(chainId, takerToken, makerToken);
|
pools = getAcryptosInfosForPair(chainId, takerToken, makerToken);
|
||||||
break;
|
break;
|
||||||
|
case ERC20BridgeSource.MobiusMoney:
|
||||||
|
pools = getMobiusMoneyInfoForPair(chainId, takerToken, makerToken);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown Curve like source ${source}`);
|
throw new Error(`Unknown Curve like source ${source}`);
|
||||||
}
|
}
|
||||||
|
@ -202,6 +202,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
|
|||||||
ERC20BridgeSource.UbeSwap,
|
ERC20BridgeSource.UbeSwap,
|
||||||
ERC20BridgeSource.SushiSwap,
|
ERC20BridgeSource.SushiSwap,
|
||||||
ERC20BridgeSource.MultiHop,
|
ERC20BridgeSource.MultiHop,
|
||||||
|
ERC20BridgeSource.MobiusMoney,
|
||||||
]),
|
]),
|
||||||
[ChainId.Optimism]: new SourceFilters([
|
[ChainId.Optimism]: new SourceFilters([
|
||||||
ERC20BridgeSource.UniswapV3,
|
ERC20BridgeSource.UniswapV3,
|
||||||
@ -347,6 +348,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
|
|||||||
ERC20BridgeSource.UbeSwap,
|
ERC20BridgeSource.UbeSwap,
|
||||||
ERC20BridgeSource.SushiSwap,
|
ERC20BridgeSource.SushiSwap,
|
||||||
ERC20BridgeSource.MultiHop,
|
ERC20BridgeSource.MultiHop,
|
||||||
|
ERC20BridgeSource.MobiusMoney,
|
||||||
]),
|
]),
|
||||||
[ChainId.Optimism]: new SourceFilters([
|
[ChainId.Optimism]: new SourceFilters([
|
||||||
ERC20BridgeSource.UniswapV3,
|
ERC20BridgeSource.UniswapV3,
|
||||||
@ -562,11 +564,11 @@ export const CELO_TOKENS = {
|
|||||||
// Some of these tokens are Optics bridge? tokens which
|
// Some of these tokens are Optics bridge? tokens which
|
||||||
// had an issue and migrated from v1 to v2
|
// had an issue and migrated from v1 to v2
|
||||||
WETHv1: '0xe919f65739c26a42616b7b8eedc6b5524d1e3ac4',
|
WETHv1: '0xe919f65739c26a42616b7b8eedc6b5524d1e3ac4',
|
||||||
WETH: '0x122013fd7df1c6f636a5bb8f03108e876548b455',
|
oWETH: '0x122013fd7df1c6f636a5bb8f03108e876548b455',
|
||||||
WBTC: '0xbaab46e28388d2779e6e31fd00cf0e5ad95e327b',
|
WBTC: '0xbaab46e28388d2779e6e31fd00cf0e5ad95e327b',
|
||||||
cUSD: '0x765de816845861e75a25fca122bb6898b8b1282a',
|
cUSD: '0x765de816845861e75a25fca122bb6898b8b1282a',
|
||||||
// ??
|
// ??
|
||||||
WBTCv1: '0xd629eb00deced2a080b7ec630ef6ac117e614f1b',
|
cBTC: '0xd629eb00deced2a080b7ec630ef6ac117e614f1b',
|
||||||
cETH: '0x2def4285787d58a2f811af24755a8150622f4361',
|
cETH: '0x2def4285787d58a2f811af24755a8150622f4361',
|
||||||
UBE: '0x00be915b9dcf56a3cbe739d9b9c202ca692409ec',
|
UBE: '0x00be915b9dcf56a3cbe739d9b9c202ca692409ec',
|
||||||
// Moolah
|
// Moolah
|
||||||
@ -575,6 +577,21 @@ export const CELO_TOKENS = {
|
|||||||
mCEUR: '0xe273ad7ee11dcfaa87383ad5977ee1504ac07568',
|
mCEUR: '0xe273ad7ee11dcfaa87383ad5977ee1504ac07568',
|
||||||
amCUSD: '0x64defa3544c695db8c535d289d843a189aa26b98',
|
amCUSD: '0x64defa3544c695db8c535d289d843a189aa26b98',
|
||||||
MOO: '0x17700282592d6917f6a73d0bf8accf4d578c131e',
|
MOO: '0x17700282592d6917f6a73d0bf8accf4d578c131e',
|
||||||
|
|
||||||
|
//
|
||||||
|
wBTC: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',
|
||||||
|
wETH: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
|
||||||
|
wBTCO: '0xbe50a3013a1c94768a1abb78c3cb79ab28fc1ace',
|
||||||
|
pUSDC: '0xcc82628f6a8defa1e2b0ad7ed448bef3647f7941',
|
||||||
|
cUSDC: '0x2a3684e9dc20b857375ea04235f2f7edbe818fa7',
|
||||||
|
cUSDC_V2: '0xef4229c8c3250c675f21bcefa42f58efbff6002a',
|
||||||
|
pUSDC_V2: '0x1bfc26ce035c368503fae319cc2596716428ca44',
|
||||||
|
pUSD: '0xeadf4a7168a82d30ba0619e64d5bcf5b30b45226',
|
||||||
|
pCELO: '0x301a61d01a63c8d670c2b8a43f37d12ef181f997',
|
||||||
|
aaUSDC: '0xb70e0a782b058bfdb0d109a3599bec1f19328e36',
|
||||||
|
asUSDC: '0xcd7d7ff64746c1909e44db8e95331f9316478817',
|
||||||
|
mcUSDT: '0xcfffe0c89a779c09df3df5624f54cdf7ef5fdd5d',
|
||||||
|
mcUSDC: '0x93db49be12b864019da9cb147ba75cdc0506190e',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const FANTOM_TOKENS = {
|
export const FANTOM_TOKENS = {
|
||||||
@ -798,6 +815,13 @@ export const FIREBIRDONESWAP_BSC_POOLS = {
|
|||||||
export const FIREBIRDONESWAP_POLYGON_POOLS = {
|
export const FIREBIRDONESWAP_POLYGON_POOLS = {
|
||||||
oneswap: '0x01c9475dbd36e46d1961572c8de24b74616bae9e',
|
oneswap: '0x01c9475dbd36e46d1961572c8de24b74616bae9e',
|
||||||
};
|
};
|
||||||
|
export const MOBIUSMONEY_CELO_POOLS = {
|
||||||
|
poof_cusd_v2: '0xa2f0e57d4ceacf025e81c76f28b9ad6e9fbe8735',
|
||||||
|
poof_celo_v2: '0xfc9e2c63370d8deb3521922a7b2b60f4cff7e75a',
|
||||||
|
usdc_optics_v2: '0x9906589ea8fd27504974b7e8201df5bbde986b03',
|
||||||
|
dai_optics_v2: '0xf3f65dfe0c8c8f2986da0fec159abe6fd4e700b4',
|
||||||
|
weth_optics_v2: '0x74ef28d635c6c5800dd3cd62d4c4f8752daacb09',
|
||||||
|
};
|
||||||
|
|
||||||
export const ACRYPTOS_POOLS = {
|
export const ACRYPTOS_POOLS = {
|
||||||
acs4usd: '0xb3f0c9ea1f05e312093fdb031e789a756659b0ac',
|
acs4usd: '0xb3f0c9ea1f05e312093fdb031e789a756659b0ac',
|
||||||
@ -857,7 +881,13 @@ export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId<string[]>(
|
|||||||
FANTOM_TOKENS.nETH,
|
FANTOM_TOKENS.nETH,
|
||||||
FANTOM_TOKENS.MIM,
|
FANTOM_TOKENS.MIM,
|
||||||
],
|
],
|
||||||
[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.WETHv1,
|
||||||
|
CELO_TOKENS.amCUSD,
|
||||||
|
CELO_TOKENS.WBTC,
|
||||||
|
],
|
||||||
[ChainId.Optimism]: [
|
[ChainId.Optimism]: [
|
||||||
OPTIMISM_TOKENS.WETH,
|
OPTIMISM_TOKENS.WETH,
|
||||||
OPTIMISM_TOKENS.DAI,
|
OPTIMISM_TOKENS.DAI,
|
||||||
@ -1703,6 +1733,36 @@ export const FIREBIRDONESWAP_POLYGON_INFOS: { [name: string]: CurveInfo } = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const MOBIUSMONEY_CELO_INFOS: { [name: string]: CurveInfo } = {
|
||||||
|
[MOBIUSMONEY_CELO_POOLS.poof_cusd_v2]: {
|
||||||
|
exchangeFunctionSelector: CurveFunctionSelectors.swap,
|
||||||
|
sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap,
|
||||||
|
buyQuoteFunctionSelector: CurveFunctionSelectors.None,
|
||||||
|
poolAddress: MOBIUSMONEY_CELO_POOLS.poof_cusd_v2,
|
||||||
|
tokens: [CELO_TOKENS.cUSD, CELO_TOKENS.pUSD],
|
||||||
|
metaTokens: undefined,
|
||||||
|
gasSchedule: 100e3,
|
||||||
|
},
|
||||||
|
[MOBIUSMONEY_CELO_POOLS.poof_celo_v2]: {
|
||||||
|
exchangeFunctionSelector: CurveFunctionSelectors.swap,
|
||||||
|
sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap,
|
||||||
|
buyQuoteFunctionSelector: CurveFunctionSelectors.None,
|
||||||
|
poolAddress: MOBIUSMONEY_CELO_POOLS.poof_celo_v2,
|
||||||
|
tokens: [CELO_TOKENS.WCELO, CELO_TOKENS.pCELO],
|
||||||
|
metaTokens: undefined,
|
||||||
|
gasSchedule: 100e3,
|
||||||
|
},
|
||||||
|
[MOBIUSMONEY_CELO_POOLS.usdc_optics_v2]: {
|
||||||
|
exchangeFunctionSelector: CurveFunctionSelectors.swap,
|
||||||
|
sellQuoteFunctionSelector: CurveFunctionSelectors.calculateSwap,
|
||||||
|
buyQuoteFunctionSelector: CurveFunctionSelectors.None,
|
||||||
|
poolAddress: MOBIUSMONEY_CELO_POOLS.usdc_optics_v2,
|
||||||
|
tokens: [CELO_TOKENS.cUSD, CELO_TOKENS.cUSDC_V2],
|
||||||
|
metaTokens: undefined,
|
||||||
|
gasSchedule: 100e3,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const ACRYPTOS_ACS4USD_POOL_BSC_TOKENS = [BSC_TOKENS.BUSD, BSC_TOKENS.USDT, BSC_TOKENS.DAI, BSC_TOKENS.USDC];
|
const ACRYPTOS_ACS4USD_POOL_BSC_TOKENS = [BSC_TOKENS.BUSD, BSC_TOKENS.USDT, BSC_TOKENS.DAI, BSC_TOKENS.USDC];
|
||||||
|
|
||||||
const createAcryptosMetaUsdPool = (info: { tokens: string[]; pool: string; gasSchedule: number }) => ({
|
const createAcryptosMetaUsdPool = (info: { tokens: string[]; pool: string; gasSchedule: number }) => ({
|
||||||
@ -2342,6 +2402,7 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = {
|
|||||||
[ERC20BridgeSource.IronSwap]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
[ERC20BridgeSource.IronSwap]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
[ERC20BridgeSource.XSigma]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
[ERC20BridgeSource.XSigma]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
[ERC20BridgeSource.FirebirdOneSwap]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
[ERC20BridgeSource.FirebirdOneSwap]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
|
[ERC20BridgeSource.MobiusMoney]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
[ERC20BridgeSource.MultiBridge]: () => 350e3,
|
[ERC20BridgeSource.MultiBridge]: () => 350e3,
|
||||||
[ERC20BridgeSource.UniswapV2]: uniswapV2CloneGasSchedule,
|
[ERC20BridgeSource.UniswapV2]: uniswapV2CloneGasSchedule,
|
||||||
[ERC20BridgeSource.SushiSwap]: uniswapV2CloneGasSchedule,
|
[ERC20BridgeSource.SushiSwap]: uniswapV2CloneGasSchedule,
|
||||||
|
@ -206,6 +206,8 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s
|
|||||||
return encodeBridgeSourceId(BridgeProtocol.Compound, 'Compound');
|
return encodeBridgeSourceId(BridgeProtocol.Compound, 'Compound');
|
||||||
case ERC20BridgeSource.Geist:
|
case ERC20BridgeSource.Geist:
|
||||||
return encodeBridgeSourceId(BridgeProtocol.AaveV2, 'Geist');
|
return encodeBridgeSourceId(BridgeProtocol.AaveV2, 'Geist');
|
||||||
|
case ERC20BridgeSource.MobiusMoney:
|
||||||
|
return encodeBridgeSourceId(BridgeProtocol.Nerve, 'MobiusMoney');
|
||||||
default:
|
default:
|
||||||
throw new Error(AggregationError.NoBridgeForSource);
|
throw new Error(AggregationError.NoBridgeForSource);
|
||||||
}
|
}
|
||||||
@ -241,6 +243,7 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder
|
|||||||
case ERC20BridgeSource.FirebirdOneSwap:
|
case ERC20BridgeSource.FirebirdOneSwap:
|
||||||
case ERC20BridgeSource.IronSwap:
|
case ERC20BridgeSource.IronSwap:
|
||||||
case ERC20BridgeSource.ACryptos:
|
case ERC20BridgeSource.ACryptos:
|
||||||
|
case ERC20BridgeSource.MobiusMoney:
|
||||||
const curveFillData = (order as OptimizedMarketBridgeOrder<CurveFillData>).fillData;
|
const curveFillData = (order as OptimizedMarketBridgeOrder<CurveFillData>).fillData;
|
||||||
bridgeData = encoder.encode([
|
bridgeData = encoder.encode([
|
||||||
curveFillData.pool.poolAddress,
|
curveFillData.pool.poolAddress,
|
||||||
@ -489,6 +492,7 @@ export const BRIDGE_ENCODERS: {
|
|||||||
[ERC20BridgeSource.FirebirdOneSwap]: curveEncoder,
|
[ERC20BridgeSource.FirebirdOneSwap]: curveEncoder,
|
||||||
[ERC20BridgeSource.IronSwap]: curveEncoder,
|
[ERC20BridgeSource.IronSwap]: curveEncoder,
|
||||||
[ERC20BridgeSource.ACryptos]: curveEncoder,
|
[ERC20BridgeSource.ACryptos]: curveEncoder,
|
||||||
|
[ERC20BridgeSource.MobiusMoney]: curveEncoder,
|
||||||
// UniswapV2 like, (router, address[])
|
// UniswapV2 like, (router, address[])
|
||||||
[ERC20BridgeSource.Bancor]: routerAddressPathEncoder,
|
[ERC20BridgeSource.Bancor]: routerAddressPathEncoder,
|
||||||
[ERC20BridgeSource.UniswapV2]: routerAddressPathEncoder,
|
[ERC20BridgeSource.UniswapV2]: routerAddressPathEncoder,
|
||||||
|
@ -1383,6 +1383,7 @@ export class SamplerOperations {
|
|||||||
case ERC20BridgeSource.FirebirdOneSwap:
|
case ERC20BridgeSource.FirebirdOneSwap:
|
||||||
case ERC20BridgeSource.IronSwap:
|
case ERC20BridgeSource.IronSwap:
|
||||||
case ERC20BridgeSource.ACryptos:
|
case ERC20BridgeSource.ACryptos:
|
||||||
|
case ERC20BridgeSource.MobiusMoney:
|
||||||
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
||||||
this.getCurveSellQuotes(
|
this.getCurveSellQuotes(
|
||||||
pool,
|
pool,
|
||||||
@ -1696,6 +1697,7 @@ export class SamplerOperations {
|
|||||||
case ERC20BridgeSource.FirebirdOneSwap:
|
case ERC20BridgeSource.FirebirdOneSwap:
|
||||||
case ERC20BridgeSource.IronSwap:
|
case ERC20BridgeSource.IronSwap:
|
||||||
case ERC20BridgeSource.ACryptos:
|
case ERC20BridgeSource.ACryptos:
|
||||||
|
case ERC20BridgeSource.MobiusMoney:
|
||||||
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
||||||
this.getCurveBuyQuotes(
|
this.getCurveBuyQuotes(
|
||||||
pool,
|
pool,
|
||||||
|
@ -96,6 +96,7 @@ export enum ERC20BridgeSource {
|
|||||||
TraderJoe = 'TraderJoe',
|
TraderJoe = 'TraderJoe',
|
||||||
// Celo only
|
// Celo only
|
||||||
UbeSwap = 'UbeSwap',
|
UbeSwap = 'UbeSwap',
|
||||||
|
MobiusMoney = 'MobiusMoney',
|
||||||
// Fantom
|
// Fantom
|
||||||
SpiritSwap = 'SpiritSwap',
|
SpiritSwap = 'SpiritSwap',
|
||||||
SpookySwap = 'SpookySwap',
|
SpookySwap = 'SpookySwap',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user