import type { Content, Part, ModelParams, AiCapability, ModelMetadata } from './types';
/**
 * Formats the various supported formats of new user content into a consistent content shape.
 *
 * @since 0.1.0
 *
 * @param content - New content.
 * @returns The formatted new content.
 */
export declare function formatNewContent(content: string | Part[] | Content): Content;
/**
 * Performs some very basic client-side validation for the content argument.
 *
 * @since 0.1.0
 *
 * @param content - Content data to pass to the model, including the prompt and optional history.
 */
export declare function validateContent(content: string | Part[] | Content | Content[]): void;
/**
 * Validates the chat history.
 *
 * @since 0.1.0
 *
 * @param history - Chat history contents.
 */
export declare function validateChatHistory(history: Content[]): void;
/**
 * Validates the model parameters.
 *
 * @since 0.3.0
 *
 * @param modelParams - Model parameters.
 */
export declare function validateModelParams(modelParams: ModelParams): void;
/**
 * Validates the given available capabilities include all requested capabilities.
 *
 * @since 0.3.0
 *
 * @param availableCapabilities - Available capabilities.
 * @param requestedCapabilities - Requested capabilities.
 */
export declare function validateCapabilities(availableCapabilities: AiCapability[], requestedCapabilities: AiCapability[]): void;
/**
 * Detects the requested capabilities from the content.
 *
 * @since 0.3.0
 *
 * @param content          - Content data to pass to the model, including the prompt and optional history.
 * @param baseCapabilities - Optional. Base capabilities to include in the detected capabilities.
 * @returns Detected capabilities.
 */
export declare function detectRequestedCapabilitiesFromContent(content: string | Part[] | Content | Content[], baseCapabilities?: AiCapability[]): AiCapability[];
/**
 * Finds a model from the available models based on the given model parameters.
 *
 * An exception is thrown if no matching model is found based on the given model parameters.
 *
 * @since 0.3.0
 *
 * @param availableModels - Metadata for each model, mapped by model slug.
 * @param modelParams     - Model parameters. Should contain either a 'model' slug or requested 'capabilities'.
 * @returns Model data object.
 */
export declare function findModel(availableModels: Record<string, ModelMetadata>, modelParams: ModelParams): ModelMetadata;
//# sourceMappingURL=util.d.ts.map