import type { ChangeSize, ExecutionMode, FileArea, LoadedConfig, RoutingProfile, TaskType, ToolName } from "./config.js";
export interface ProjectOverlay {
    version?: number;
    profile?: string;
    bootstrap?: {
        project_type?: string;
        profile_source?: string;
        specialist_suggestions?: string;
        validation_hints?: string;
        mcp_policy_hints?: string;
    };
    contract?: {
        generated_surfaces?: {
            core?: string[];
            instructions?: string[];
            agent_surfaces?: string[];
            role_specs?: string[];
            state_artifacts?: string[];
            ci_surfaces?: string[];
            skipped_as_irrelevant?: string[];
        };
    };
    paths?: {
        active_role_hints?: string;
        latest_handoff?: string;
        latest_dispatch?: string;
        latest_reconcile?: string;
        latest_task_packets?: string;
    };
    routing?: {
        preferred_execution_mode?: ExecutionMode;
        primary_tool_override?: ToolName;
    };
    rules?: {
        machine_local_state_is_reference_only?: boolean;
        global_config_changes_allowed?: boolean;
        additive_sync_only?: boolean;
        backup_before_sync?: boolean;
    };
}
export interface ProfileSelection {
    profileName: string;
    profile: RoutingProfile;
    source: "cli" | "repo-authority" | "repo-local" | "fallback-default";
}
export interface ProjectContextOptions {
    explicitProfileName?: string;
    explicitExecutionMode?: ExecutionMode;
    explicitTool?: ToolName;
    explicitTaskType?: TaskType;
    explicitFileArea?: FileArea;
    explicitChangeSize?: ChangeSize;
}
export declare function loadProjectOverlay(targetRoot: string): Promise<ProjectOverlay | null>;
export declare function resolveProfileSelection(targetRoot: string, config: LoadedConfig, explicitProfileName?: string): Promise<ProfileSelection>;
export declare function resolveProfile(name: string, config: LoadedConfig): RoutingProfile;
export declare function resolveExecutionMode(config: LoadedConfig, selection: ProfileSelection, overlay: ProjectOverlay | null, explicitExecutionMode?: ExecutionMode): ExecutionMode;
export declare function resolvePrimaryToolOverride(overlay: ProjectOverlay | null, explicitTool?: ToolName): ToolName | undefined;
//# sourceMappingURL=profiles.d.ts.map