import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig } from '@hyperlane-xyz/sdk';
import { ChainAddresses, WarpRouteConfigMap, WarpRouteId } from '../types.js';
import { BaseRegistry } from './BaseRegistry.js';
import { IRegistry, RegistryContent, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
/**
 * Shared code for sync registries like the FileSystem and Partial registries.
 * This is required because of the inconsistent sync/async methods across registries.
 * If the Infra package can be updated to work with async-only methods, this code can be moved to the BaseRegistry class.
 */
export declare abstract class SynchronousRegistry extends BaseRegistry implements IRegistry {
    abstract listRegistryContent(): RegistryContent;
    getChains(): Array<ChainName>;
    abstract getMetadata(): ChainMap<ChainMetadata>;
    getChainMetadata(chainName: ChainName): ChainMetadata | null;
    abstract getAddresses(): ChainMap<ChainAddresses>;
    getChainAddresses(chainName: ChainName): ChainAddresses | null;
    addChain(chain: UpdateChainParams): void;
    updateChain(chain: UpdateChainParams): void;
    removeChain(chainName: ChainName): void;
    getWarpRoute(routeId: string): WarpCoreConfig | null;
    getWarpRoutes(filter?: WarpRouteFilterParams): WarpRouteConfigMap;
    abstract addWarpRoute(config: WarpCoreConfig): void;
    protected abstract createOrUpdateChain(chain: UpdateChainParams): void;
    protected abstract getWarpRoutesForIds(ids: WarpRouteId[]): WarpCoreConfig[];
}
