52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import { artifacts as ERC20Artifacts } from '@0x/contracts-erc20';
|
|
import { BlockchainTestsEnvironment } from '@0x/contracts-test-utils';
|
|
|
|
import { artifacts } from '../artifacts';
|
|
import { DeploymentManager } from '../framework/deployment_manager';
|
|
import {
|
|
TestUniswapBridgeContract,
|
|
TestUniswapExchangeContract,
|
|
TestUniswapExchangeFactoryContract,
|
|
} from '../wrappers';
|
|
|
|
/**
|
|
* Deploys test Uniswap exchanges for the given tokens, a test UniswapExchangeFactory, and a test
|
|
* bridge contract configured to work alongside the provided `deployment`.
|
|
*/
|
|
export async function deployUniswapBridgeAsync(
|
|
deployment: DeploymentManager,
|
|
environment: BlockchainTestsEnvironment,
|
|
tokenAddresses: string[],
|
|
): Promise<[TestUniswapBridgeContract, TestUniswapExchangeContract[], TestUniswapExchangeFactoryContract]> {
|
|
const uniswapExchangeFactory = await TestUniswapExchangeFactoryContract.deployFrom0xArtifactAsync(
|
|
artifacts.TestUniswapExchangeFactory,
|
|
environment.provider,
|
|
deployment.txDefaults,
|
|
artifacts,
|
|
);
|
|
|
|
const uniswapExchanges = [];
|
|
for (const tokenAddress of tokenAddresses) {
|
|
const uniswapExchange = await TestUniswapExchangeContract.deployFrom0xArtifactAsync(
|
|
artifacts.TestUniswapExchange,
|
|
environment.provider,
|
|
deployment.txDefaults,
|
|
artifacts,
|
|
tokenAddress,
|
|
);
|
|
await uniswapExchangeFactory.addExchange(tokenAddress, uniswapExchange.address).awaitTransactionSuccessAsync();
|
|
uniswapExchanges.push(uniswapExchange);
|
|
}
|
|
|
|
const uniswapBridge = await TestUniswapBridgeContract.deployFrom0xArtifactAsync(
|
|
artifacts.TestUniswapBridge,
|
|
environment.provider,
|
|
deployment.txDefaults,
|
|
{ ...ERC20Artifacts, ...artifacts },
|
|
deployment.tokens.weth.address,
|
|
uniswapExchangeFactory.address,
|
|
);
|
|
|
|
return [uniswapBridge, uniswapExchanges, uniswapExchangeFactory];
|
|
}
|