import * as z from "zod/v4";
import { OpenEnum } from "../types/enums.js";
/**
 * A curated OpenRouter fusion preset (slugs follow `<task>-<tier>`, e.g. `general-high`). Expands server-side into the preset's analysis_models panel and analyst model, so callers never name individual models. Explicitly provided `analysis_models` / `model` take precedence.
 */
export declare const PresetEnum: {
    readonly GeneralHigh: "general-high";
    readonly GeneralBudget: "general-budget";
    readonly GeneralFast: "general-fast";
};
/**
 * A curated OpenRouter fusion preset (slugs follow `<task>-<tier>`, e.g. `general-high`). Expands server-side into the preset's analysis_models panel and analyst model, so callers never name individual models. Explicitly provided `analysis_models` / `model` take precedence.
 */
export type PresetEnum = OpenEnum<typeof PresetEnum>;
export type Parameters2 = string | number | boolean;
export type Parameters1 = string | number | boolean;
export type Parameters3 = string | number | boolean | Array<string | number | boolean | null> | {
    [k: string]: string | number | boolean | null;
};
export type FusionPluginTool = {
    /**
     * Optional configuration forwarded as the tool's `parameters` object.
     */
    parameters?: {
        [k: string]: string | number | boolean | Array<string | number | boolean | null> | {
            [k: string]: string | number | boolean | null;
        } | null;
    } | undefined;
    /**
     * Server tool type identifier (e.g. "openrouter:web_search", "openrouter:web_fetch").
     */
    type: string;
};
export type FusionPlugin = {
    /**
     * Slugs of models to run in parallel as the "expert panel" the analyst analyzes. Each model receives the same user prompt with web_search + web_fetch enabled. Capped at 8 models to bound cost amplification. When omitted, defaults to the Quality preset from the /labs/fusion UI (~anthropic/claude-opus-latest, ~openai/gpt-latest, ~google/gemini-pro-latest).
     */
    analysisModels?: Array<string> | undefined;
    /**
     * Set to false to disable the fusion plugin for this request. Defaults to true.
     */
    enabled?: boolean | undefined;
    id: "fusion";
    /**
     * Maximum number of tool-calling steps each panelist (analysis model) and the analyst model may take during their agentic web-research loop. Models with web_search/web_fetch enabled iterate until they produce a text response or hit this ceiling. Defaults to 4. Capped at 16.
     */
    maxToolCalls?: number | undefined;
    /**
     * Slug of the model that performs both the analyst step (with web_search + web_fetch) and the final synthesis. When omitted, defaults to the first model in the Quality preset.
     */
    model?: string | undefined;
    /**
     * A curated OpenRouter fusion preset (slugs follow `<task>-<tier>`, e.g. `general-high`). Expands server-side into the preset's analysis_models panel and analyst model, so callers never name individual models. Explicitly provided `analysis_models` / `model` take precedence.
     */
    preset?: PresetEnum | undefined;
    /**
     * Server tools available to panelist and analyst inner calls. Each entry uses the same `{ type, parameters? }` shorthand as the outer Chat Completions request. When omitted, defaults to `[{ type: "openrouter:web_search" }, { type: "openrouter:web_fetch" }]`. Pass an empty array to disable tools entirely (panelists answer from parametric knowledge only).
     */
    tools?: Array<FusionPluginTool> | undefined;
};
/** @internal */
export declare const PresetEnum$outboundSchema: z.ZodType<string, PresetEnum>;
/** @internal */
export type Parameters2$Outbound = string | number | boolean;
/** @internal */
export declare const Parameters2$outboundSchema: z.ZodType<Parameters2$Outbound, Parameters2>;
export declare function parameters2ToJSON(parameters2: Parameters2): string;
/** @internal */
export type Parameters1$Outbound = string | number | boolean;
/** @internal */
export declare const Parameters1$outboundSchema: z.ZodType<Parameters1$Outbound, Parameters1>;
export declare function parameters1ToJSON(parameters1: Parameters1): string;
/** @internal */
export type Parameters3$Outbound = string | number | boolean | Array<string | number | boolean | null> | {
    [k: string]: string | number | boolean | null;
};
/** @internal */
export declare const Parameters3$outboundSchema: z.ZodType<Parameters3$Outbound, Parameters3>;
export declare function parameters3ToJSON(parameters3: Parameters3): string;
/** @internal */
export type FusionPluginTool$Outbound = {
    parameters?: {
        [k: string]: string | number | boolean | Array<string | number | boolean | null> | {
            [k: string]: string | number | boolean | null;
        } | null;
    } | undefined;
    type: string;
};
/** @internal */
export declare const FusionPluginTool$outboundSchema: z.ZodType<FusionPluginTool$Outbound, FusionPluginTool>;
export declare function fusionPluginToolToJSON(fusionPluginTool: FusionPluginTool): string;
/** @internal */
export type FusionPlugin$Outbound = {
    analysis_models?: Array<string> | undefined;
    enabled?: boolean | undefined;
    id: "fusion";
    max_tool_calls?: number | undefined;
    model?: string | undefined;
    preset?: string | undefined;
    tools?: Array<FusionPluginTool$Outbound> | undefined;
};
/** @internal */
export declare const FusionPlugin$outboundSchema: z.ZodType<FusionPlugin$Outbound, FusionPlugin>;
export declare function fusionPluginToJSON(fusionPlugin: FusionPlugin): string;
//# sourceMappingURL=fusionplugin.d.ts.map