@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
33 lines • 1.41 kB
JavaScript
import { ethers } from 'ethers';
import { assert } from '@hyperlane-xyz/utils';
import { HyperlaneRouterDeployer } from '../../router/HyperlaneRouterDeployer.js';
import { interchainAccountFactories, } from './contracts.js';
export class InterchainAccountDeployer extends HyperlaneRouterDeployer {
constructor(multiProvider, contractVerifier, concurrentDeploy) {
super(multiProvider, interchainAccountFactories, {
contractVerifier,
concurrentDeploy,
});
}
router(contracts) {
return contracts.interchainAccountRouter;
}
async deployContracts(chain, config) {
if (config.interchainSecurityModule) {
throw new Error('Configuration of ISM not supported in ICA deployer');
}
assert(config.commitmentIsm.urls.length > 0, 'Commitment ISM URLs are required for deployment of ICA Routers. Please provide at least one URL in the commitmentIsm.urls array.');
const owner = await this.multiProvider.getSignerAddress(chain);
const interchainAccountRouter = await this.deployContract(chain, 'interchainAccountRouter', [
config.mailbox,
ethers.constants.AddressZero,
owner,
50_000,
config.commitmentIsm.urls,
]);
return {
interchainAccountRouter,
};
}
}
//# sourceMappingURL=InterchainAccountDeployer.js.map