/**
 * This file is part of the NocoBase (R) project.
 * Copyright (c) 2020-2024 NocoBase Co., Ltd.
 * Authors: NocoBase Team.
 *
 * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
 * For more information, please refer to: https://www.nocobase.com/agreement.
 */
export declare const REQUIRED_RULE_KEY = "required";
export declare const DEFAULT_VALIDATION_RULES: {
    key: string;
    label: string;
    hasValue: boolean;
    params: any[];
}[];
export declare const FIELDS_VALIDATION_OPTIONS: {
    readonly string: readonly [...{
        key: string;
        label: string;
        hasValue: boolean;
        params: any[];
    }[], {
        readonly key: "max";
        readonly label: "Max length";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "min";
        readonly label: "Min length";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "pattern";
        readonly label: "Pattern";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "regex";
            readonly label: "Regular Expression";
            readonly componentType: "text";
            readonly required: true;
        }];
    }, {
        readonly key: "email";
        readonly label: "Email";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "allowFullyQualified";
            readonly label: "Domains ending with a . character are permitted";
            readonly componentType: "checkbox";
        }, {
            readonly key: "allowUnicode";
            readonly label: "Unicode characters are permitted";
            readonly componentType: "checkbox";
        }, {
            readonly key: "ignoreLength";
            readonly label: "Ignore invalid email length errors";
            readonly componentType: "checkbox";
        }, {
            readonly key: "minDomainSegments";
            readonly label: "Min Domain Segments";
            readonly componentType: "inputNumber";
            readonly defaultValue: 2;
        }, {
            readonly key: "maxDomainSegments";
            readonly label: "Max Domain Segments";
            readonly componentType: "inputNumber";
        }, {
            readonly key: "tlds";
            readonly label: "tlds";
            readonly componentType: "radio";
            readonly defaultValue: "iana";
            readonly options: readonly [{
                readonly label: "IANA registry";
                readonly value: "iana";
            }, {
                readonly label: "Disable validation";
                readonly value: "disable";
            }, {
                readonly label: "Allow list";
                readonly value: "allow";
                readonly componentType: "text";
            }, {
                readonly label: "Deny list";
                readonly value: "deny";
                readonly componentType: "text";
            }];
        }];
        readonly paramsType: "object";
    }, {
        readonly key: "uuid";
        readonly label: "UUID";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "version";
            readonly label: "Version";
            readonly componentType: "multipleSelect";
            readonly options: readonly [{
                readonly label: "uuidv1";
                readonly value: "uuidv1";
            }, {
                readonly label: "uuidv2";
                readonly value: "uuidv2";
            }, {
                readonly label: "uuidv3";
                readonly value: "uuidv3";
            }, {
                readonly label: "uuidv4";
                readonly value: "uuidv4";
            }, {
                readonly label: "uuidv5";
                readonly value: "uuidv5";
            }, {
                readonly label: "uuidv6";
                readonly value: "uuidv6";
            }, {
                readonly label: "uuidv7";
                readonly value: "uuidv7";
            }, {
                readonly label: "uuidv8";
                readonly value: "uuidv8";
            }];
        }, {
            readonly key: "separator";
            readonly label: "Separator";
            readonly componentType: "singleSelect";
            readonly options: readonly [{
                readonly label: "Must use `-` and `:`";
                readonly value: true;
            }, {
                readonly label: "No allow `-` and `:`";
                readonly value: false;
            }, {
                readonly label: "Only use `-`";
                readonly value: "-";
            }, {
                readonly label: "Only use `_`";
                readonly value: "_";
            }, {
                readonly label: "Only use `.`";
                readonly value: ".";
            }];
        }];
        readonly paramsType: "object";
    }, {
        readonly key: "hex";
        readonly label: "Hex";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "prefix";
            readonly label: "Prefix";
            readonly componentType: "singleSelect";
            readonly options: readonly [{
                readonly label: "Must use prefix";
                readonly value: true;
            }, {
                readonly label: "No use prefix";
                readonly value: false;
            }, {
                readonly label: "Optional prefix";
                readonly value: "optional";
            }];
        }, {
            readonly key: "byteAligned";
            readonly label: "Byte Aligned";
            readonly componentType: "checkbox";
        }];
    }, {
        readonly key: "length";
        readonly label: "Length";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "uri";
        readonly label: "URI";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "scheme";
            readonly label: "Scheme";
            readonly componentType: "multipleSelect";
            readonly options: readonly [{
                readonly label: "http";
                readonly value: "http";
            }, {
                readonly label: "https";
                readonly value: "https";
            }, {
                readonly label: "ftp";
                readonly value: "ftp";
            }, {
                readonly label: "file";
                readonly value: "file";
            }, {
                readonly label: "ws";
                readonly value: "ws";
            }, {
                readonly label: "wss";
                readonly value: "wss";
            }];
        }, {
            readonly key: "allowRelative";
            readonly label: "Allow relative URIs";
            readonly componentType: "checkbox";
        }, {
            readonly key: "relativeOnly";
            readonly label: "Restrict only relative URIs";
            readonly componentType: "checkbox";
        }, {
            readonly key: "allowQuerySquareBrackets";
            readonly label: "Allows unencoded square brackets inside the query string";
            readonly componentType: "checkbox";
        }, {
            readonly key: "encodeUri";
            readonly label: "Attempts to encode the URI using encodeURI before validating it again";
            readonly componentType: "checkbox";
        }];
        readonly paramsType: "object";
    }];
    readonly number: readonly [...{
        key: string;
        label: string;
        hasValue: boolean;
        params: any[];
    }[], {
        readonly key: "greater";
        readonly label: "Greater than";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "less";
        readonly label: "Less than";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "max";
        readonly label: "Max value";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "min";
        readonly label: "Min value";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "multiple";
        readonly label: "Multiple of";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "base";
            readonly label: "Base";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "integer";
        readonly label: "Integer";
        readonly hasValue: false;
        readonly params: readonly [];
    }, {
        readonly key: "precision";
        readonly label: "Precision";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "limit";
            readonly label: "Limit";
            readonly componentType: "inputNumber";
            readonly required: true;
        }];
    }, {
        readonly key: "unsafe";
        readonly label: "Unsafe integer";
        readonly hasValue: false;
        readonly params: readonly [];
    }];
    readonly date: readonly [...{
        key: string;
        label: string;
        hasValue: boolean;
        params: any[];
    }[], {
        readonly key: "greater";
        readonly label: "Greater than";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "date";
            readonly label: "Date";
            readonly componentType: "datePicker";
            readonly required: true;
        }];
    }, {
        readonly key: "less";
        readonly label: "Less than";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "date";
            readonly label: "Date";
            readonly componentType: "datePicker";
            readonly required: true;
        }];
    }, {
        readonly key: "max";
        readonly label: "Max value";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "date";
            readonly label: "Date";
            readonly componentType: "datePicker";
            readonly required: true;
        }];
    }, {
        readonly key: "min";
        readonly label: "Min value";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "date";
            readonly label: "Date";
            readonly componentType: "datePicker";
            readonly required: true;
        }];
    }, {
        readonly key: "timestamp";
        readonly label: "Timestamp";
        readonly hasValue: true;
        readonly params: readonly [{
            readonly key: "type";
            readonly label: "Type";
            readonly componentType: "singleSelect";
            readonly options: readonly [{
                readonly label: "JavaScript";
                readonly value: "javascript";
            }, {
                readonly label: "Unix";
                readonly value: "unix";
            }];
            readonly defaultValue: "javascript";
        }];
    }];
    readonly object: readonly {
        key: string;
        label: string;
        hasValue: boolean;
        params: any[];
    }[];
};
export type ValidationKeysByType = {
    [K in keyof typeof FIELDS_VALIDATION_OPTIONS]: (typeof FIELDS_VALIDATION_OPTIONS)[K][number]['key'];
};
export type ValidationType = keyof typeof FIELDS_VALIDATION_OPTIONS;
export type AvailableValidationOption<T extends ValidationType = ValidationType> = ValidationKeysByType[T];
