import { APIResponseType, ApiClientInterface } from '../_types/generalTypes';
import { ModelParams } from '../_types/portkeyConstructs';
import { ApiResource } from '../apiResource';
import { APIPromise, RequestOptions } from '../baseClient';
import { Stream } from '../streaming';
export declare class Completions extends ApiResource {
    create(_body: CompletionsBodyNonStreaming, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<TextCompletion>;
    create(_body: CompletionsBodyStreaming, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<Stream<TextCompletion>>;
    create(_body: CompletionsBodyBase, params?: ApiClientInterface, opts?: RequestOptions): APIPromise<Stream<TextCompletion> | TextCompletion>;
}
export interface CompletionsBodyBase extends ModelParams {
    prompt: string;
}
export interface ChatCompletionStreamOptions {
    include_usage?: boolean;
}
export interface CompletionsBodyStreaming extends CompletionsBodyBase {
    stream?: true;
    stream_options?: ChatCompletionStreamOptions | null;
}
export interface CompletionsBodyNonStreaming extends CompletionsBodyBase {
    stream?: false;
}
export type CompletionCreateParams = CompletionsBodyNonStreaming | CompletionsBodyStreaming;
interface Usage {
    prompt_tokens?: number;
    completion_tokens?: number;
    total_tokens?: number;
    [key: string]: any;
}
interface Logprobs {
    text_offset?: Array<number>;
    token_logprobs?: Array<number>;
    tokens?: Array<string>;
    top_logprobs?: Array<Record<string, number>>;
    [key: string]: any;
}
interface Choices {
    index?: number;
    text?: string;
    logprobs: Logprobs;
    finish_reason?: string;
    [key: string]: any;
}
interface TextCompletion extends APIResponseType {
    id: string;
    object: string;
    created: number;
    model: string;
    choices: Array<Choices>;
    usage?: Usage;
    system_fingerprint?: string;
    [key: string]: any;
}
export {};
