import { default as OpenAI } from 'openai';
import { RequestOptions } from 'openai/core';
import { Stream } from 'openai/streaming';
import { APIResource } from '../../resource';

export declare class Completions extends APIResource {
    protected resources: Record<ChatModel, {
        domain: string;
        url: string;
    }>;
    /**
     * Creates a model response for the given chat conversation.
     *
     * See https://help.aliyun.com/zh/dashscope/developer-reference/api-details
     */
    create(body: ChatCompletionCreateParamsNonStreaming, options?: RequestOptions): Promise<OpenAI.ChatCompletion>;
    create(body: ChatCompletionCreateParamsStreaming, options?: RequestOptions): Promise<Stream<OpenAI.ChatCompletionChunk>>;
}
export interface ChatCompletionCreateParamsNonStreaming extends OpenAI.ChatCompletionCreateParamsNonStreaming {
    model: ChatModel;
    top_k?: number | null;
    chat_id?: string | null;
}
export interface ChatCompletionCreateParamsStreaming extends OpenAI.ChatCompletionCreateParamsStreaming {
    model: ChatModel;
    top_k?: number | null;
    chat_id?: string | null;
}
export type ChatCompletionCreateParams = ChatCompletionCreateParamsNonStreaming | ChatCompletionCreateParamsStreaming;
export type ChatModel = 'spark-1.5' | 'spark-2' | 'spark-3';
export declare namespace ChatCompletions {
    type ChatCompletionParameters = {
        header: {
            app_id: string;
            uid?: string;
        };
        parameter: {
            chat: {
                domain: string;
                temperature?: number | null;
                max_tokens?: number | null;
                top_k?: number | null;
                chat_id?: string | null;
            };
        };
        payload: {
            message: {
                text: OpenAI.ChatCompletionMessageParam[];
            };
            functions?: {
                text: OpenAI.ChatCompletionCreateParams.Function[];
            };
        };
    };
    type ChatCompletionResponse = {
        header: {
            code: number;
            message: string;
            sid: string;
            status: number;
        };
        payload: {
            choices: {
                status: number;
                seq: number;
                text: OpenAI.ChatCompletionMessage[];
            };
            usage: {
                text: {
                    question_tokens: number;
                    prompt_tokens: number;
                    completion_tokens: number;
                    total_tokens: number;
                };
            };
        };
    };
}
