@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
126 lines • 6.8 kB
TypeScript
import { ethers } from 'ethers';
import { AmountRoutingHook, ArbL2ToL1Hook, CCIPHook, DomainRoutingHook, InterchainGasPaymaster, OPStackHook, PausableHook, ProtocolFee, StaticAggregationHook, StorageGasOracle } from '@hyperlane-xyz/core';
import { Address, Domain, EvmChainId, ProtocolType } from '@hyperlane-xyz/utils';
import { CCIPContractCache } from '../ccip/utils.js';
import { HyperlaneAddresses } from '../contracts/types.js';
import { HyperlaneModule, HyperlaneModuleParams } from '../core/AbstractHyperlaneModule.js';
import { CoreAddresses } from '../core/contracts.js';
import { HyperlaneDeployer } from '../deploy/HyperlaneDeployer.js';
import { ProxyFactoryFactories } from '../deploy/contracts.js';
import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
import { IgpConfig } from '../gas/types.js';
import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory.js';
import { MultiProvider } from '../providers/MultiProvider.js';
import { AnnotatedEV5Transaction } from '../providers/ProviderType.js';
import { ChainName, ChainNameOrId } from '../types.js';
import { EvmHookReader } from './EvmHookReader.js';
import { DeployedHook, HookFactories } from './contracts.js';
import { AggregationHookConfig, AmountRoutingHookConfig, ArbL2ToL1HookConfig, CCIPHookConfig, DerivedHookConfig, DomainRoutingHookConfig, FallbackRoutingHookConfig, HookConfig, IgpHookConfig, OpStackHookConfig, PausableHookConfig, ProtocolFeeHookConfig } from './types.js';
type HookModuleAddresses = {
deployedHook: Address;
mailbox: Address;
proxyAdmin: Address;
};
declare class HookDeployer extends HyperlaneDeployer<{}, HookFactories> {
protected cachingEnabled: boolean;
deployContracts(_chain: ChainName, _config: {}): Promise<any>;
}
export declare class EvmHookModule extends HyperlaneModule<ProtocolType.Ethereum, HookConfig, HyperlaneAddresses<ProxyFactoryFactories> & HookModuleAddresses> {
protected readonly multiProvider: MultiProvider;
protected readonly contractVerifier?: ContractVerifier | undefined;
protected readonly logger: import("pino").default.Logger<never>;
protected readonly reader: EvmHookReader;
protected readonly hookFactory: HyperlaneIsmFactory;
protected readonly deployer: HookDeployer;
readonly chain: ChainName;
readonly chainId: EvmChainId;
readonly domainId: Domain;
protected readonly txOverrides: Partial<ethers.providers.TransactionRequest>;
constructor(multiProvider: MultiProvider, params: HyperlaneModuleParams<HookConfig, HyperlaneAddresses<ProxyFactoryFactories> & HookModuleAddresses>, ccipContractCache?: CCIPContractCache, contractVerifier?: ContractVerifier | undefined);
read(): Promise<DerivedHookConfig | string>;
update(targetConfig: HookConfig): Promise<AnnotatedEV5Transaction[]>;
static create({ chain, config, proxyFactoryFactories, coreAddresses, multiProvider, ccipContractCache, contractVerifier, }: {
chain: ChainNameOrId;
config: HookConfig;
proxyFactoryFactories: HyperlaneAddresses<ProxyFactoryFactories>;
coreAddresses: Omit<CoreAddresses, 'validatorAnnounce'>;
multiProvider: MultiProvider;
ccipContractCache?: CCIPContractCache;
contractVerifier?: ContractVerifier;
}): Promise<EvmHookModule>;
protected computeRoutingHooksToSet({ currentDomains, targetDomains, }: {
currentDomains: DomainRoutingHookConfig['domains'];
targetDomains: DomainRoutingHookConfig['domains'];
}): Promise<DomainRoutingHook.HookConfigStruct[]>;
protected updateMutableHook(configs: {
current: Exclude<HookConfig, string>;
target: Exclude<HookConfig, string>;
}): Promise<AnnotatedEV5Transaction[]>;
protected updatePausableHook({ currentConfig, targetConfig, }: {
currentConfig: PausableHookConfig;
targetConfig: PausableHookConfig;
}): Promise<AnnotatedEV5Transaction[]>;
protected updateIgpHook({ currentConfig, targetConfig, }: {
currentConfig: IgpHookConfig;
targetConfig: IgpHookConfig;
}): Promise<AnnotatedEV5Transaction[]>;
protected updateIgpRemoteGasParams({ interchainGasPaymaster, gasOracle, currentOverheads, targetOverheads, }: {
interchainGasPaymaster: Address;
gasOracle: Address;
currentOverheads?: IgpConfig['overhead'];
targetOverheads: IgpConfig['overhead'];
}): Promise<AnnotatedEV5Transaction[]>;
protected updateStorageGasOracle({ gasOracle, currentOracleConfig, targetOracleConfig, targetOverhead, }: {
gasOracle: Address;
currentOracleConfig?: IgpConfig['oracleConfig'];
targetOracleConfig: IgpConfig['oracleConfig'];
targetOverhead: IgpConfig['overhead'];
}): Promise<AnnotatedEV5Transaction[]>;
protected updateProtocolFeeHook({ currentConfig, targetConfig, }: {
currentConfig: ProtocolFeeHookConfig;
targetConfig: ProtocolFeeHookConfig;
}): Promise<AnnotatedEV5Transaction[]>;
protected updateRoutingHook({ currentConfig, targetConfig, }: {
currentConfig: DomainRoutingHookConfig | FallbackRoutingHookConfig;
targetConfig: DomainRoutingHookConfig | FallbackRoutingHookConfig;
}): Promise<AnnotatedEV5Transaction[]>;
protected deploy({ config, }: {
config: HookConfig;
}): Promise<DeployedHook>;
protected deployProtocolFeeHook({ config, }: {
config: ProtocolFeeHookConfig;
}): Promise<ProtocolFee>;
protected deployPausableHook({ config, }: {
config: PausableHookConfig;
}): Promise<PausableHook>;
protected deployAggregationHook({ config, }: {
config: AggregationHookConfig;
}): Promise<StaticAggregationHook>;
protected deployOpStackHook({ config, }: {
config: OpStackHookConfig;
}): Promise<OPStackHook>;
protected deployArbL1ToL1Hook({ config, }: {
config: ArbL2ToL1HookConfig;
}): Promise<ArbL2ToL1Hook>;
protected deployCCIPHook({ config, }: {
config: CCIPHookConfig;
}): Promise<CCIPHook>;
protected deployRoutingHook({ config, }: {
config: DomainRoutingHookConfig | FallbackRoutingHookConfig;
}): Promise<DomainRoutingHook>;
protected deployIgpHook({ config, }: {
config: IgpHookConfig;
}): Promise<InterchainGasPaymaster>;
protected deployInterchainGasPaymaster({ storageGasOracle, config, }: {
storageGasOracle: StorageGasOracle;
config: IgpConfig;
}): Promise<InterchainGasPaymaster>;
protected deployAmountRoutingHook({ config, }: {
config: AmountRoutingHookConfig;
}): Promise<AmountRoutingHook>;
protected deployStorageGasOracle({ config, }: {
config: IgpConfig;
}): Promise<StorageGasOracle>;
}
export {};
//# sourceMappingURL=EvmHookModule.d.ts.map