import type { AutoRuleKind, CliProvider, SummarizeConfig } from "./config.js";
import type { ModelRequestOptions } from "./llm/model-options.js";
import { type RequiredModelEnv } from "./llm/provider-capabilities.js";
import { resolveCliAutoFallbackConfig, type ResolvedCliAutoFallbackConfig } from "./model-auto-cli.js";
import type { LiteLlmCatalog } from "./pricing/litellm.js";
export { resolveCliAutoFallbackConfig };
export type { ResolvedCliAutoFallbackConfig };
export type AutoSelectionInput = {
    kind: AutoRuleKind;
    promptTokens: number | null;
    desiredOutputTokens: number | null;
    requiresVideoUnderstanding: boolean;
    env: Record<string, string | undefined>;
    config: SummarizeConfig | null;
    catalog: LiteLlmCatalog | null;
    openrouterProvidersFromEnv: string[] | null;
    openrouterModelIds?: string[] | null;
    cliAvailability?: Partial<Record<CliProvider, boolean>>;
    isImplicitAutoSelection?: boolean;
    allowAutoCliFallback?: boolean;
    lastSuccessfulCliProvider?: CliProvider | null;
};
export type AutoModelAttempt = {
    transport: "native" | "openrouter" | "cli";
    userModelId: string;
    llmModelId: string | null;
    openrouterProviders: string[] | null;
    forceOpenRouter: boolean;
    requiredEnv: RequiredModelEnv;
    requestOptions?: ModelRequestOptions;
    debug: string;
};
export declare function envHasKey(env: Record<string, string | undefined>, requiredEnv: AutoModelAttempt["requiredEnv"]): boolean;
export declare function buildAutoModelAttempts(input: AutoSelectionInput): AutoModelAttempt[];
