import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
import { ChainAddresses, WarpDeployConfigMap, WarpRouteConfigMap, WarpRouteId } from '../types.js';
import { BaseRegistry } from './BaseRegistry.js';
import { AddWarpRouteOptions, 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;
    getWarpDeployConfig(routeId: string): WarpRouteDeployConfig | null;
    /**
     * Retrieves a filtered map of the warp routes configs
     */
    getWarpRoutes(filter?: WarpRouteFilterParams): WarpRouteConfigMap;
    /**
     * Retrieves a map of all the warp routes deployment configs
     */
    getWarpDeployConfigs(filter?: WarpRouteFilterParams): WarpDeployConfigMap;
    abstract addWarpRoute(config: WarpCoreConfig, options?: AddWarpRouteOptions): void;
    protected abstract createOrUpdateChain(chain: UpdateChainParams): void;
    protected abstract getWarpRoutesForIds(ids: WarpRouteId[]): WarpCoreConfig[];
    protected abstract getWarpDeployConfigForIds(ids: WarpRouteId[]): WarpRouteDeployConfig[];
}
