import { Namon } from './types.js'; import { NameIndex } from './utils.js'; import { FirstName, LastName, Name } from './name.js'; export interface Validator { validate(value: T): void; } declare class ArrayValidator implements Validator { validate(values: T[]): void; } declare class NamonValidator implements Validator { #private; static create(): NamonValidator; validate(value: string | Name, type?: Namon): void; } declare class FirstNameValidator implements Validator { #private; static create(): FirstNameValidator; validate(value: string | FirstName): void; } declare class MiddleNameValidator implements Validator { #private; static create(): MiddleNameValidator; validate(value: string | string[] | Name[]): void; } declare class LastNameValidator implements Validator { #private; static create(): LastNameValidator; validate(value: string | LastName): void; } export declare class NamaValidator implements Validator> { #private; static create(): NamaValidator; validate(value: Map): void; validateKeys(nama: Map): void; } export declare class ArrayStringValidator extends ArrayValidator { readonly index: NameIndex; constructor(index?: NameIndex); validate(values: string[]): void; validateIndex(values: string[]): void; } export declare class ArrayNameValidator implements Validator { #private; static create(): ArrayNameValidator; validate(value: Name[]): void; } /** A list of validators for a specific namon. */ export declare abstract class Validators { static namon: NamonValidator; static nama: NamaValidator; static prefix: NamonValidator; static firstName: FirstNameValidator; static middleName: MiddleNameValidator; static lastName: LastNameValidator; static suffix: NamonValidator; } export {};