ethereum-waffle
Version:
Sweeter, faster and simpler than truffle.
33 lines • 1.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deployContract = void 0;
const ethers_1 = require("ethers");
const ContractJSON_1 = require("./ContractJSON");
const isFactory = (contract) => 'call' in contract;
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;
}
}
exports.deployContract = deployContract;
async function deployFromJson(wallet, contractJson, args, overrideOptions) {
const bytecode = (0, ContractJSON_1.isStandard)(contractJson) ? contractJson.evm.bytecode : contractJson.bytecode;
if (!(0, ContractJSON_1.hasByteCode)(bytecode)) {
throw new Error('Cannot deploy contract with empty bytecode');
}
const factory = new ethers_1.ContractFactory(contractJson.abi, bytecode, wallet);
const contract = await factory.deploy(...args, {
...overrideOptions
});
await contract.deployed();
return contract;
}
//# sourceMappingURL=deployContract.js.map