import "./adapters/register-builtins.js";
import type { Api, AssistantMessage, AssistantMessageEventStream, Context, Model, SimpleStreamOptions, StreamOptions } from "./types.js";
export { getEnvApiKey } from "./env-api-keys.js";
/**
 * Optional sink for diagnostic traces emitted while a request is dispatched.
 * Supplying one lets callers observe start-of-stream events without coupling
 * this module to any particular logging library.
 */
export interface StreamLogger {
    debug?: (message: string, details?: unknown) => void;
}
/**
 * Open a streaming response for the given model and request context. Validates
 * inputs, resolves the matching backend, optionally traces the dispatch, then
 * hands off to the backend's full streaming path.
 */
export declare function stream<TApi extends Api>(model: Model<TApi>, context: Context, options?: StreamOptions, logger?: StreamLogger): AssistantMessageEventStream;
/** Run a full stream to completion and resolve with the final assistant message. */
export declare function complete<TApi extends Api>(model: Model<TApi>, context: Context, options?: StreamOptions, logger?: StreamLogger): Promise<AssistantMessage>;
/**
 * Open a streaming response over the simplified options surface, which omits
 * tool wiring and other advanced knobs. Same validate/resolve/trace path as
 * {@link stream}, but dispatched to the backend's simple entry point.
 */
export declare function streamSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions, logger?: StreamLogger): AssistantMessageEventStream;
export declare function completeSimple<TApi extends Api>(model: Model<TApi>, context: Context, options?: SimpleStreamOptions, logger?: StreamLogger): Promise<AssistantMessage>;
export declare function streamByApi<TApi extends Api>(api: TApi, model: Model<TApi>, context: Context, options?: StreamOptions, logger?: StreamLogger): AssistantMessageEventStream;
