@@ -35,11 +35,15 @@ import {
3535 proxyFactoryFactories ,
3636} from '../deploy/contracts.js' ;
3737import { proxyAdminUpdateTxs } from '../deploy/proxy.js' ;
38+ import { createDefaultProxyFactoryFactories } from '../deploy/proxyFactoryUtils.js' ;
39+ import { ProxyFactoryFactoriesAddresses } from '../deploy/types.js' ;
3840import { ContractVerifier } from '../deploy/verify/ContractVerifier.js' ;
3941import { HookFactories } from '../hook/contracts.js' ;
4042import { EvmIsmModule } from '../ism/EvmIsmModule.js' ;
4143import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory.js' ;
4244import { DerivedIsmConfig , IsmConfig } from '../ism/types.js' ;
45+ import { isStaticDeploymentSupported } from '../ism/utils.js' ;
46+ import { ChainTechnicalStack } from '../metadata/chainMetadataTypes.js' ;
4347import { MultiProvider } from '../providers/MultiProvider.js' ;
4448import { AnnotatedEV5Transaction } from '../providers/ProviderType.js' ;
4549import { ChainName , ChainNameOrId } from '../types.js' ;
@@ -279,14 +283,16 @@ export class EvmCoreModule extends HyperlaneModule<
279283 contractVerifier ?: ContractVerifier ;
280284 } ) : Promise < DeployedCoreAddresses > {
281285 const { config, multiProvider, chain, contractVerifier } = params ;
282- const chainName = multiProvider . getChainName ( chain ) ;
286+ const { name : chainName , technicalStack } =
287+ multiProvider . getChainMetadata ( chain ) ;
283288
284- const ismFactoryFactories = await EvmCoreModule . deployIsmFactories ( {
285- chainName,
286- config,
287- multiProvider,
288- contractVerifier,
289- } ) ;
289+ const ismFactoryFactories : ProxyFactoryFactoriesAddresses =
290+ await this . getIsmFactoryFactories ( technicalStack , {
291+ chainName,
292+ config,
293+ multiProvider,
294+ contractVerifier,
295+ } ) ;
290296
291297 const ismFactory = new HyperlaneIsmFactory (
292298 attachContractsMap (
@@ -381,7 +387,6 @@ export class EvmCoreModule extends HyperlaneModule<
381387 // Set Core & extra addresses
382388 return {
383389 ...ismFactoryFactories ,
384-
385390 proxyAdmin : proxyAdmin . address ,
386391 mailbox : mailbox . address ,
387392 interchainAccountRouter,
@@ -486,4 +491,31 @@ export class EvmCoreModule extends HyperlaneModule<
486491 ) ;
487492 return mailbox ;
488493 }
494+
495+ /**
496+ * Retrieves the ISM factory factories based on the provided technicalStack and parameters.
497+ *
498+ * @param technicalStack - The technicalStack to determine if static address set deployment should be skipped.
499+ * @param params - An object containing the parameters needed for ISM factory deployment.
500+ * @param params.chainName - The name of the chain for which the ISM factories are being deployed.
501+ * @param params.config - The core configuration to be used during deployment.
502+ * @param params.multiProvider - The multi-provider instance for interacting with the blockchain.
503+ * @param params.contractVerifier - An optional contract verifier for validating contracts during deployment.
504+ * @returns A promise that resolves to the addresses of the deployed ISM factory factories.
505+ */
506+ private static async getIsmFactoryFactories (
507+ technicalStack : ChainTechnicalStack | undefined ,
508+ params : {
509+ chainName : string ;
510+ config : CoreConfig ;
511+ multiProvider : MultiProvider ;
512+ contractVerifier ?: ContractVerifier ;
513+ } ,
514+ ) : Promise < ProxyFactoryFactoriesAddresses > {
515+ // Check if we should skip static address set deployment
516+ if ( ! isStaticDeploymentSupported ( technicalStack ) ) {
517+ return createDefaultProxyFactoryFactories ( ) ;
518+ }
519+ return EvmCoreModule . deployIsmFactories ( params ) ;
520+ }
489521}
0 commit comments