Chore: adding xSigma liquidity source [TKR-59] (#201)
* Chore: adding xSigma liquidity source * fix: prettier
This commit is contained in:
parent
55bc367bd6
commit
b50d4aee6d
@ -29,6 +29,7 @@ import {
|
|||||||
SUSHISWAP_ROUTER_BY_CHAIN_ID,
|
SUSHISWAP_ROUTER_BY_CHAIN_ID,
|
||||||
SWERVE_MAINNET_INFOS,
|
SWERVE_MAINNET_INFOS,
|
||||||
UNISWAPV2_ROUTER_BY_CHAIN_ID,
|
UNISWAPV2_ROUTER_BY_CHAIN_ID,
|
||||||
|
XSIGMA_MAINNET_INFOS,
|
||||||
} from './constants';
|
} from './constants';
|
||||||
import { CurveInfo, ERC20BridgeSource } from './types';
|
import { CurveInfo, ERC20BridgeSource } from './types';
|
||||||
|
|
||||||
@ -203,6 +204,19 @@ export function getSaddleInfosForPair(chainId: ChainId, takerToken: string, make
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getXSigmaInfosForPair(chainId: ChainId, takerToken: string, makerToken: string): CurveInfo[] {
|
||||||
|
if (chainId !== ChainId.Mainnet) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
return Object.values(XSIGMA_MAINNET_INFOS).filter(c =>
|
||||||
|
[makerToken, takerToken].every(
|
||||||
|
t =>
|
||||||
|
(c.tokens.includes(t) && c.metaToken === undefined) ||
|
||||||
|
(c.tokens.includes(t) && c.metaToken !== undefined && [makerToken, takerToken].includes(c.metaToken)),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export function getShellLikeInfosForPair(
|
export function getShellLikeInfosForPair(
|
||||||
chainId: ChainId,
|
chainId: ChainId,
|
||||||
takerToken: string,
|
takerToken: string,
|
||||||
@ -231,7 +245,8 @@ export function getCurveLikeInfosForPair(
|
|||||||
| ERC20BridgeSource.Belt
|
| ERC20BridgeSource.Belt
|
||||||
| ERC20BridgeSource.Ellipsis
|
| ERC20BridgeSource.Ellipsis
|
||||||
| ERC20BridgeSource.Smoothy
|
| ERC20BridgeSource.Smoothy
|
||||||
| ERC20BridgeSource.Saddle,
|
| ERC20BridgeSource.Saddle
|
||||||
|
| ERC20BridgeSource.XSigma,
|
||||||
): CurveInfo[] {
|
): CurveInfo[] {
|
||||||
switch (source) {
|
switch (source) {
|
||||||
case ERC20BridgeSource.Curve:
|
case ERC20BridgeSource.Curve:
|
||||||
@ -250,6 +265,8 @@ export function getCurveLikeInfosForPair(
|
|||||||
return getSmoothyInfosForPair(chainId, takerToken, makerToken);
|
return getSmoothyInfosForPair(chainId, takerToken, makerToken);
|
||||||
case ERC20BridgeSource.Saddle:
|
case ERC20BridgeSource.Saddle:
|
||||||
return getSaddleInfosForPair(chainId, takerToken, makerToken);
|
return getSaddleInfosForPair(chainId, takerToken, makerToken);
|
||||||
|
case ERC20BridgeSource.XSigma:
|
||||||
|
return getXSigmaInfosForPair(chainId, takerToken, makerToken);
|
||||||
default:
|
default:
|
||||||
throw new Error(`Unknown Curve like source ${source}`);
|
throw new Error(`Unknown Curve like source ${source}`);
|
||||||
}
|
}
|
||||||
|
@ -86,6 +86,7 @@ export const SELL_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
|
|||||||
ERC20BridgeSource.Smoothy,
|
ERC20BridgeSource.Smoothy,
|
||||||
ERC20BridgeSource.Component,
|
ERC20BridgeSource.Component,
|
||||||
ERC20BridgeSource.Saddle,
|
ERC20BridgeSource.Saddle,
|
||||||
|
ERC20BridgeSource.XSigma,
|
||||||
]),
|
]),
|
||||||
[ChainId.Ropsten]: new SourceFilters([
|
[ChainId.Ropsten]: new SourceFilters([
|
||||||
ERC20BridgeSource.Kyber,
|
ERC20BridgeSource.Kyber,
|
||||||
@ -152,6 +153,7 @@ export const BUY_SOURCE_FILTER_BY_CHAIN_ID = valueByChainId<SourceFilters>(
|
|||||||
ERC20BridgeSource.Smoothy,
|
ERC20BridgeSource.Smoothy,
|
||||||
ERC20BridgeSource.Component,
|
ERC20BridgeSource.Component,
|
||||||
ERC20BridgeSource.Saddle,
|
ERC20BridgeSource.Saddle,
|
||||||
|
ERC20BridgeSource.XSigma,
|
||||||
]),
|
]),
|
||||||
[ChainId.Ropsten]: new SourceFilters([
|
[ChainId.Ropsten]: new SourceFilters([
|
||||||
ERC20BridgeSource.Kyber,
|
ERC20BridgeSource.Kyber,
|
||||||
@ -377,6 +379,10 @@ export const ELLIPSIS_POOLS = {
|
|||||||
threePool: '0x160caed03795365f3a589f10c379ffa7d75d4e76',
|
threePool: '0x160caed03795365f3a589f10c379ffa7d75d4e76',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const XSIGMA_POOLS = {
|
||||||
|
stable: '0x3333333ACdEdBbC9Ad7bda0876e60714195681c5',
|
||||||
|
};
|
||||||
|
|
||||||
export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId<string[]>(
|
export const DEFAULT_INTERMEDIATE_TOKENS_BY_CHAIN_ID = valueByChainId<string[]>(
|
||||||
{
|
{
|
||||||
[ChainId.Mainnet]: [
|
[ChainId.Mainnet]: [
|
||||||
@ -684,6 +690,14 @@ export const ELLIPSIS_BSC_INFOS: { [name: string]: CurveInfo } = {
|
|||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const XSIGMA_MAINNET_INFOS: { [name: string]: CurveInfo } = {
|
||||||
|
[XSIGMA_POOLS.stable]: createCurveExchangePool({
|
||||||
|
tokens: [MAINNET_TOKENS.DAI, MAINNET_TOKENS.USDC, MAINNET_TOKENS.USDT],
|
||||||
|
pool: XSIGMA_POOLS.stable,
|
||||||
|
gasSchedule: 150e3,
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
|
||||||
// Curve pools like using custom selectors
|
// Curve pools like using custom selectors
|
||||||
export const SADDLE_MAINNET_INFOS: { [name: string]: CurveInfo } = {
|
export const SADDLE_MAINNET_INFOS: { [name: string]: CurveInfo } = {
|
||||||
[SADDLE_POOLS.stables]: {
|
[SADDLE_POOLS.stables]: {
|
||||||
@ -1080,6 +1094,7 @@ export const DEFAULT_GAS_SCHEDULE: Required<FeeSchedule> = {
|
|||||||
[ERC20BridgeSource.Ellipsis]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
[ERC20BridgeSource.Ellipsis]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
[ERC20BridgeSource.Smoothy]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
[ERC20BridgeSource.Smoothy]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
[ERC20BridgeSource.Saddle]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
[ERC20BridgeSource.Saddle]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
|
[ERC20BridgeSource.XSigma]: fillData => (fillData as CurveFillData).pool.gasSchedule,
|
||||||
[ERC20BridgeSource.MultiBridge]: () => 350e3,
|
[ERC20BridgeSource.MultiBridge]: () => 350e3,
|
||||||
[ERC20BridgeSource.UniswapV2]: (fillData?: FillData) => {
|
[ERC20BridgeSource.UniswapV2]: (fillData?: FillData) => {
|
||||||
// TODO: Different base cost if to/from ETH.
|
// TODO: Different base cost if to/from ETH.
|
||||||
|
@ -136,6 +136,8 @@ export function getErc20BridgeSourceToBridgeSource(source: ERC20BridgeSource): s
|
|||||||
return encodeBridgeSourceId(BridgeProtocol.Curve, 'Smoothy');
|
return encodeBridgeSourceId(BridgeProtocol.Curve, 'Smoothy');
|
||||||
case ERC20BridgeSource.Saddle:
|
case ERC20BridgeSource.Saddle:
|
||||||
return encodeBridgeSourceId(BridgeProtocol.Nerve, 'Saddle');
|
return encodeBridgeSourceId(BridgeProtocol.Nerve, 'Saddle');
|
||||||
|
case ERC20BridgeSource.XSigma:
|
||||||
|
return encodeBridgeSourceId(BridgeProtocol.Curve, 'xSigma');
|
||||||
case ERC20BridgeSource.ApeSwap:
|
case ERC20BridgeSource.ApeSwap:
|
||||||
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'ApeSwap');
|
return encodeBridgeSourceId(BridgeProtocol.UniswapV2, 'ApeSwap');
|
||||||
case ERC20BridgeSource.CafeSwap:
|
case ERC20BridgeSource.CafeSwap:
|
||||||
@ -173,6 +175,7 @@ export function createBridgeDataForBridgeOrder(order: OptimizedMarketBridgeOrder
|
|||||||
case ERC20BridgeSource.Ellipsis:
|
case ERC20BridgeSource.Ellipsis:
|
||||||
case ERC20BridgeSource.Smoothy:
|
case ERC20BridgeSource.Smoothy:
|
||||||
case ERC20BridgeSource.Saddle:
|
case ERC20BridgeSource.Saddle:
|
||||||
|
case ERC20BridgeSource.XSigma:
|
||||||
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,
|
||||||
@ -328,6 +331,7 @@ export const BRIDGE_ENCODERS: {
|
|||||||
[ERC20BridgeSource.Ellipsis]: curveEncoder,
|
[ERC20BridgeSource.Ellipsis]: curveEncoder,
|
||||||
[ERC20BridgeSource.Smoothy]: curveEncoder,
|
[ERC20BridgeSource.Smoothy]: curveEncoder,
|
||||||
[ERC20BridgeSource.Saddle]: curveEncoder,
|
[ERC20BridgeSource.Saddle]: curveEncoder,
|
||||||
|
[ERC20BridgeSource.XSigma]: curveEncoder,
|
||||||
// UniswapV2 like, (router, address[])
|
// UniswapV2 like, (router, address[])
|
||||||
[ERC20BridgeSource.Bancor]: routerAddressPathEncoder,
|
[ERC20BridgeSource.Bancor]: routerAddressPathEncoder,
|
||||||
[ERC20BridgeSource.UniswapV2]: routerAddressPathEncoder,
|
[ERC20BridgeSource.UniswapV2]: routerAddressPathEncoder,
|
||||||
|
@ -1132,6 +1132,7 @@ export class SamplerOperations {
|
|||||||
case ERC20BridgeSource.Belt:
|
case ERC20BridgeSource.Belt:
|
||||||
case ERC20BridgeSource.Ellipsis:
|
case ERC20BridgeSource.Ellipsis:
|
||||||
case ERC20BridgeSource.Saddle:
|
case ERC20BridgeSource.Saddle:
|
||||||
|
case ERC20BridgeSource.XSigma:
|
||||||
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
||||||
this.getCurveSellQuotes(
|
this.getCurveSellQuotes(
|
||||||
pool,
|
pool,
|
||||||
@ -1346,6 +1347,7 @@ export class SamplerOperations {
|
|||||||
case ERC20BridgeSource.Belt:
|
case ERC20BridgeSource.Belt:
|
||||||
case ERC20BridgeSource.Ellipsis:
|
case ERC20BridgeSource.Ellipsis:
|
||||||
case ERC20BridgeSource.Saddle:
|
case ERC20BridgeSource.Saddle:
|
||||||
|
case ERC20BridgeSource.XSigma:
|
||||||
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
return getCurveLikeInfosForPair(this.chainId, takerToken, makerToken, source).map(pool =>
|
||||||
this.getCurveBuyQuotes(
|
this.getCurveBuyQuotes(
|
||||||
pool,
|
pool,
|
||||||
|
@ -63,6 +63,7 @@ export enum ERC20BridgeSource {
|
|||||||
Smoothy = 'Smoothy',
|
Smoothy = 'Smoothy',
|
||||||
Component = 'Component',
|
Component = 'Component',
|
||||||
Saddle = 'Saddle',
|
Saddle = 'Saddle',
|
||||||
|
XSigma = 'xSigma',
|
||||||
// BSC only
|
// BSC only
|
||||||
PancakeSwap = 'PancakeSwap',
|
PancakeSwap = 'PancakeSwap',
|
||||||
PancakeSwapV2 = 'PancakeSwap_V2',
|
PancakeSwapV2 = 'PancakeSwap_V2',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user