import type { MsgContext } from "../auto-reply/templating.js";
import type { KaijiBotConfig } from "../config/config.js";
import type { MediaUnderstandingConfig } from "../config/types.tools.js";
import { MediaAttachmentCache } from "./attachments.js";
import type { MediaAttachment, MediaUnderstandingCapability, MediaUnderstandingDecision, MediaUnderstandingOutput, MediaUnderstandingProvider } from "./types.js";
export { createMediaAttachmentCache, normalizeMediaAttachments } from "./runner.attachments.js";
export type ActiveMediaModel = {
    provider: string;
    model?: string;
};
type ProviderRegistry = Map<string, MediaUnderstandingProvider>;
export type RunCapabilityResult = {
    outputs: MediaUnderstandingOutput[];
    decision: MediaUnderstandingDecision;
};
export declare function buildProviderRegistry(overrides?: Record<string, MediaUnderstandingProvider>, cfg?: KaijiBotConfig): ProviderRegistry;
export declare function resolveMediaAttachmentLocalRoots(params: {
    cfg: KaijiBotConfig;
    ctx: MsgContext;
}): readonly string[];
export declare function clearMediaUnderstandingBinaryCacheForTests(): void;
export declare function resolveAutoImageModel(params: {
    cfg: KaijiBotConfig;
    agentDir?: string;
    activeModel?: ActiveMediaModel;
}): Promise<ActiveMediaModel | null>;
export declare function runCapability(params: {
    capability: MediaUnderstandingCapability;
    cfg: KaijiBotConfig;
    ctx: MsgContext;
    attachments: MediaAttachmentCache;
    media: MediaAttachment[];
    agentDir?: string;
    providerRegistry: ProviderRegistry;
    config?: MediaUnderstandingConfig;
    activeModel?: ActiveMediaModel;
}): Promise<RunCapabilityResult>;
