import { ChatCompletionMessageToolCall, ChatCompletionStreamOptions, ChatCompletionTokenLogprob } from 'openai/resources/chat/completions';
import { APIResponseType, ApiClientInterface } from '../_types/generalTypes';
import { ModelParams } from '../_types/portkeyConstructs';
import { ApiResource } from '../apiResource';
import { APIPromise, RequestOptions } from '../baseClient';
import { Stream } from '../streaming';
import { Metadata, CursorPageParams } from '../_types/sharedTypes';
export declare class Chat extends ApiResource {
    completions: ChatCompletions;
}
declare class ChatCompletions extends ApiResource {
    messages: ChatCompletionsMessages;
    create(_body: ChatCompletionsBodyNonStreaming, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<ChatCompletion>;
    create(_body: ChatCompletionsBodyStreaming, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<Stream<ChatCompletion>>;
    create(_body: ChatCompletionsBodyBase, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<Stream<ChatCompletion> | ChatCompletion>;
    retrieve(completionId: string, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<ChatCompletion>;
    update(completionId: string, _body: ChatCompletionUpdateParams, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<ChatCompletion>;
    list(query?: ChatCompletionListParams, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<ChatCompletionListResponse>;
    del(completionId: string, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<ChatCompletion>;
}
export declare class ChatCompletionsMessages extends ApiResource {
    list(completionId: string, query?: MessageListParams, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<any>;
}
export interface ChatCompletionsBodyBase extends ModelParams {
    messages?: Array<Message>;
    response_format?: object;
    audio?: any | null;
    modalities?: Array<any> | null;
    prediction?: any | null;
    reasoning_effort?: any;
    store?: boolean | null;
    metadata?: Record<string, string> | null;
    max_completion_tokens?: number | null;
}
export interface ChatCompletionsBodyStreaming extends ChatCompletionsBodyBase {
    stream?: true;
    stream_options?: ChatCompletionStreamOptions;
}
export interface ChatCompletionsBodyNonStreaming extends ChatCompletionsBodyBase {
    stream?: false;
}
export type ChatCompletionCreateParams = ChatCompletionsBodyNonStreaming | ChatCompletionsBodyStreaming;
export interface Usage {
    prompt_tokens?: number;
    completion_tokens?: number;
    total_tokens?: number;
    [key: string]: any;
}
export interface Message {
    role: string;
    content: string | Array<any>;
    refusal?: string;
    function_call?: any;
    tool_calls?: Array<ChatCompletionMessageToolCall>;
    tool_call_id?: string;
    [key: string]: any;
}
export interface Logprobs {
    content: Array<ChatCompletionTokenLogprob> | null;
    refusal: Array<ChatCompletionTokenLogprob> | null;
    [key: string]: any;
}
export interface Choices {
    index?: number;
    message?: Message;
    delta?: Message;
    finish_reason?: string;
    logprobs?: Logprobs;
    [key: string]: any;
}
export interface ChatCompletion extends APIResponseType {
    id: string;
    object: string;
    created: number;
    model: string;
    choices: Array<Choices>;
    usage: Usage;
    service_tier?: string;
    system_fingerprint?: string;
    [key: string]: any;
}
export interface ChatCompletionResponse {
    id: string;
    object: string;
    created: number;
    model: string;
    choices: Array<Choices>;
    usage: Usage;
    service_tier?: string;
    system_fingerprint?: string;
    [key: string]: any;
}
export interface ChatCompletionUpdateParams {
    metadata: Metadata | null;
}
export interface ChatCompletionListParams extends CursorPageParams {
    metadata?: Metadata | null;
    model?: string;
    order?: 'asc' | 'desc';
}
export interface ChatCompletionListResponse extends APIResponseType {
    data: Array<ChatCompletion>;
    object: string;
}
export interface MessageListParams extends CursorPageParams {
    order?: 'asc' | 'desc';
}
export {};
