import { Configuration, OpenAIApi, CreateCompletionRequest, CreateChatCompletionRequest } from "openai-old";
import AbortController from "abort-controller";
import OpenAI from "openai";
export interface ITools {
    [key: string]: (args: {
        [key: string]: any;
    }) => any;
}
export interface IResponseWithTools {
    content: string | null | undefined;
    toolsResult?: {
        [key: string]: any;
    };
}
export declare const maxTokensModels: {
    "gpt-3.5-turbo": number;
    "gpt-4": number;
    "gpt-3.5-turbo-16k": number;
};
export default class SimpleGPT {
    protected _key: string;
    protected _configuration: Configuration | null;
    protected _openai: OpenAIApi | null;
    protected __openai: OpenAI | null;
    protected req: any;
    protected abortController: AbortController;
    protected reader: any;
    get chatModels(): string[];
    get defaultOptsGPT(): Partial<CreateCompletionRequest>;
    constructor({ key }: {
        key: string;
    });
    transcribe(formData: FormData): Promise<any>;
    getStream(prompt: string, fData: (delta: string, json: {
        [key: string]: any;
    }, raw: any) => any, fEnd: any, opts?: Partial<CreateCompletionRequest & CreateChatCompletionRequest>): Promise<void>;
    abortStream(): void;
    getFull(prompt: string, opts?: Partial<OpenAI.ChatCompletionCreateParamsNonStreaming>): Promise<undefined | OpenAI.Chat.Completions.ChatCompletion.Choice[]>;
    getAll(prompt: string, opts?: Partial<OpenAI.ChatCompletionCreateParamsNonStreaming>): Promise<null | string[]>;
    getCompletions(prompt: string, opts?: Partial<CreateCompletionRequest>): Promise<null | string[]>;
    getWithTools(prompt: string, opts?: Partial<OpenAI.ChatCompletionCreateParamsNonStreaming>, functions?: ITools): Promise<IResponseWithTools>;
    get(prompt: string, opts?: Partial<OpenAI.ChatCompletionCreateParamsNonStreaming>, functions?: ITools): Promise<string | null | undefined>;
    getFirst: (prompt: string, opts?: Partial<OpenAI.ChatCompletionCreateParamsNonStreaming>, functions?: ITools) => Promise<string | null | undefined>;
    getCode(prompt: string, opts?: Partial<CreateCompletionRequest>): Promise<null | string[]>;
    getCodeFirst(prompt: string, opts?: Partial<CreateCompletionRequest>): Promise<string | undefined>;
    getImages(prompt: string, n?: number, size?: (256 | 512 | 1024), model?: string): Promise<string[]>;
    getImage(prompt: string, size?: (256 | 512 | 1024), model?: string): Promise<string | undefined>;
    setApiKey(key: string): void;
    getModels(): Promise<null | string[]>;
}
