import type { ChannelDirectoryEntryKind, ChannelId } from "../../channels/plugins/types.js";
import type { SKYKOIConfig } from "../../config/config.js";
export type DirectoryCacheKey = {
    channel: ChannelId;
    accountId?: string | null;
    kind: ChannelDirectoryEntryKind;
    source: "cache" | "live";
    signature?: string | null;
};
export declare function buildDirectoryCacheKey(key: DirectoryCacheKey): string;
export declare class DirectoryCache<T> {
    private readonly ttlMs;
    private readonly cache;
    private lastConfigRef;
    constructor(ttlMs: number);
    get(key: string, cfg: SKYKOIConfig): T | undefined;
    set(key: string, value: T, cfg: SKYKOIConfig): void;
    clearMatching(match: (key: string) => boolean): void;
    clear(cfg?: SKYKOIConfig): void;
    private resetIfConfigChanged;
}
