import { z } from 'zod'; export interface ProviderCatalogEntry { command: string; defaultModel: string; dynamicModels?: boolean; installHint: string; kind: 'claude-code' | 'codex-cli' | 'kimi-cli' | 'grok-cli' | 'opencode-cli'; label: string; marketingModelAliases?: string[]; modelReasoningEfforts?: Record; models: string[]; reasoningEfforts: string[]; } export type ProviderKind = ProviderCatalogEntry['kind']; export declare const ProviderAvailability: z.ZodObject<{ checkedAt: z.ZodOptional; defaultModel: z.ZodOptional; kind: z.ZodEnum<{ "claude-code": "claude-code"; "grok-cli": "grok-cli"; "kimi-cli": "kimi-cli"; "codex-cli": "codex-cli"; "opencode-cli": "opencode-cli"; }>; modelCheckError: z.ZodOptional; modelReasoningEfforts: z.ZodOptional>>; models: z.ZodOptional>; present: z.ZodBoolean; }, z.core.$strip>; export type ProviderAvailability = z.infer; export declare const DEFAULT_PROVIDER_KIND: ProviderCatalogEntry['kind']; export declare const DEFAULT_REASONING_EFFORT = "xhigh"; export declare const PROVIDER_CATALOG: ProviderCatalogEntry[]; export declare function providerCatalog(): ProviderCatalogEntry[]; export declare function providerCatalogEntry(kind: string): ProviderCatalogEntry | undefined; export declare function defaultModelForProvider(kind: string): string | undefined; export declare function isSupportedProviderKind(kind: string): boolean; export declare function isSupportedProviderModel(kind: string, model: string): boolean; export type ReasoningEffortAvailability = { modelReasoningEfforts?: Record; } | null | undefined; /** * Whether `effort` is a valid token to store for this provider. * * Grok: when live ACP availability is present **and** includes this model, the * per-model menu is authoritative (empty menu ⇒ no effort may be stored). When * live data is absent (offline / probe failed / model not in snapshot), fall * back to the provider write vocabulary so saves are not blocked. Per-model * apply at runtime still gates `session/set_model` on the live catalog. */ export declare function isSupportedReasoningEffort(kind: string, effort: string, model?: string, availability?: ReasoningEffortAvailability): boolean; /** * Effort menu to show for the selected model. Static providers use their catalog's * exact model menu. Grok is live-only: the ACP catalog (`modelReasoningEfforts`) is * the single authority, so absent that data the menu is empty rather than guessed. */ export declare function reasoningEffortsForModel(kind: string, model: string | undefined, availability?: { modelReasoningEfforts?: Record; } | null): string[]; //# sourceMappingURL=provider-catalog.d.ts.map