ethereum-waffle
Version:
Sweeter, faster and simpler than truffle.
29 lines • 1.24 kB
JavaScript
import { ContractFactory } from 'ethers';
import { isStandard, hasByteCode } from './ContractJSON';
const isFactory = (contract) => 'call' in contract;
export async function deployContract(wallet, factoryOrContractJson, args = [], overrideOptions = {}) {
if (isFactory(factoryOrContractJson)) {
const Factory = factoryOrContractJson;
const contractFactory = new Factory(wallet);
const contract = await contractFactory.deploy(...args, overrideOptions);
await contract.deployed();
return contract;
}
else {
const contract = await deployFromJson(wallet, factoryOrContractJson, args, overrideOptions);
return contract;
}
}
async function deployFromJson(wallet, contractJson, args, overrideOptions) {
const bytecode = isStandard(contractJson) ? contractJson.evm.bytecode : contractJson.bytecode;
if (!hasByteCode(bytecode)) {
throw new Error('Cannot deploy contract with empty bytecode');
}
const factory = new ContractFactory(contractJson.abi, bytecode, wallet);
const contract = await factory.deploy(...args, {
...overrideOptions
});
await contract.deployed();
return contract;
}
//# sourceMappingURL=deployContract.js.map