import type { StreamFn } from "@mariozechner/pi-agent-core";
import type { ThinkLevel } from "../../auto-reply/thinking.js";
import type { FasedAgentConfig } from "../../config/config.js";
type ProviderRuntimeDeps = {
    prepareProviderExtraParams: (params: {
        provider: string;
        modelId: string;
        config?: FasedAgentConfig;
        context: {
            config?: FasedAgentConfig;
            provider: string;
            modelId: string;
            extraParams?: Record<string, unknown>;
            thinkingLevel?: ThinkLevel;
            model?: object;
            streamFn?: StreamFn;
        };
    }) => Record<string, unknown> | undefined;
    wrapProviderStreamFn: (params: {
        provider: string;
        config?: FasedAgentConfig;
        context: {
            config?: FasedAgentConfig;
            provider: string;
            modelId: string;
            extraParams?: Record<string, unknown>;
            thinkingLevel?: ThinkLevel;
            model?: object;
            agentDir?: string;
            streamFn?: StreamFn;
        };
    }) => StreamFn | undefined;
};
declare const testing: {
    setProviderRuntimeDepsForTest(deps: Partial<ProviderRuntimeDeps> | undefined): void;
    resetProviderRuntimeDepsForTest(): void;
};
/**
 * Resolve provider-specific extra params from model config.
 * Used to pass through stream params like temperature/maxTokens.
 *
 * @internal Exported for testing only
 */
export declare function resolveExtraParams(params: {
    cfg: FasedAgentConfig | undefined;
    provider: string;
    modelId: string;
    agentId?: string;
}): Record<string, unknown> | undefined;
export declare function resolvePreparedExtraParams(params: {
    cfg: FasedAgentConfig | undefined;
    provider: string;
    modelId: string;
    agentId?: string;
    extraParamsOverride?: Record<string, unknown>;
    thinkingLevel?: ThinkLevel;
    model?: object;
    streamFn?: StreamFn;
}): Record<string, unknown>;
export declare function resolveAgentTransportOverride(params: {
    settingsManager?: {
        getGlobalSettings?: () => Record<string, unknown>;
        getProjectSettings?: () => Record<string, unknown>;
    };
    effectiveExtraParams?: Record<string, unknown>;
}): string | undefined;
/**
 * Apply extra params (like temperature) to an agent's streamFn.
 * Also adds OpenRouter app attribution headers when using the OpenRouter provider.
 *
 * @internal Exported for testing
 */
export declare function applyExtraParamsToAgent(agent: {
    streamFn?: StreamFn;
}, cfg: FasedAgentConfig | undefined, provider: string, modelId: string, extraParamsOverride?: Record<string, unknown>, thinkingLevel?: ThinkLevel, agentId?: string, agentDir?: string, model?: object): void;
export { testing as __testing };
