import type { Logger } from 'pino';
import type { ChainMap, ChainMetadata, ChainName, WarpCoreConfig } from '@hyperlane-xyz/sdk';
import type { ChainAddresses, MaybePromise } from '../types.js';
import { WarpRouteConfigMap } from '../types.js';
import type { IRegistry, RegistryContent, RegistryType, UpdateChainParams, WarpRouteFilterParams } from './IRegistry.js';
export declare abstract class BaseRegistry implements IRegistry {
    abstract type: RegistryType;
    readonly uri: string;
    protected readonly logger: Logger;
    protected listContentCache?: RegistryContent;
    protected metadataCache?: ChainMap<ChainMetadata>;
    protected isMetadataCacheFull: boolean;
    protected addressCache?: ChainMap<ChainAddresses>;
    protected isAddressCacheFull: boolean;
    constructor({ uri, logger }: {
        uri: string;
        logger?: Logger;
    });
    getUri(itemPath?: string): string;
    protected getChainsPath(): string;
    protected getWarpRoutesPath(): string;
    protected getWarpRoutesArtifactPaths({ tokens }: WarpCoreConfig): {
        configPath: string;
        addressesPath: string;
    };
    abstract listRegistryContent(): MaybePromise<RegistryContent>;
    abstract getChains(): MaybePromise<Array<ChainName>>;
    abstract getMetadata(): MaybePromise<ChainMap<ChainMetadata>>;
    abstract getChainMetadata(chainName: ChainName): MaybePromise<ChainMetadata | null>;
    abstract getAddresses(): MaybePromise<ChainMap<ChainAddresses>>;
    abstract getChainAddresses(chainName: ChainName): MaybePromise<ChainAddresses | null>;
    getChainLogoUri(chainName: ChainName): Promise<string | null>;
    abstract addChain(chain: UpdateChainParams): MaybePromise<void>;
    abstract updateChain(chain: UpdateChainParams): MaybePromise<void>;
    abstract removeChain(chain: ChainName): MaybePromise<void>;
    abstract getWarpRoute(routeId: string): MaybePromise<WarpCoreConfig | null>;
    abstract getWarpRoutes(filter?: WarpRouteFilterParams): MaybePromise<WarpRouteConfigMap>;
    abstract addWarpRoute(config: WarpCoreConfig): MaybePromise<void>;
    merge(otherRegistry: IRegistry): IRegistry;
}
