import type { AIProviderConfig, ModelParameters } from '../../types/index.js';
/**
 * Provider-scoped extras forwarded to streamText/generateText via
 * `providerOptions`. The outer key is the provider id (e.g. "openai" for the
 * OpenAI Responses API, or the provider name for openai-compatible providers
 * like OpenRouter). The inner shape depends on the provider.
 *
 * Kept loose on purpose — the AI SDK's exact type lives in
 * `@ai-sdk/provider-utils`, which we don't depend on directly. The chat
 * handler casts the return value to the SDK's narrower type at the call
 * site, where it spreads into `streamText`.
 */
export type ProviderOptions = Record<string, Record<string, unknown>>;
/**
 * Build the `providerOptions` value for a streamText/generateText call.
 *
 * Currently handles two providers:
 *   - chatgpt-codex: requires `instructions`, `store: false`, and reasoning
 *     controls under the `openai` provider key (Responses API).
 *   - openrouter: forwards `provider`, `reasoning`, `plugins`, `models`,
 *     `service_tier`, `route`, and `user` into the request body via the
 *     `openrouter` provider key. The top-level `reasoningEffort` (from
 *     ModelParameters / `/tune`) is mapped to `reasoning.effort` when the
 *     user has not provided a more specific `openrouter.reasoning` block.
 *
 * OpenRouter options come from `providerConfig.openrouter` (always-on, set
 * in agents.config.json) — not from tune, so they aren't dropped when the
 * user toggles tune off.
 *
 * Returns `undefined` when no provider-specific options apply, so the SDK
 * call site can spread it without producing an empty `providerOptions: {}`.
 */
export declare function buildProviderOptions(providerConfig: AIProviderConfig, systemContent: string, modelParameters: ModelParameters | undefined): ProviderOptions | undefined;
//# sourceMappingURL=provider-options.d.ts.map