import type { LoopMonitorJudge, WorkflowConfig, WorkflowStep } from '../models/types.js';
import type { PersonaProviderEntry } from '../models/config-types.js';
import type { ProviderType } from './types.js';
import type { ProviderResolutionSource } from './provider-options-trace.js';
export interface StepProviderModelInput {
    step: Pick<WorkflowStep, 'provider' | 'model' | 'personaDisplayName'>;
    provider?: ProviderType;
    model?: string;
    personaProviders?: Record<string, PersonaProviderEntry>;
    /** Source layer of `provider` argument (engine-level fallback). */
    providerSource?: ProviderResolutionSource;
    /** Source layer of `model` argument (engine-level fallback). */
    modelSource?: ProviderResolutionSource;
}
export interface StepProviderModelOutput {
    provider: ProviderType | undefined;
    model: string | undefined;
    providerSource?: ProviderResolutionSource;
    modelSource?: ProviderResolutionSource;
}
export interface WorkflowCallProviderModelInput {
    workflow: Pick<WorkflowConfig, 'provider' | 'model'>;
    provider?: ProviderType;
    model?: string;
}
export interface WorkflowCallProviderModelOutput {
    provider: ProviderType | undefined;
    model: string | undefined;
}
export interface LoopMonitorJudgeProviderModelInput {
    judge: Pick<LoopMonitorJudge, 'provider' | 'model'>;
    triggeringStep: Pick<WorkflowStep, 'provider' | 'model' | 'personaDisplayName'>;
    provider?: ProviderType;
    model?: string;
    personaProviders?: Record<string, PersonaProviderEntry>;
}
export interface LoopMonitorJudgeProviderModelOutput {
    provider: ProviderType | undefined;
    model: string | undefined;
}
export interface AgentProviderModelInput {
    cliProvider?: ProviderType;
    cliModel?: string;
    personaProviders?: Record<string, PersonaProviderEntry>;
    personaDisplayName?: string;
    localProvider?: ProviderType;
    localModel?: string;
    globalProvider?: ProviderType;
    globalModel?: string;
}
export interface AgentProviderModelOutput {
    provider?: ProviderType;
    model?: string;
}
export declare function resolveAgentProviderModel(input: AgentProviderModelInput): AgentProviderModelOutput;
export declare function resolveStepProviderModel(input: StepProviderModelInput): StepProviderModelOutput;
export declare function resolveWorkflowCallProviderModel(input: WorkflowCallProviderModelInput): WorkflowCallProviderModelOutput;
export declare function resolveLoopMonitorJudgeProviderModel(input: LoopMonitorJudgeProviderModelInput): LoopMonitorJudgeProviderModelOutput;
//# sourceMappingURL=provider-resolution.d.ts.map