From 3182c12b4d4f9127c13a901720a1d0f315426e3c Mon Sep 17 00:00:00 2001 From: Romain Butteaud Date: Wed, 14 Oct 2020 14:08:02 -0700 Subject: [PATCH] feat: use pool attribute instead of curve for all Curve like pools --- .../utils/market_operation_utils/constants.ts | 58 +++++++++---------- .../utils/market_operation_utils/orders.ts | 4 +- .../sampler_operations.ts | 52 ++++++++--------- .../src/utils/market_operation_utils/types.ts | 2 +- .../test/market_operation_utils_test.ts | 2 +- 5 files changed, 59 insertions(+), 59 deletions(-) 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 11a7e1fd5c..dc7a707551 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/constants.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/constants.ts @@ -174,9 +174,9 @@ export const MAINNET_CURVE_INFOS: { [name: string]: CurveInfo } = { export const MAINNET_SWERVE_INFOS: { [name: string]: CurveInfo } = { swUSD: { exchangeFunctionSelector: CurveFunctionSelectors.exchange, - sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy_underlying, + sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy, buyQuoteFunctionSelector: CurveFunctionSelectors.None, - poolAddress: '0x329239599afB305DA0A2eC69c58F8a6697F9F88d', + poolAddress: '0x329239599afb305da0a2ec69c58f8a6697f9f88d', tokens: [ '0x6b175474e89094c44da98b954eedeac495271d0f', '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', @@ -186,36 +186,36 @@ export const MAINNET_SWERVE_INFOS: { [name: string]: CurveInfo } = { }, }; export const MAINNET_SNOWSWAP_INFOS: { [name: string]: CurveInfo } = { - // 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` + yVaultCurve: { exchangeFunctionSelector: CurveFunctionSelectors.exchange, sellQuoteFunctionSelector: CurveFunctionSelectors.get_dy, 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: [ // the "non" underlying tokens, in the SnowSwap defined order '0xacd43e627e64355f1861cec6d3a6688b31a6f952', // yDAI 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 efadab35ff..d78c066e1a 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/orders.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/orders.ts @@ -216,8 +216,8 @@ export function createBridgeOrder( makerToken, bridgeAddress, createCurveBridgeData( - curveFillData.curve.poolAddress, - curveFillData.curve.exchangeFunctionSelector, + curveFillData.pool.poolAddress, + curveFillData.pool.exchangeFunctionSelector, takerToken, curveFillData.fromTokenIdx, curveFillData.toTokenIdx, 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 a38c97aa00..583a3965f4 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 @@ -298,7 +298,7 @@ export class SamplerOperations { } public getCurveSellQuotes( - curve: CurveInfo, + pool: CurveInfo, fromTokenIdx: number, toTokenIdx: number, takerFillAmounts: BigNumber[], @@ -306,7 +306,7 @@ export class SamplerOperations { return new SamplerContractOperation({ source: ERC20BridgeSource.Curve, fillData: { - curve, + pool, fromTokenIdx, toTokenIdx, }, @@ -314,9 +314,9 @@ export class SamplerOperations { function: this._samplerContract.sampleSellsFromCurve, params: [ { - poolAddress: curve.poolAddress, - sellQuoteFunctionSelector: curve.sellQuoteFunctionSelector, - buyQuoteFunctionSelector: curve.buyQuoteFunctionSelector, + poolAddress: pool.poolAddress, + sellQuoteFunctionSelector: pool.sellQuoteFunctionSelector, + buyQuoteFunctionSelector: pool.buyQuoteFunctionSelector, }, new BigNumber(fromTokenIdx), new BigNumber(toTokenIdx), @@ -326,7 +326,7 @@ export class SamplerOperations { } public getCurveBuyQuotes( - curve: CurveInfo, + pool: CurveInfo, fromTokenIdx: number, toTokenIdx: number, makerFillAmounts: BigNumber[], @@ -334,7 +334,7 @@ export class SamplerOperations { return new SamplerContractOperation({ source: ERC20BridgeSource.Curve, fillData: { - curve, + pool, fromTokenIdx, toTokenIdx, }, @@ -342,9 +342,9 @@ export class SamplerOperations { function: this._samplerContract.sampleBuysFromCurve, params: [ { - poolAddress: curve.poolAddress, - sellQuoteFunctionSelector: curve.sellQuoteFunctionSelector, - buyQuoteFunctionSelector: curve.buyQuoteFunctionSelector, + poolAddress: pool.poolAddress, + sellQuoteFunctionSelector: pool.sellQuoteFunctionSelector, + buyQuoteFunctionSelector: pool.buyQuoteFunctionSelector, }, new BigNumber(fromTokenIdx), new BigNumber(toTokenIdx), @@ -1082,11 +1082,11 @@ export class SamplerOperations { this.getKyberSellQuotes(reserveId, makerToken, takerToken, takerFillAmounts), ); case ERC20BridgeSource.Curve: - return getCurveInfosForPair(takerToken, makerToken).map(curve => + return getCurveInfosForPair(takerToken, makerToken).map(pool => this.getCurveSellQuotes( - curve, - curve.tokens.indexOf(takerToken), - curve.tokens.indexOf(makerToken), + pool, + pool.tokens.indexOf(takerToken), + pool.tokens.indexOf(makerToken), takerFillAmounts, ), ); @@ -1100,11 +1100,11 @@ export class SamplerOperations { ), ); case ERC20BridgeSource.SnowSwap: - return getSnowSwapInfosForPair(takerToken, makerToken).map(snowswap => + return getSnowSwapInfosForPair(takerToken, makerToken).map(pool => this.getSnowSwapSellQuotes( - snowswap, - snowswap.tokens.indexOf(takerToken), - snowswap.tokens.indexOf(makerToken), + pool, + pool.tokens.indexOf(takerToken), + pool.tokens.indexOf(makerToken), takerFillAmounts, ), ); @@ -1214,11 +1214,11 @@ export class SamplerOperations { this.getKyberBuyQuotes(reserveId, makerToken, takerToken, makerFillAmounts), ); case ERC20BridgeSource.Curve: - return getCurveInfosForPair(takerToken, makerToken).map(curve => + return getCurveInfosForPair(takerToken, makerToken).map(pool => this.getCurveBuyQuotes( - curve, - curve.tokens.indexOf(takerToken), - curve.tokens.indexOf(makerToken), + pool, + pool.tokens.indexOf(takerToken), + pool.tokens.indexOf(makerToken), makerFillAmounts, ), ); @@ -1232,11 +1232,11 @@ export class SamplerOperations { ), ); case ERC20BridgeSource.SnowSwap: - return getSnowSwapInfosForPair(takerToken, makerToken).map(snowswap => + return getSnowSwapInfosForPair(takerToken, makerToken).map(pool => this.getSnowSwapBuyQuotes( - snowswap, - snowswap.tokens.indexOf(takerToken), - snowswap.tokens.indexOf(makerToken), + pool, + pool.tokens.indexOf(takerToken), + pool.tokens.indexOf(makerToken), makerFillAmounts, ), ); 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 0fa88b6142..601eac2936 100644 --- a/packages/asset-swapper/src/utils/market_operation_utils/types.ts +++ b/packages/asset-swapper/src/utils/market_operation_utils/types.ts @@ -94,7 +94,7 @@ export interface NativeFillData extends FillData { export interface CurveFillData extends FillData { fromTokenIdx: number; toTokenIdx: number; - curve: CurveInfo; + pool: CurveInfo; } export interface SwerveFillData extends FillData { diff --git a/packages/asset-swapper/test/market_operation_utils_test.ts b/packages/asset-swapper/test/market_operation_utils_test.ts index 80a32aa447..3628329c81 100644 --- a/packages/asset-swapper/test/market_operation_utils_test.ts +++ b/packages/asset-swapper/test/market_operation_utils_test.ts @@ -310,7 +310,7 @@ describe('MarketOperationUtils tests', () => { [ERC20BridgeSource.Bancor]: { path: [], networkAddress: randomAddress() }, [ERC20BridgeSource.Kyber]: { hint: '0x', reserveId: '0x' }, [ERC20BridgeSource.Curve]: { - curve: { + pool: { poolAddress: randomAddress(), tokens: [TAKER_TOKEN, MAKER_TOKEN], exchangeFunctionSelector: hexUtils.random(4),