import { CosmiconfigResult } from "cosmiconfig";
export interface RawConfig {
    rulesDir?: string;
    targets?: string[];
    presets?: string[];
    overrides?: Record<string, string | false>;
    mcpServers?: MCPServers;
    workspaces?: boolean;
    skipInstall?: boolean;
}
export interface Config {
    rulesDir?: string;
    targets: string[];
    presets?: string[];
    overrides?: Record<string, string | false>;
    mcpServers?: MCPServers;
    workspaces?: boolean;
    skipInstall?: boolean;
}
export type MCPServer = {
    command: string;
    args?: string[];
    env?: Record<string, string>;
    url?: never;
} | {
    url: string;
    env?: Record<string, string>;
    command?: never;
    args?: never;
} | false;
export interface MCPServers {
    [serverName: string]: MCPServer;
}
export interface RuleFile {
    name: string;
    content: string;
    sourcePath: string;
    source: "local" | "preset";
    presetName?: string;
}
export interface RuleCollection {
    [target: string]: RuleFile[];
}
export interface ResolvedConfig {
    config: Config;
    rules: RuleFile[];
    mcpServers: MCPServers;
}
export declare const ALLOWED_CONFIG_KEYS: readonly ["rulesDir", "targets", "presets", "overrides", "mcpServers", "workspaces", "skipInstall"];
export declare const SUPPORTED_TARGETS: readonly ["cursor", "windsurf", "codex"];
export type SupportedTarget = (typeof SUPPORTED_TARGETS)[number];
export declare function detectWorkspacesFromPackageJson(cwd: string): boolean;
export declare function resolveWorkspaces(config: unknown, configFilePath: string, cwd: string): boolean;
export declare function applyDefaults(config: RawConfig, workspaces: boolean): Config;
export declare function validateConfig(config: unknown, configFilePath: string, cwd: string, isWorkspaceMode?: boolean): asserts config is Config;
export declare function loadRulesFromDirectory(rulesDir: string, source: "local" | "preset", presetName?: string): Promise<RuleFile[]>;
export declare function resolvePresetPath(presetPath: string, cwd: string): string | null;
export declare function loadPreset(presetPath: string, cwd: string): Promise<{
    config: Config;
    rulesDir: string;
}>;
export declare function loadAllRules(config: Config, cwd: string): Promise<{
    rules: RuleFile[];
    mcpServers: MCPServers;
}>;
export declare function applyOverrides(rules: RuleFile[], overrides: Record<string, string | false>, cwd: string): RuleFile[];
export declare function loadConfigFile(searchFrom?: string): Promise<CosmiconfigResult>;
export declare function loadConfig(cwd?: string): Promise<ResolvedConfig | null>;
export declare function saveConfig(config: Config, cwd?: string): boolean;
