import type { AutoRuleKind, CliProvider, SummarizeConfig } from "../config.js";
import type { ModelAttempt } from "../engine/types.js";
import type { ProviderRuntimeBindings } from "../llm/provider-profile.js";
import type { RequestedModel } from "../model-spec.js";
import type { LiteLlmCatalog } from "../pricing/litellm.js";
export type ResolvedModelAttempt = ModelAttempt & {
    debug?: string;
};
export declare function resolveFixedModelAttempt({ requestedModel, providerRuntime, }: {
    requestedModel: Extract<RequestedModel, {
        kind: "fixed";
    }>;
    providerRuntime: ProviderRuntimeBindings;
}): ResolvedModelAttempt;
export declare function resolveModelAttempts({ requestedModel, kind, promptTokens, desiredOutputTokens, requiresVideoUnderstanding, envForAuto, configForModelSelection, catalog, openrouterProvidersFromEnv, cliAvailability, isImplicitAutoSelection, allowAutoCliFallback, lastSuccessfulCliProvider, providerRuntime, }: {
    requestedModel: RequestedModel;
    kind: AutoRuleKind;
    promptTokens: number | null;
    desiredOutputTokens: number | null;
    requiresVideoUnderstanding: boolean;
    envForAuto: Record<string, string | undefined>;
    configForModelSelection: SummarizeConfig | null;
    catalog: LiteLlmCatalog | null;
    openrouterProvidersFromEnv: string[] | null;
    cliAvailability: Partial<Record<CliProvider, boolean>>;
    isImplicitAutoSelection?: boolean;
    allowAutoCliFallback?: boolean;
    lastSuccessfulCliProvider?: CliProvider | null;
    providerRuntime: ProviderRuntimeBindings;
}): ResolvedModelAttempt[];
export declare function selectPreferredInteractiveModelAttempt({ attempts, envForAuto, cliAvailability, requireCliAvailability, }: {
    attempts: ModelAttempt[];
    envForAuto: Record<string, string | undefined>;
    cliAvailability: Partial<Record<CliProvider, boolean>>;
    requireCliAvailability?: boolean;
}): ModelAttempt | null;
