import { ExecutionOptions, LLMCache, LLMMeta, EmbeddingOptions, EmbeddingOutput, BaseLLMTokenizeOutput, GenerateOptions, StreamGenerateOptions, AsyncStream, BaseLLMEvents } from '../../llms/base.cjs';
import { ChatLLMOutput, ChatLLMGenerateEvents, ChatLLM } from '../../llms/chat.cjs';
import { BaseMessage } from '../../llms/primitives/message.cjs';
import { E as Emitter } from '../../emitter-BWtGHYn0.cjs';
import { Groq } from 'groq-sdk';
import { GetRunContext } from '../../context.cjs';
import { ChatCompletionCreateParams } from 'groq-sdk/resources/chat/completions';
import '../../errors.cjs';
import '../../internals/types.cjs';
import '../../internals/helpers/guards.cjs';
import '../../internals/serializable.cjs';
import '../../cache/base.cjs';
import 'promise-based-task';
import '../../internals/helpers/promise.cjs';

type Parameters = Omit<ChatCompletionCreateParams, "stream" | "messages" | "model">;
type Response = Omit<Groq.Chat.ChatCompletionChunk, "object">;
declare class ChatGroqOutput extends ChatLLMOutput {
    readonly responses: Response[];
    constructor(response: Response);
    get messages(): BaseMessage[];
    getTextContent(): string;
    merge(other: ChatGroqOutput): void;
    toString(): string;
    createSnapshot(): {
        responses: Response[];
    };
    loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
}
interface Input {
    modelId?: string;
    client?: Groq;
    parameters?: Parameters;
    executionOptions?: ExecutionOptions;
    cache?: LLMCache<ChatGroqOutput>;
}
type GroqChatLLMEvents = ChatLLMGenerateEvents<ChatGroqOutput>;
declare class GroqChatLLM extends ChatLLM<ChatGroqOutput> {
    readonly emitter: Emitter<GroqChatLLMEvents>;
    readonly client: Groq;
    readonly parameters: Partial<Parameters>;
    constructor({ client, modelId, parameters, executionOptions, cache, }?: Input);
    meta(): Promise<LLMMeta>;
    embed(input: BaseMessage[][], options?: EmbeddingOptions): Promise<EmbeddingOutput>;
    tokenize(input: BaseMessage[]): Promise<BaseLLMTokenizeOutput>;
    protected _prepareRequest(input: BaseMessage[], options: GenerateOptions): ChatCompletionCreateParams;
    protected _generate(input: BaseMessage[], options: GenerateOptions, run: GetRunContext<typeof this>): Promise<ChatGroqOutput>;
    protected _stream(input: BaseMessage[], options: Partial<StreamGenerateOptions>, run: GetRunContext<typeof this>): AsyncStream<ChatGroqOutput>;
    createSnapshot(): {
        parameters: Partial<Parameters>;
        client: Groq;
        modelId: string;
        executionOptions: ExecutionOptions;
        emitter: Emitter<BaseLLMEvents<unknown, ChatGroqOutput>>;
        cache: LLMCache<ChatGroqOutput>;
    };
}

export { ChatGroqOutput, GroqChatLLM, type GroqChatLLMEvents };
