export declare const DEFAULT_CONTEXT_WINDOW = 32768;
export type ContextWindowSource = 'configured' | 'official_known' | 'runtime_discovered' | 'fallback';
export type ContextWindowConfidence = 'verified' | 'documented' | 'inferred' | 'unknown';
export type ModelIdentity = {
    id?: string;
    label?: string;
    backendModel?: string;
    aliases?: string[];
    endpoint?: string;
    contextWindow?: number;
    contextWindowSource?: ContextWindowSource;
};
export interface ModelContextCapability {
    contextWindow: number;
    source: ContextWindowSource;
    confidence: ContextWindowConfidence;
    labels: string[];
    notes: string[];
}
export type SustainedWorkStatus = 'signed_off' | 'short_task_only' | 'unknown';
export interface SustainedWorkCapability {
    status: SustainedWorkStatus;
    longTaskMainEligible: boolean;
    defaultEligible: boolean;
    automaticFallbackEligible: boolean;
    longTaskRecommendationEligible: boolean;
    labels: string[];
    reason?: string;
}
export interface ModelCapabilities {
    context: ModelContextCapability;
    sustainedWork: SustainedWorkCapability;
}
export declare function inferContextWindow(identity: ModelIdentity): number | undefined;
/**
 * Canonical compact token-count formatter. Shared by the status-bar CTX
 * pressure display (`formatContextPressure`) and the model-window labels
 * (`formatContextWindowShort`) so the SAME number renders identically
 * everywhere — previously the status bar used a k-only formatter that
 * rendered a 2M window as the misread-prone "2097.2k", while the label
 * formatter used a divergent uppercase-K rule.
 *
 *   n < 1000           → raw                       512
 *   1000 ≤ n < 1_000_000 → k, ≤1 decimal           1.8k / 204.8k / 256k
 *   n ≥ 1_000_000       → M, ≤1 decimal            1.3M
 *     clean binary (n % 1048576 === 0) and decimal (n % 1000000 === 0)
 *     multiples collapse to whole M, so a "2M model" configured as
 *     2*1024*1024 shows "2M", not "2.1M".
 */
export declare function formatTokenCompact(n: number): string;
export declare function formatContextWindowShort(contextWindow: number): string;
export declare function formatContextCapabilityLabels(capability: Pick<ModelContextCapability, 'contextWindow' | 'source' | 'confidence'>): string[];
export declare function resolveContextCapability(identity: ModelIdentity): ModelContextCapability;
export declare function resolveEffectiveContextWindow(identity: ModelIdentity): number;
export declare function resolveModelCapabilities(identity: ModelIdentity): ModelCapabilities;
export declare function resolveSustainedWorkCapability(identity: ModelIdentity): SustainedWorkCapability;
export declare function isDefaultModelEligible(identity: ModelIdentity): boolean;
export declare function isAutomaticFallbackEligible(identity: ModelIdentity): boolean;
