import { WithAddress } from '@hyperlane-xyz/utils';
import { ChainName } from '../../types.js';
import { DomainRoutingIsmConfig, IsmType, RoutingIsmConfig } from '../types.js';
import type { BaseMetadataBuilder } from './builder.js';
import type { MetadataBuilder, MetadataContext, StructuredMetadata } from './types.js';
export type RoutingMetadata<T> = {
    type: IsmType.ROUTING;
    origin: ChainName;
    metadata: T;
};
export declare class RoutingMetadataBuilder implements MetadataBuilder {
    protected baseMetadataBuilder: BaseMetadataBuilder;
    constructor(baseMetadataBuilder: BaseMetadataBuilder);
    build(context: MetadataContext<WithAddress<DomainRoutingIsmConfig>>, maxDepth?: number): Promise<string>;
    static decode(metadata: string, context: MetadataContext<WithAddress<DomainRoutingIsmConfig>>): RoutingMetadata<StructuredMetadata | string>;
}
export declare class DefaultFallbackRoutingMetadataBuilder extends RoutingMetadataBuilder {
    build(context: MetadataContext<WithAddress<RoutingIsmConfig>>, maxDepth?: number): Promise<string>;
}
//# sourceMappingURL=routing.d.ts.map