import type { LlmProvider, ReasoningEffort } from '../../../core/llm/types.js';
import type { ProviderCredentialSource } from '../../../core/runtime/credentials/index.js';
export type SystemModelPurpose = 'chat-compaction' | 'session-title';
export type ModelCredentialMode = 'api-key' | 'oauth' | 'missing';
export type CredentialAwareModelOption = {
    id: string;
    label?: string;
    disabled: boolean;
    disabledReason?: string;
};
export type ReasoningEffortOption = {
    id: 'default' | ReasoningEffort;
    label: string;
    description: string;
    disabled: boolean;
    disabledReason?: string;
};
export declare const OPENAI_API_KEY_COMPACTION_MODEL = "gpt-5.1-codex-mini";
export declare const OPENAI_OAUTH_SYSTEM_MODEL = "gpt-5.4";
export declare const ANTHROPIC_COMPACTION_MODEL = "claude-haiku-4-5";
export declare const OPENAI_OAUTH_MODE_DESCRIPTION = "OAuth mode supports a smaller OpenAI allowlist.";
/**
 * Provider-neutral model policy facade. It centralizes model capability,
 * credential compatibility, and system-model selection used by hosts.
 */
export declare class ModelPolicyService {
    static credentialModeFromSource(source: ProviderCredentialSource | undefined): ModelCredentialMode;
    static resolveSystemSelectedModel(args: {
        purpose: SystemModelPurpose;
        provider: LlmProvider;
        activeModel?: string;
        credentialMode?: ModelCredentialMode;
    }): string;
    static validateCredentialCompatibility(args: {
        model: string;
        provider: LlmProvider;
        credentialMode?: ModelCredentialMode;
        usageLabel?: string;
    }): {
        ok: true;
    } | {
        ok: false;
        error: string;
    };
    static assertCredentialCompatibility(args: {
        model: string;
        provider: LlmProvider;
        credentialMode?: ModelCredentialMode;
        usageLabel?: string;
    }): void;
    static resolveOpenAiOAuthImageCandidateModels(activeModel: string): string[];
    static buildCredentialAwareModelOption(args: {
        model: string;
        provider: LlmProvider;
        credentialMode?: ModelCredentialMode;
        label?: string;
    }): CredentialAwareModelOption;
    static summarizeCredentialCompatibilityError(args: {
        model: string;
        provider: LlmProvider;
        credentialMode?: ModelCredentialMode;
    }): string | undefined;
    static resolveCompatibleActiveModel(args: {
        activeModel: string;
        provider: LlmProvider;
        credentialMode?: ModelCredentialMode;
    }): {
        model: string;
        warning?: string;
    };
    static supportsReasoningEffort(model: string): boolean;
    static supportsOpenAiRequestReasoningEffort(model: string): boolean;
    static supportsOpenAiRequestReasoningEffortLevel(model: string, effort: ReasoningEffort): boolean;
    static supportedOpenAiRequestReasoningEfforts(model: string): ReasoningEffort[];
    static buildReasoningEffortOptions(model: string): ReasoningEffortOption[];
    static resolveDefaultReasoningEffort(model: string): ReasoningEffort | undefined;
    static formatOpenAiAccountSignInModels(): string;
    private static uniqueModels;
}
//# sourceMappingURL=model-policy-service.d.ts.map