import { ContentTypeFormat } from './ContentTypeFormat';
import { LocalisedString } from './Localised';
type ValidationMessage = {
    message?: LocalisedString;
};
type ValidationMessageAndValue<T> = ValidationMessage & {
    value: T;
};
export interface Validations<TField> {
    required?: ValidationMessage;
    min?: ValidationMessageAndValue<number>;
    max?: ValidationMessageAndValue<number>;
    minLength?: ValidationMessageAndValue<number>;
    maxLength?: ValidationMessageAndValue<number>;
    minCount?: ValidationMessageAndValue<number>;
    maxCount?: ValidationMessageAndValue<number>;
    regex?: ValidationMessage & {
        pattern: string;
    };
    allowedValues?: ValidationMessage & {
        values: LocalisedString[];
    };
    taxonomyRoot?: ValidationMessage & {
        key: string;
    };
    contentType?: ValidationMessage & {
        contentType: string;
    };
    allowedContentTypes?: ValidationMessage & {
        contentTypes: string[];
    };
    pastDateTime?: ValidationMessage;
    decimalPlaces?: ValidationMessageAndValue<number>;
    imageDimensions?: ValidationMessage & {
        minWidth?: number;
        maxWidth?: number;
        minHeight?: number;
        maxHeight?: number;
    };
    captionRequired?: ValidationMessage;
    sourceRequired?: ValidationMessage;
    altTextRequired?: ValidationMessage;
    allowedFieldTypes?: ValidationMessage & {
        fields: TField[];
    };
    allowedDataFormats?: ValidationMessage & {
        dataFormats: Exclude<ContentTypeFormat[], 'component'>;
    };
    allowedIds?: ValidationMessage & {
        ids: string[];
    };
}
export {};
