import type { DataDomain } from '../DataDomain.js';
import type { DomainProperty } from '../DomainProperty.js';
import { type DomainValidation } from './rules.js';
export declare class PropertyValidation {
    protected domain: DataDomain;
    constructor(domain: DataDomain);
    /**
     * Performs all the validation rules on the property.
     * If you are interested in a specific rule, use the specific method.
     * @param target The target property to validate. Can be a string with
     *               the property key or a DomainProperty object.
     */
    validate(target: string | DomainProperty): DomainValidation[];
    /**
     * Validates the property name.
     *
     * @remarks
     * - A property must have a name defined.
     * - The name has to follow the same rules as the names in a PostgreSQL database.
     *   - Column names can only contain letters (a-z, A-Z), numbers (0-9), and underscores (_).
     *   - The name must start with a letter (a-z, A-Z) or an underscore (_).
     *   - PostgreSQL limits column names to a maximum of 59 characters.
     *   - (our rule) Column names are case insensitive.
     *   - (recommendation) Column names should be in lower case.
     * @param property The property to validate
     */
    validateName(property: DomainProperty): DomainValidation[];
}
//# sourceMappingURL=property_validation.d.ts.map