/**
 * Model-Aware Stream Function — the single wrapper that replaces the
 * 6-layer chain in applyExtraParamsToAgent().
 *
 * Handles ALL provider-specific concerns in ONE onPayload hook:
 * - Injects stop, top_p, top_k, repeat_penalty (ignored by buildParams)
 * - Fixes max_completion_tokens → max_tokens for vLLM
 * - Removes unsupported fields (store) for vLLM
 * - Chains caller's onPayload explicitly (no collision)
 *
 * @module
 */
import type { StreamFn } from "@mariozechner/pi-agent-core";
import type { SymiConfig } from "../config/config.js";
import type { ModelProfile } from "../config/model-profiles.js";
export interface ModelAwareStreamOptions {
    /** Base streaming function — streamSimple or createOllamaStreamFn. */
    baseStreamFn?: StreamFn;
    /** Resolved model profile (from resolveModelProfile). */
    profile: ModelProfile;
    /** Provider ID (e.g. "redsand", "anthropic"). */
    provider: string;
    /** Model ID (e.g. "gemma-4-31b", "claude-sonnet-4-6"). */
    modelId: string;
    /** Full Symi config — used for provider baseUrl detection. */
    config?: SymiConfig;
    /** Per-model params from symi.json (agents.defaults.models[key].params). */
    configExtraParams?: Record<string, unknown>;
    /** Runtime overrides (e.g. CLI --temperature). */
    streamParamsOverride?: Record<string, unknown>;
}
/**
 * Create a single stream function wrapper that handles all provider-specific
 * param injection via one onPayload hook.
 *
 * Replaces: createStreamFnWithExtraParams, createVllmCompatWrapper,
 * createOpenRouterHeadersWrapper.
 */
export declare function createModelAwareStreamFn(opts: ModelAwareStreamOptions): StreamFn;
/** Detect vLLM providers by model hints or baseUrl patterns. */
export declare function isVllmProvider(provider: string, modelId: string, config?: SymiConfig): boolean;
