export type SchemeIdentifierOccupied = {
    schemeIds: Set<string>;
    nameKeys: Set<string>;
};
export type SchemeIdentifierConflictReason = 'scheme_id_and_scheme_name_must_differ' | 'duplicate_scheme_id' | 'duplicate_scheme_name' | 'scheme_id_conflicts_with_existing_scheme_name' | 'scheme_name_conflicts_with_existing_scheme_id';
export declare function schemeIdentifierConflictMessage(reason: SchemeIdentifierConflictReason): string;
/** Register a scheme's id and display name into occupied sets (import file progression). */
export declare function occupySchemeIdentifiers(occupied: SchemeIdentifierOccupied, schemeId: string, schemeName: string): void;
/**
 * Detect duplicate / cross conflicts for human scheme_id and display name.
 * Matching is case-insensitive for names (collapsed whitespace); scheme_id is exact trim.
 */
export declare function detectSchemeIdentifierConflict(schemeId: string, schemeName: string, occupied: SchemeIdentifierOccupied): SchemeIdentifierConflictReason | null;
//# sourceMappingURL=schemeIdentifier.utils.d.ts.map