/**
 * Conversation template config
 */
export interface ConvTemplateConfig {
    system: string;
    roles: Array<string>;
    seps: Array<string>;
    separator_style: string;
    offset: number;
    stop_str: string;
    add_bos: boolean;
    stop_tokens: Array<number>;
}
/**
 * Config of one chat model, a data structure representing `mlc-chat-config.json`.
 * This only corresponds to the chat-related fields and `tokenizer_files` of `mlc-chat-config.json`.
 * Only these fields affect the conversation in runtime.
 * i.e. The third part in https://llm.mlc.ai/docs/get_started/mlc_chat_config.html.
 *
 * This is initialized in `ChatModule.reload()` with the model's `mlc-chat-config.json`.
 */
export interface ChatConfig {
    tokenizer_files: Array<string>;
    conv_config?: Partial<ConvTemplateConfig>;
    conv_template: string;
    mean_gen_len: number;
    max_gen_len: number;
    shift_fill_factor: number;
    repetition_penalty: number;
    top_p: number;
    temperature: number;
}
/**
 * Custom options that can be used to override known config values.
 */
export interface ChatOptions extends Partial<ChatConfig> {
}
/**
 * Config for a single generation.
 * Essentially `ChatConfig` without `tokenizer_files`, `conv_config`, or `conv_template`.
 * We also support additional fields not present in `mlc-chat-config.json` due to OpenAI-like APIs.
 *
 * Note that all values are optional. If unspecified, we use whatever values in `ChatConfig`
 * initialized during `ChatModule.reload()`.
 */
export interface GenerationConfig {
    mean_gen_len?: number;
    shift_fill_factor?: number;
    repetition_penalty?: number;
    top_p?: number | null;
    temperature?: number | null;
    max_gen_len?: number | null;
    frequency_penalty?: number | null;
    presence_penalty?: number | null;
    stop?: string | null | Array<string>;
    n?: number | null;
}
export declare function postInitAndCheckGenerationConfigValues(config: GenerationConfig): void;
/**
 * Information for a model.
 * @param model_url: the huggingface link to download the model weights.
 * @param local_id: what we call the model.
 * @param model_lib_url: link to the model library (wasm file) the model uses.
 * @param vram_required_MB: amount of vram in MB required to run the model (can use
 *    `utils/vram_requirements` to calculate).
 * @param low_resource_required: whether the model can run on limited devices (e.g. Android phone).
 * @param required_features: feature needed to run this model (e.g. shader-f16).
 */
export interface ModelRecord {
    model_url: string;
    local_id: string;
    model_lib_url: string;
    vram_required_MB?: number;
    low_resource_required?: boolean;
    required_features?: Array<string>;
}
/**
 * Extra configuration that can be
 * passed to the load.
 *
 * @param model_list: models to be used.
 */
export interface AppConfig {
    model_list: Array<ModelRecord>;
}
/**
 * Default models and model library mapping to be used if unspecified.
 */
export declare const prebuiltAppConfig: AppConfig;
//# sourceMappingURL=config.d.ts.map