import type { MsgContext } from "../auto-reply/templating.js";
import type { SKYKOIConfig } from "../config/config.js";
import type { MediaUnderstandingConfig } from "../config/types.tools.js";
import type { MediaAttachment, MediaUnderstandingCapability, MediaUnderstandingDecision, MediaUnderstandingOutput, MediaUnderstandingProvider } from "./types.js";
import { MediaAttachmentCache } from "./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>): ProviderRegistry;
export declare function normalizeMediaAttachments(ctx: MsgContext): MediaAttachment[];
export declare function createMediaAttachmentCache(attachments: MediaAttachment[]): MediaAttachmentCache;
export declare function resolveAutoImageModel(params: {
    cfg: SKYKOIConfig;
    koiDir?: string;
    activeModel?: ActiveMediaModel;
}): Promise<ActiveMediaModel | null>;
export declare function runCapability(params: {
    capability: MediaUnderstandingCapability;
    cfg: SKYKOIConfig;
    ctx: MsgContext;
    attachments: MediaAttachmentCache;
    media: MediaAttachment[];
    koiDir?: string;
    providerRegistry: ProviderRegistry;
    config?: MediaUnderstandingConfig;
    activeModel?: ActiveMediaModel;
}): Promise<RunCapabilityResult>;
export {};
