import { API_CLIENT_CONDUIT_OPENAI_REFERENCE } from "@infersec/definitions";
import { implementAPIReference, type APIRequest } from "@infersec/fetch";
import { Logger } from "@infersec/logger";
import { APIClient } from "../apiClient/index.js";
import { Configuration } from "../configuration.js";
import { ModelManager } from "../modelManagement/ModelManager.js";
type ConduitOpenAIAPIReferenceHandlers = Parameters<typeof implementAPIReference<typeof API_CLIENT_CONDUIT_OPENAI_REFERENCE>>[0]["api"];
export declare function createConduitOpenAIAPIReferenceHandlers({ apiClient, configuration, getModelID, getModelManager, logger, startup }: {
    apiClient: APIClient;
    configuration: Configuration;
    getModelID: () => string;
    getModelManager: () => ModelManager;
    logger: Logger;
    startup: number;
}): ConduitOpenAIAPIReferenceHandlers;
export declare function createGetModelsHandler(options: {
    apiClient: APIClient;
    configuration: Configuration;
    getModelID: () => string;
    getModelManager: () => ModelManager;
    logger: Logger;
    startup: number;
}): (params: {
    req: APIRequest;
    res: import("@infersec/fetch").APIResponse;
    parameters: Record<string, never>;
    query: Record<string, never>;
    body: never;
    responseSchema: import("zod").ZodObject<{
        object: import("zod").ZodLiteral<"list">;
        data: import("zod").ZodArray<import("zod").ZodObject<{
            id: import("zod").ZodString;
            object: import("zod").ZodLiteral<"model">;
            created: import("zod").ZodNumber;
            owned_by: import("zod").ZodString;
            limit: import("zod").ZodOptional<import("zod").ZodObject<{
                context: import("zod").ZodNullable<import("zod").ZodNumber>;
            }, import("zod/v4/core").$strip>>;
        }, import("zod/v4/core").$strip>>;
    }, import("zod/v4/core").$strip>;
}) => Promise<{
    body: {
        object: "list";
        data: {
            id: string;
            object: "model";
            created: number;
            owned_by: string;
            limit?: {
                context: number | null;
            } | undefined;
        }[];
    };
    headers?: Record<string, string>;
    status: number;
} | {
    headers?: Record<string, string>;
    status: number;
    statusText: string;
}>;
export declare function createPostChatCompletionsHandler(options: {
    apiClient: APIClient;
    configuration: Configuration;
    getModelID: () => string;
    getModelManager: () => ModelManager;
    logger: Logger;
    startup: number;
}): (params: {
    req: APIRequest;
    res: import("@infersec/fetch").APIResponse;
    parameters: Record<string, never>;
    query: Record<string, never>;
    body: {
        messages: ({
            role: "system";
            content: string;
            name?: string | undefined;
        } | {
            role: "user";
            content: string | ({
                type: "text";
                text: string;
            } | {
                type: "image_url";
                image_url: {
                    url: string;
                    detail?: "auto" | "high" | "low" | undefined;
                };
            })[];
            name?: string | undefined;
        } | {
            role: "assistant";
            content?: string | null | undefined;
            name?: string | undefined;
            tool_calls?: {
                id: string;
                type: "function";
                function: {
                    name: string;
                    arguments: string;
                };
            }[] | undefined;
            function_call?: {
                name: string;
                arguments: string;
            } | undefined;
            refusal?: string | null | undefined;
        } | {
            role: "tool";
            content: string;
            tool_call_id: string;
        } | {
            role: "function";
            content: string | null;
            name: string;
        })[];
        model: string;
        frequency_penalty?: number | null | undefined;
        function_call?: "none" | "auto" | {
            name: string;
        } | undefined;
        functions?: {
            name: string;
            description?: string | undefined;
            parameters?: Record<string, any> | undefined;
        }[] | undefined;
        logit_bias?: Record<string, number> | null | undefined;
        logprobs?: boolean | null | undefined;
        top_logprobs?: number | null | undefined;
        max_tokens?: number | null | undefined;
        n?: number | null | undefined;
        presence_penalty?: number | null | undefined;
        response_format?: {
            type: "text" | "json_object";
        } | undefined;
        seed?: number | null | undefined;
        stop?: string | string[] | null | undefined;
        stream?: boolean | null | undefined;
        temperature?: number | null | undefined;
        tool_choice?: "none" | "auto" | {
            type: "function";
            function: {
                name: string;
            };
        } | undefined;
        tools?: {
            type: "function";
            function: {
                name: string;
                description?: string | undefined;
                parameters?: Record<string, any> | undefined;
            };
        }[] | undefined;
        top_p?: number | null | undefined;
        user?: string | undefined;
    };
    responseSchema: undefined;
}) => Promise<{
    body: import("stream").Readable;
    headers?: Record<string, string>;
    status: number;
} | {
    headers?: Record<string, string>;
    status: number;
    statusText: string;
}>;
export declare function createPostCompletionsHandler(options: {
    apiClient: APIClient;
    configuration: Configuration;
    getModelID: () => string;
    getModelManager: () => ModelManager;
    logger: Logger;
    startup: number;
}): (params: {
    req: APIRequest;
    res: import("@infersec/fetch").APIResponse;
    parameters: Record<string, never>;
    query: Record<string, never>;
    body: {
        model: string;
        prompt: string | number[] | string[] | number[][] | null;
        best_of?: number | null | undefined;
        echo?: boolean | null | undefined;
        frequency_penalty?: number | null | undefined;
        logit_bias?: Record<string, number> | null | undefined;
        logprobs?: number | null | undefined;
        max_tokens?: number | null | undefined;
        n?: number | null | undefined;
        presence_penalty?: number | null | undefined;
        seed?: number | null | undefined;
        stop?: string | string[] | null | undefined;
        stream?: boolean | null | undefined;
        suffix?: string | null | undefined;
        temperature?: number | null | undefined;
        top_p?: number | null | undefined;
        user?: string | undefined;
    };
    responseSchema: undefined;
}) => Promise<{
    body: import("stream").Readable;
    headers?: Record<string, string>;
    status: number;
} | {
    headers?: Record<string, string>;
    status: number;
    statusText: string;
}>;
export {};
