import type { DomainProperty } from '../DomainProperty.js';
import type { DomainAssociation } from '../DomainAssociation.js';
import type { DomainImpactItem } from '../types.js';
/**
 * `DomainImpactItem` mapping:
 * - `impact` -> `message`
 * - `resolution` -> `help`
 * - `type` -> unused
 * - `relationship` -> unused
 */
export interface DomainValidation extends Omit<DomainImpactItem, 'type' | 'impact' | 'relationship' | 'resolution'> {
    /**
     * The field that did not pass validation.
     */
    field: string;
    /**
     * The name of the rule that was violated.
     */
    rule: string;
    /**
     * Optional help message that can be used to provide
     * more information about the error.
     */
    help?: string;
    /**
     * Optional URL that can be used to provide more information
     * about the error.
     */
    url?: string;
    /**
     * The validation error message.
     * This message should be user-friendly and should not
     * contain any technical details.
     * It should be used to display the error to the user.
     * It should be short and concise.
     */
    message: string;
}
/**
 * Validates the property name. This includes associations.
 *
 * @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
 */
export declare function validatePropertyName(property: DomainProperty | DomainAssociation): DomainValidation[];
//# sourceMappingURL=rules.d.ts.map