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];
 | 
						|
}
 |