/**
 * Centralized agent schema loader.
 *
 * This module provides type-safe loading and validation of the centralized
 * agent configuration schema from src/contracts/agent-schemas.json.
 * All agent-related configuration should be loaded through this module
 * to ensure consistency across the application.
 */
import type { ProviderId } from './types.js';
import type { AgentProfileEntry } from '../contracts/v1/agentProfileManifest.js';
/**
 * Provider configuration from centralized schema
 */
export interface ProviderConfig {
    id: ProviderId;
    label: string;
    description?: string;
    envVars?: {
        apiKey?: string;
    };
    capabilities?: string[];
    metadata?: Record<string, unknown>;
}
/**
 * Model configuration from centralized schema
 */
export interface ModelConfig {
    id: string;
    label: string;
    provider: ProviderId;
    description?: string;
    reasoningEffort?: 'low' | 'medium' | 'high';
    temperature?: number;
    maxTokens?: number;
    capabilities?: string[];
    metadata?: Record<string, unknown>;
}
/**
 * Slash command configuration
 */
export interface SlashCommandConfig {
    command: string;
    description: string;
    category?: 'configuration' | 'diagnostics' | 'workspace' | 'other';
    metadata?: Record<string, unknown>;
}
/**
 * Capability definition
 */
export interface CapabilityConfig {
    id: string;
    label: string;
    description?: string;
    metadata?: Record<string, unknown>;
}
/**
 * The complete centralized agent schema
 */
export interface AgentSchemasManifest {
    contractVersion: string;
    version: string;
    label?: string;
    description?: string;
    providers: ProviderConfig[];
    models: ModelConfig[];
    profiles: AgentProfileEntry[];
    slashCommands?: SlashCommandConfig[];
    capabilities?: CapabilityConfig[];
    metadata?: Record<string, unknown>;
}
/**
 * Load the centralized agent schemas manifest.
 * Results are cached for performance.
 *
 * @returns The complete agent schemas manifest
 * @throws Error if the schema file cannot be read or parsed
 */
export declare function getAgentSchemas(): AgentSchemasManifest;
/**
 * Get all provider configurations
 */
export declare function getProviders(): ProviderConfig[];
/**
 * Get a specific provider by ID
 */
export declare function getProvider(providerId: ProviderId): ProviderConfig | undefined;
/**
 * Get all model configurations (includes both static and discovered models)
 */
export declare function getModels(): Promise<ModelConfig[]>;
/**
 * Get models for a specific provider
 */
export declare function getModelsByProvider(providerId: ProviderId): Promise<ModelConfig[]>;
/**
 * Get a specific model by ID
 */
export declare function getModel(modelId: string): Promise<ModelConfig | undefined>;
/**
 * Get all agent profiles
 */
export declare function getProfiles(): AgentProfileEntry[];
/**
 * Get a specific profile by name
 */
export declare function getProfile(profileName: string): AgentProfileEntry | undefined;
/**
 * Get all slash commands
 */
export declare function getSlashCommands(): SlashCommandConfig[];
/**
 * Get all capabilities
 */
export declare function getCapabilities(): CapabilityConfig[];
/**
 * Clear the cached schema (useful for testing)
 */
export declare function clearSchemaCache(): void;
/**
 * Validate that a provider ID exists in the schema
 */
export declare function isValidProvider(providerId: string): providerId is ProviderId;
/**
 * Validate that a model ID exists in the schema
 */
export declare function isValidModel(modelId: string): Promise<boolean>;
/**
 * Validate that a profile name exists in the schema
 */
export declare function isValidProfile(profileName: string): boolean;
//# sourceMappingURL=agentSchemaLoader.d.ts.map