import type { GeneracyConfig } from './schema.js'; /** * Validation error class for semantic validation failures */ export declare class ConfigValidationError extends Error { readonly conflictingRepos?: string[] | undefined; readonly locations?: string[] | undefined; constructor(message: string, conflictingRepos?: string[] | undefined, locations?: string[] | undefined); } /** * Check for duplicate repositories across primary, dev, and clone lists * * This function implements detailed duplicate detection with clear error messages * indicating exactly which repositories conflict and in which lists they appear. * * Validation rules: * - Primary repo cannot appear in dev list * - Primary repo cannot appear in clone list * - No repository can appear in both dev and clone lists * - No repository can appear twice within the same list (dev or clone) * * @param config - Validated Generacy configuration * @throws ConfigValidationError if duplicates are found, with details about the conflict * * @example * ```typescript * // Valid configuration - no duplicates * validateNoDuplicateRepos({ * repos: { * primary: 'github.com/acme/main', * dev: ['github.com/acme/lib'], * clone: ['github.com/acme/docs'] * } * }); * * // Invalid - throws with details about which lists conflict * validateNoDuplicateRepos({ * repos: { * primary: 'github.com/acme/main', * dev: ['github.com/acme/main'], // Conflict! * clone: [] * } * }); * ``` */ export declare function validateNoDuplicateRepos(config: GeneracyConfig): void; /** * Perform all semantic validations on a configuration * * @param config - Validated Generacy configuration * @throws ConfigValidationError if any semantic validation fails * * @example * ```typescript * const config = validateConfig(rawConfig); * validateSemantics(config); // Throws if semantic rules violated * ``` */ export declare function validateSemantics(config: GeneracyConfig): void; //# sourceMappingURL=validator.d.ts.map