import type { DataDomain } from '../DataDomain.js';
import type { DomainAssociation } from '../DomainAssociation.js';
import { type DomainValidation } from './rules.js';
/**
 * AssociationValidation is a class that performs validation on associations in a data domain.
 * Note that an association in most cases is a property of an entity.
 */
export declare class AssociationValidation {
    protected domain: DataDomain;
    constructor(domain: DataDomain);
    /**
     * Performs all the validation rules on the association.
     * If you are interested in a specific rule, use the specific method.
     * @param target The target association to validate. Can be a string with
     *               the association key or a DomainAssociation object.
     */
    validate(target: string | DomainAssociation): DomainValidation[];
    /**
     * Validates the association name.
     *
     * @remarks
     * - A association 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 association The association to validate
     */
    validateName(association: DomainAssociation): DomainValidation[];
    /**
     * Validates the association targets.
     * @param association The association to validate
     */
    validateTargets(association: DomainAssociation): DomainValidation[];
}
//# sourceMappingURL=association_validation.d.ts.map