@hyperlane-xyz/sdk
Version:
The official SDK for the Hyperlane Network
30 lines • 2.44 kB
TypeScript
import { ProtocolType } from '@hyperlane-xyz/utils';
import { ChainMap } from '../../../types.js';
import { MultiProvider } from '../../MultiProvider.js';
import { TxSubmitterInterface } from './TxSubmitterInterface.js';
import { TxSubmitterBuilder } from './builder/TxSubmitterBuilder.js';
import { SubmissionStrategy } from './builder/types.js';
import { SubmitterMetadata } from './types.js';
export type SubmitterBuilderSettings = {
submissionStrategy: SubmissionStrategy;
multiProvider: MultiProvider;
coreAddressesByChain: ChainMap<Record<string, string>>;
additionalSubmitterFactories?: Record<string, SubmitterFactory>;
};
export declare function getSubmitterBuilder<TProtocol extends ProtocolType>({ submissionStrategy, multiProvider, coreAddressesByChain, additionalSubmitterFactories, }: SubmitterBuilderSettings): Promise<TxSubmitterBuilder<TProtocol>>;
export type SubmitterFactory<TProtocol extends ProtocolType = any> = (multiProvider: MultiProvider, metadata: SubmitterMetadata, coreAddressesByChain: ChainMap<Record<string, string>>) => Promise<TxSubmitterInterface<TProtocol>> | TxSubmitterInterface<TProtocol>;
/**
* Retrieves a transaction submitter instance based on the provided metadata.
* This function acts as a factory, using a registry of submitter builders
* to construct the appropriate submitter for the given protocol and submission strategy.
* It allows for extending the default registry with custom submitter types.
*
* @param multiProvider - The MultiProvider instance
* @param submitterMetadata - The metadata defining the type and configuration of the submitter.
* @param coreAddressesByChain - The address of the core Hyperlane deployments by chain. Used for filling some default values for the submission strategies.
* @param additionalSubmitterFactories optional extension to extend the default registry. Can override if specifying the the same key.
* @returns A promise that resolves to an instance of a TxSubmitterInterface.
* @throws If no submitter factory is registered for the type specified in the metadata.
*/
export declare function getSubmitter<TProtocol extends ProtocolType>(multiProvider: MultiProvider, submitterMetadata: SubmitterMetadata, coreAddressesByChain: ChainMap<Record<string, string>>, additionalSubmitterFactories?: Record<string, SubmitterFactory>): Promise<TxSubmitterInterface<TProtocol>>;
//# sourceMappingURL=submitterBuilderGetter.d.ts.map