feat: use pool attribute instead of curve for all Curve like pools

This commit is contained in:
Romain Butteaud 2020-10-14 14:08:02 -07:00
parent f783625d60
commit 3182c12b4d
5 changed files with 59 additions and 59 deletions

View File

@ -174,9 +174,9 @@ export const MAINNET_CURVE_INFOS: { [name: string]: CurveInfo } = {
export const MAINNET_SWERVE_INFOS: { [name: string]: CurveInfo } = { export const MAINNET_SWERVE_INFOS: { [name: string]: CurveInfo } = {
swUSD: { swUSD: {
exchangeFunctionSelector: CurveFunctionSelectors.exchange, exchangeFunctionSelector: CurveFunctionSelectors.exchange,
sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_underlying, sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy,
buyQuoteFunctionSelector: CurveFunctionSelectors.None, buyQuoteFunctionSelector: CurveFunctionSelectors.None,
poolAddress: '0x329239599afB305DA0A2eC69c58F8a6697F9F88d', poolAddress: '0x329239599afb305da0a2ec69c58f8a6697f9f88d',
tokens: [ tokens: [
'0x6b175474e89094c44da98b954eedeac495271d0f', '0x6b175474e89094c44da98b954eedeac495271d0f',
'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
@ -186,36 +186,36 @@ export const MAINNET_SWERVE_INFOS: { [name: string]: CurveInfo } = {
}, },
}; };
export const MAINNET_SNOWSWAP_INFOS: { [name: string]: CurveInfo } = { export const MAINNET_SNOWSWAP_INFOS: { [name: string]: CurveInfo } = {
// yVaultCurve: { yVaultCurve: {
// exchangeFunctionSelector: CurveFunctionSelectors.exchange,
// sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy,
// buyQuoteFunctionSelector: CurveFunctionSelectors.None,
// poolAddress: '0xBf7CCD6C446acfcc5dF023043f2167B62E81899b',
// tokens: [
// '0x5dbcf33d8c2e976c6b560249878e6f1491bca25c', // yUSD
// '0x2994529c0652d127b7842094103715ec5299bbed', // ybCRV
// ],
// },
yVaultUSDUnderlying: {
exchangeFunctionSelector: CurveFunctionSelectors.exchange_underlying,
sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_underlying,
buyQuoteFunctionSelector: CurveFunctionSelectors.None,
poolAddress: '0x4571753311E37dDb44faA8Fb78a6dF9a6E3c6C0B',
tokens: [
// underlying tokens, in SnowSwaps order
'0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI
'0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
'0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT
'0x0000000000085d4780B73119b644AE5ecd22b376', // TUSD
],
},
yVaultUSD: {
// Note we're not trading the underlying but the y representation
// so we use `exchange` and `get_dy`
exchangeFunctionSelector: CurveFunctionSelectors.exchange, exchangeFunctionSelector: CurveFunctionSelectors.exchange,
sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy, sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy,
buyQuoteFunctionSelector: CurveFunctionSelectors.None, buyQuoteFunctionSelector: CurveFunctionSelectors.None,
poolAddress: '0x4571753311E37dDb44faA8Fb78a6dF9a6E3c6C0B', poolAddress: '0xBf7CCD6C446acfcc5dF023043f2167B62E81899b',
tokens: [
'0x5dbcf33d8c2e976c6b560249878e6f1491bca25c', // yUSD
'0x2994529c0652d127b7842094103715ec5299bbed', // ybCRV
],
},
// yVaultUSDUnderlying: {
// exchangeFunctionSelector: CurveFunctionSelectors.exchange_underlying,
// sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_underlying,
// buyQuoteFunctionSelector: CurveFunctionSelectors.None,
// poolAddress: '0x4571753311e37ddb44faa8fb78a6df9a6e3c6c0b',
// tokens: [
// // underlying tokens, in SnowSwaps order
// '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI
// '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
// '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT
// '0x0000000000085d4780b73119b644ae5ecd22b376', // TUSD
// ],
// },
yVaultUSD: {
// Note we're not trading the underlying but the y representation
// so we use `exchange` and `get_dy`
exchangeFunctionSelector: CurveFunctionSelectors.exchange_underlying,
sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_underlying,
buyQuoteFunctionSelector: CurveFunctionSelectors.None,
poolAddress: '0x4571753311e37ddb44faa8fb78a6df9a6e3c6c0b',
tokens: [ tokens: [
// the "non" underlying tokens, in the SnowSwap defined order // the "non" underlying tokens, in the SnowSwap defined order
'0xacd43e627e64355f1861cec6d3a6688b31a6f952', // yDAI '0xacd43e627e64355f1861cec6d3a6688b31a6f952', // yDAI

View File

@ -216,8 +216,8 @@ export function createBridgeOrder(
makerToken, makerToken,
bridgeAddress, bridgeAddress,
createCurveBridgeData( createCurveBridgeData(
curveFillData.curve.poolAddress, curveFillData.pool.poolAddress,
curveFillData.curve.exchangeFunctionSelector, curveFillData.pool.exchangeFunctionSelector,
takerToken, takerToken,
curveFillData.fromTokenIdx, curveFillData.fromTokenIdx,
curveFillData.toTokenIdx, curveFillData.toTokenIdx,

View File

@ -298,7 +298,7 @@ export class SamplerOperations {
} }
public getCurveSellQuotes( public getCurveSellQuotes(
curve: CurveInfo, pool: CurveInfo,
fromTokenIdx: number, fromTokenIdx: number,
toTokenIdx: number, toTokenIdx: number,
takerFillAmounts: BigNumber[], takerFillAmounts: BigNumber[],
@ -306,7 +306,7 @@ export class SamplerOperations {
return new SamplerContractOperation({ return new SamplerContractOperation({
source: ERC20BridgeSource.Curve, source: ERC20BridgeSource.Curve,
fillData: { fillData: {
curve, pool,
fromTokenIdx, fromTokenIdx,
toTokenIdx, toTokenIdx,
}, },
@ -314,9 +314,9 @@ export class SamplerOperations {
function: this._samplerContract.sampleSellsFromCurve, function: this._samplerContract.sampleSellsFromCurve,
params: [ params: [
{ {
poolAddress: curve.poolAddress, poolAddress: pool.poolAddress,
sellQuoteFunctionSelector: curve.sellQuoteFunctionSelector, sellQuoteFunctionSelector: pool.sellQuoteFunctionSelector,
buyQuoteFunctionSelector: curve.buyQuoteFunctionSelector, buyQuoteFunctionSelector: pool.buyQuoteFunctionSelector,
}, },
new BigNumber(fromTokenIdx), new BigNumber(fromTokenIdx),
new BigNumber(toTokenIdx), new BigNumber(toTokenIdx),
@ -326,7 +326,7 @@ export class SamplerOperations {
} }
public getCurveBuyQuotes( public getCurveBuyQuotes(
curve: CurveInfo, pool: CurveInfo,
fromTokenIdx: number, fromTokenIdx: number,
toTokenIdx: number, toTokenIdx: number,
makerFillAmounts: BigNumber[], makerFillAmounts: BigNumber[],
@ -334,7 +334,7 @@ export class SamplerOperations {
return new SamplerContractOperation({ return new SamplerContractOperation({
source: ERC20BridgeSource.Curve, source: ERC20BridgeSource.Curve,
fillData: { fillData: {
curve, pool,
fromTokenIdx, fromTokenIdx,
toTokenIdx, toTokenIdx,
}, },
@ -342,9 +342,9 @@ export class SamplerOperations {
function: this._samplerContract.sampleBuysFromCurve, function: this._samplerContract.sampleBuysFromCurve,
params: [ params: [
{ {
poolAddress: curve.poolAddress, poolAddress: pool.poolAddress,
sellQuoteFunctionSelector: curve.sellQuoteFunctionSelector, sellQuoteFunctionSelector: pool.sellQuoteFunctionSelector,
buyQuoteFunctionSelector: curve.buyQuoteFunctionSelector, buyQuoteFunctionSelector: pool.buyQuoteFunctionSelector,
}, },
new BigNumber(fromTokenIdx), new BigNumber(fromTokenIdx),
new BigNumber(toTokenIdx), new BigNumber(toTokenIdx),
@ -1082,11 +1082,11 @@ export class SamplerOperations {
this.getKyberSellQuotes(reserveId, makerToken, takerToken, takerFillAmounts), this.getKyberSellQuotes(reserveId, makerToken, takerToken, takerFillAmounts),
); );
case ERC20BridgeSource.Curve: case ERC20BridgeSource.Curve:
return getCurveInfosForPair(takerToken, makerToken).map(curve => return getCurveInfosForPair(takerToken, makerToken).map(pool =>
this.getCurveSellQuotes( this.getCurveSellQuotes(
curve, pool,
curve.tokens.indexOf(takerToken), pool.tokens.indexOf(takerToken),
curve.tokens.indexOf(makerToken), pool.tokens.indexOf(makerToken),
takerFillAmounts, takerFillAmounts,
), ),
); );
@ -1100,11 +1100,11 @@ export class SamplerOperations {
), ),
); );
case ERC20BridgeSource.SnowSwap: case ERC20BridgeSource.SnowSwap:
return getSnowSwapInfosForPair(takerToken, makerToken).map(snowswap => return getSnowSwapInfosForPair(takerToken, makerToken).map(pool =>
this.getSnowSwapSellQuotes( this.getSnowSwapSellQuotes(
snowswap, pool,
snowswap.tokens.indexOf(takerToken), pool.tokens.indexOf(takerToken),
snowswap.tokens.indexOf(makerToken), pool.tokens.indexOf(makerToken),
takerFillAmounts, takerFillAmounts,
), ),
); );
@ -1214,11 +1214,11 @@ export class SamplerOperations {
this.getKyberBuyQuotes(reserveId, makerToken, takerToken, makerFillAmounts), this.getKyberBuyQuotes(reserveId, makerToken, takerToken, makerFillAmounts),
); );
case ERC20BridgeSource.Curve: case ERC20BridgeSource.Curve:
return getCurveInfosForPair(takerToken, makerToken).map(curve => return getCurveInfosForPair(takerToken, makerToken).map(pool =>
this.getCurveBuyQuotes( this.getCurveBuyQuotes(
curve, pool,
curve.tokens.indexOf(takerToken), pool.tokens.indexOf(takerToken),
curve.tokens.indexOf(makerToken), pool.tokens.indexOf(makerToken),
makerFillAmounts, makerFillAmounts,
), ),
); );
@ -1232,11 +1232,11 @@ export class SamplerOperations {
), ),
); );
case ERC20BridgeSource.SnowSwap: case ERC20BridgeSource.SnowSwap:
return getSnowSwapInfosForPair(takerToken, makerToken).map(snowswap => return getSnowSwapInfosForPair(takerToken, makerToken).map(pool =>
this.getSnowSwapBuyQuotes( this.getSnowSwapBuyQuotes(
snowswap, pool,
snowswap.tokens.indexOf(takerToken), pool.tokens.indexOf(takerToken),
snowswap.tokens.indexOf(makerToken), pool.tokens.indexOf(makerToken),
makerFillAmounts, makerFillAmounts,
), ),
); );

View File

@ -94,7 +94,7 @@ export interface NativeFillData extends FillData {
export interface CurveFillData extends FillData { export interface CurveFillData extends FillData {
fromTokenIdx: number; fromTokenIdx: number;
toTokenIdx: number; toTokenIdx: number;
curve: CurveInfo; pool: CurveInfo;
} }
export interface SwerveFillData extends FillData { export interface SwerveFillData extends FillData {

View File

@ -310,7 +310,7 @@ describe('MarketOperationUtils tests', () => {
[ERC20BridgeSource.Bancor]: { path: [], networkAddress: randomAddress() }, [ERC20BridgeSource.Bancor]: { path: [], networkAddress: randomAddress() },
[ERC20BridgeSource.Kyber]: { hint: '0x', reserveId: '0x' }, [ERC20BridgeSource.Kyber]: { hint: '0x', reserveId: '0x' },
[ERC20BridgeSource.Curve]: { [ERC20BridgeSource.Curve]: {
curve: { pool: {
poolAddress: randomAddress(), poolAddress: randomAddress(),
tokens: [TAKER_TOKEN, MAKER_TOKEN], tokens: [TAKER_TOKEN, MAKER_TOKEN],
exchangeFunctionSelector: hexUtils.random(4), exchangeFunctionSelector: hexUtils.random(4),