import { ArrayTypedSchema } from '../core/ArrayTypedSchema';
import { ObjectPropertiesSchema } from '../types/SchemaMap';
export declare class ArraySchema = ObjectPropertiesSchema> extends ArrayTypedSchema {
protected message: string;
protected rule: (value: any[]) => boolean;
protected clone(): ArraySchema;
/**
* Checks if is empty
* @param message @option Overrides default message
*/
empty(message?: string): ObjectPropertiesSchema;
/**
* Checks if has a minimal number of items in array
* @param minValue
* @param message @option Overrides default message
*/
min(minValue: number, message?: string): ObjectPropertiesSchema;
/**
* Checks if has a maximal number of elements
* @param maxValue
* @param message @option Overrides default message
*/
max(maxValue: number, message?: string): ObjectPropertiesSchema;
/**
* Checks if array has "length" number of elements
* @param length
* @param message @option Overrides default message
*/
length(length: number, message?: string): ObjectPropertiesSchema;
/**
* Checks if has only unique elements
*
* Note: This only check basic values, like numbers, string, boolean.
* For object arrays and more complex values use {@link ArraySchema#uniqueBy}
* @param message @option Overrides default message
*/
unique(message?: string): ObjectPropertiesSchema;
/**
* Checks if has only unique elements by key
* @param message @option Overrides default message
*/
uniqueBy(key: keyof Input[number] | ((val: Input[number]) => any), message?: string): ObjectPropertiesSchema;
}
export declare const array: = ObjectPropertiesSchema>(schemas: S, message?: string) => ArraySchema, Final, S>;