/**
 * Model ID normalization helpers.
 *
 * Handles provider-aware compatibility between dotted and hyphenated Claude
 * model version formats (e.g., 4.6 vs 4-6).
 */
/// <reference types="node" />
/// <reference types="bun-types" />
import type { CLIProxyProvider } from '../types';
/** Env vars that carry model identifiers. */
export declare const MODEL_ENV_VAR_KEYS: readonly ["ANTHROPIC_MODEL", "ANTHROPIC_DEFAULT_OPUS_MODEL", "ANTHROPIC_DEFAULT_SONNET_MODEL", "ANTHROPIC_DEFAULT_HAIKU_MODEL"];
type ProviderLike = CLIProxyProvider | string | null | undefined;
export type CodexModelTuningEffort = 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
export type CodexModelServiceTier = 'fast';
export interface CodexModelTuningAlias {
    baseModel: string;
    effort: CodexModelTuningEffort | null;
    serviceTier: CodexModelServiceTier | null;
}
export declare function parseCodexModelTuningAlias(model: string): CodexModelTuningAlias | null;
/**
 * Extract provider segment from `/api/provider/{provider}` request paths.
 *
 * @example
 * extractProviderFromPathname('/api/provider/agy/v1/messages')
 * // => 'agy'
 */
export declare function extractProviderFromPathname(pathname: string): string | null;
/** Whether the provider uses Antigravity model routing conventions. */
export declare function isAntigravityProvider(provider: ProviderLike): boolean;
/** Whether provider maps to Codex model canonicalization rules. */
export declare function isCodexProvider(provider: ProviderLike): boolean;
/** Whether provider maps to iFlow model alias canonicalization rules. */
export declare function isIFlowProvider(provider: ProviderLike): boolean;
/** Strip Codex effort/service-tier suffixes while preserving trailing config suffixes. */
export declare function stripCodexEffortSuffix(model: string): string;
/** Normalize legacy Codex aliases to the current public Codex model IDs. */
export declare function normalizeCodexLegacyModelAliases(model: string): string;
/**
 * Normalize known legacy iFlow model aliases to current upstream model IDs.
 * Preserves suffixes such as (budget) and [1m].
 */
export declare function normalizeIFlowLegacyModelAliases(model: string): string;
/** Normalize Claude dotted major.minor IDs to hyphenated format. */
export declare function normalizeClaudeDottedMajorMinor(model: string): string;
/**
 * Normalize only dotted Claude thinking IDs to hyphenated format.
 * Keeps non-thinking dotted IDs unchanged.
 */
export declare function normalizeClaudeDottedThinkingMajorMinor(model: string): string;
/**
 * Antigravity no longer exposes `claude-sonnet-4-6-thinking`.
 * Canonicalize legacy aliases to `claude-sonnet-4-6` while preserving suffixes.
 */
export declare function normalizeDeprecatedAntigravityModelAliases(model: string): string;
/**
 * Migrate denylisted Antigravity Claude 4.5 aliases to supported Claude 4.6 IDs.
 * This is intended for repairing stale local settings at runtime.
 */
export declare function migrateDeniedAntigravityModelAliases(model: string): string;
/**
 * Deprecated Antigravity models that are denylisted and should not be used.
 */
export declare function isDeniedAntigravityModelId(model: string): boolean;
/**
 * Returns deny reason when model ID is blocked for the given provider.
 */
export declare function getDeniedModelIdReasonForProvider(model: string, provider: ProviderLike): string | null;
/**
 * Normalize model ID for a specific provider.
 * Antigravity requires hyphenated Claude major.minor model IDs.
 *
 * @example
 * normalizeModelIdForProvider('claude-opus-4.6-thinking', 'agy')
 * // => 'claude-opus-4-6-thinking'
 *
 * @example
 * normalizeModelIdForProvider('claude-opus-4.6-thinking', 'gemini')
 * // => 'claude-opus-4.6-thinking'
 */
export declare function normalizeModelIdForProvider(model: string, provider: ProviderLike): string;
/**
 * Canonicalize model ID for provider-specific compatibility.
 * - Codex: preserve valid effort suffixes while normalizing legacy aliases.
 * - Antigravity: normalize dotted/historical aliases.
 */
export declare function canonicalizeModelIdForProvider(model: string, provider: ProviderLike): string;
/**
 * Normalize model ID for request routing.
 * - Antigravity routes: normalize all dotted Claude major.minor forms.
 * - Root/composite routes: normalize only thinking forms to avoid mutating
 *   valid non-thinking dotted IDs used by other providers.
 *
 * @example
 * normalizeModelIdForRouting('claude-sonnet-4.6-thinking', null)
 * // => 'claude-sonnet-4-6'
 *
 * @example
 * normalizeModelIdForRouting('claude-sonnet-4.6', null)
 * // => 'claude-sonnet-4.6'
 */
export declare function normalizeModelIdForRouting(model: string, provider: ProviderLike): string;
/**
 * Normalize model-related env vars for a provider.
 * Returns original object when no changes are required.
 *
 * @example
 * normalizeModelEnvVarsForProvider(
 *   { ANTHROPIC_MODEL: 'claude-sonnet-4.6-thinking' },
 *   'agy'
 * )
 * // => { ANTHROPIC_MODEL: 'claude-sonnet-4-6' }
 */
export declare function normalizeModelEnvVarsForProvider(envVars: NodeJS.ProcessEnv, provider: ProviderLike, keys?: readonly string[]): NodeJS.ProcessEnv;
export {};
//# sourceMappingURL=model-id-normalizer.d.ts.map