import type { ModelProfileDefinition } from "../config/model-profiles"; export { SYNTHETIC_PROVIDER_ID } from "./model-profile-namespace"; /** * Display metadata used for synthetic rows whose profile default model cannot * be resolved to a registered model. Mirrors the shared unknown-model * constants from `@gajae-code/ai`; the real model's window is authoritative. */ export declare const SYNTHETIC_UNKNOWN_CONTEXT_WINDOW = 222222; export declare const SYNTHETIC_UNKNOWN_MAX_TOKENS = 8888; export declare function isSyntheticModelId(modelId: string): boolean; export declare function buildSyntheticModelId(profileName: string): string; /** * Parse a synthetic model id losslessly. Only the first namespace slash is * consumed; the full suffix (which may itself contain slashes or punctuation, * matching the configured-profile contract) is the profile id. */ export declare function parseSyntheticModelId(modelId: string): { profileName: string; } | undefined; /** A bounded SDK `invalid_input`-coded error for the synthetic selection branch. */ export declare function syntheticModelInputError(message: string): Error; export interface ResolvedSyntheticModelSelection { /** The raw profile suffix after the first namespace slash. */ profileName: string; /** The canonical profile id (legacy aliases resolved, errors fail closed). */ canonicalName: string; } /** * Canonicalize a synthetic model id against the merged profile registry. * Profile/registry failures are converted to the SDK's `invalid_input` code so * the ACP adapter's existing `invalid_input -> invalidParams` mapping applies. */ export declare function resolveSyntheticModelSelection(modelId: string, profiles: ReadonlyMap, registryError?: unknown): ResolvedSyntheticModelSelection; /** * True when a real registry entry shadows the reserved logical namespace. * Callers must omit synthetic rows (and reject synthetic selection) in that * case instead of silently shadowing or misrouting the user's provider. */ export declare function syntheticNamespaceCollision(models: readonly { provider: string; }[], configuredProviderIds?: readonly string[]): boolean; /** * Resolve the set of providers with usable credentials across every profile's * strict requirements and alternative groups. This is the single availability * derivation shared by the Q10 synthetic facade and the Q27 profile catalog so * both surfaces agree; `kNoAuth` counts as available and per-provider lookup * failures simply exclude that provider. */ export declare function collectAuthenticatedProfileProviders(profiles: ReadonlyMap, getApiKeyForProvider: (provider: string) => Promise): Promise>;