import type { LanguageValidator } from './LanguageValidator.js';
/**
 * Binds one validator to the language identifier(s) it handles.
 *
 * @remarks
 * A single validator can serve several languages — `JavaScriptValidator`
 * handles both `javascript` and `typescript`, which is also the grouping used
 * for cross-block consistency checks.
 */
export interface ValidatorRegistration {
    readonly languages: readonly string[];
    readonly validator: LanguageValidator;
}
/**
 * Maps normalized language identifiers to the {@link LanguageValidator} that
 * handles them.
 *
 * @remarks
 * This is the one place that knows which validator owns which language, so
 * adding a language means adding a validator module and a single registration
 * — `CodeBlockRule` never grows a `switch`.
 */
export declare class ValidatorRegistry {
    private readonly byLanguage;
    private readonly registeredGroups;
    constructor(registrations: readonly ValidatorRegistration[]);
    /** The validator for a language, or `undefined` when none is registered. */
    get(language: string): LanguageValidator | undefined;
    /** All registrations, in declaration order, for cross-block passes. */
    groups(): readonly ValidatorRegistration[];
}
/**
 * Build the registry of built-in language validators.
 *
 * @remarks
 * `javascript` and `typescript` deliberately share one validator instance so
 * their blocks are validated identically and grouped together for
 * consistency checks.
 */
export declare function createDefaultValidatorRegistry(): ValidatorRegistry;
//# sourceMappingURL=ValidatorRegistry.d.ts.map