import { PrivacyConfig } from "../core/privacy.js";
import { AmplitudeOrAI, TrackFn } from "../types.js";
import { BaseAIProvider } from "./base.js";

//#region src/providers/mistral.d.ts

declare const MISTRAL_AVAILABLE: boolean;
declare const _MistralModule: Record<string, unknown> | null;
interface MistralOptions {
  amplitude: AmplitudeOrAI;
  apiKey?: string;
  privacyConfig?: PrivacyConfig | null;
  /**
   * Adopt an already-constructed `Mistral` client instead of building a fresh
   * one from `apiKey`. Used by `wrap()` so the caller's configured client
   * (server URL, retry config, etc.) is preserved.
   */
  client?: unknown;
  /** Pass the `@mistralai/mistralai` module directly to bypass `tryRequire` (required in bundler environments). */
  mistralModule?: unknown;
}
declare class Mistral extends BaseAIProvider {
  private _client;
  readonly chat: WrappedChat;
  constructor(options: MistralOptions);
  get client(): unknown;
}
declare class WrappedChat {
  private _client;
  private _trackFn;
  constructor(client: unknown, trackFn: TrackFn);
  complete(params: Record<string, unknown>): Promise<unknown>;
  stream(params: Record<string, unknown>): Promise<unknown>;
  private _wrapStream;
}
//#endregion
export { MISTRAL_AVAILABLE, Mistral, MistralOptions, WrappedChat, _MistralModule };
//# sourceMappingURL=mistral.d.ts.map