import type { AgentDefinition } from '../modules/review-execution/entities/progress/agentDefinition.type.js';
import type { Language } from '../modules/shared-kernel/entities/language/language.schema.js';
import type { RoutingPolicy } from '../modules/review-execution/entities/modelRouting/modelRouting.schema.js';
import { type ReviewFocus } from '../modules/review-execution/entities/progress/reviewFocus.type.js';
export interface ProjectConfig {
    github: boolean;
    gitlab: boolean;
    defaultModel: 'haiku' | 'sonnet' | 'opus';
    reviewSkill: string;
    reviewFollowupSkill: string;
    reviewFocus?: ReviewFocus;
    language: Language;
    retentionDays: number;
    agents?: AgentDefinition[];
    followupAgents?: AgentDefinition[];
    routingPolicy?: RoutingPolicy;
    externalLink?: string;
    qualityThreshold?: number;
    maxConcurrentReviews?: number;
}
/**
 * Load project configuration from .claude/reviews/config.json
 * @param localPath - Path to the project root directory
 * @returns ProjectConfig or undefined if file doesn't exist
 * @throws Error if file exists but is invalid
 */
export declare function loadProjectConfig(localPath: string): ProjectConfig | undefined;
/**
 * Pure parsing/validation of an already-loaded JSON object.
 * Throws on missing/invalid fields. Use this when the caller already has
 * the parsed object in memory and wants to avoid re-reading the file.
 */
export declare function parseProjectConfig(parsed: Record<string, unknown>): ProjectConfig;
/**
 * Get agents from project config or undefined for defaults
 */
export declare function getProjectAgents(localPath: string): AgentDefinition[] | undefined;
/**
 * Resolve agents for a project: explicit agents array first, then focus-derived defaults.
 * Returns undefined when no explicit array and no focus are configured, leaving the caller
 * free to fall back to the legacy DEFAULT_AGENTS.
 */
export declare function getProjectAgentsOrFocusDefaults(localPath: string): AgentDefinition[] | undefined;
/**
 * Get language from project config, defaulting to 'en'
 */
export declare function getProjectLanguage(localPath: string): Language;
/**
 * Get followup agents from project config or undefined for defaults
 */
export declare function getProjectRetentionDays(localPath: string): number;
export declare function getFollowupAgents(localPath: string): AgentDefinition[] | undefined;
//# sourceMappingURL=projectConfig.d.ts.map