import { ClassConstructor } from 'class-transformer';
import { DefaultOption, NameValueOption } from './enum.field';
import { FieldDataType, Field, Parameter } from './field';
import { RangeOptions } from './integer.field';
export declare class ArraySize {
    minItems: number;
    maxItems: number;
}
export declare class Element<ElementType extends FieldDataType> {
    elementType: ElementType;
}
export declare class IntegerElement extends Element<FieldDataType.INTEGER> {
    elementRange: RangeOptions;
}
export declare class EnumElement extends Element<FieldDataType.ENUM> {
    elementOptions: (RangeOptions | NameValueOption | DefaultOption)[];
}
export declare class ArrayField extends Field<FieldDataType.ARRAY> {
    size: ArraySize;
    elementFields?: Field<FieldDataType>[];
    elementOptions?: (RangeOptions | NameValueOption | DefaultOption)[];
    elementRange?: RangeOptions;
}
export declare const StructElement: () => ClassConstructor<Element<FieldDataType.STRUCT>>;
export declare class ArrayParameter extends Parameter<FieldDataType.ARRAY> {
    size: ArraySize;
    elementFields?: Field<FieldDataType>[];
    elementOptions?: (RangeOptions | NameValueOption | DefaultOption)[];
    elementRange?: RangeOptions;
}
//# sourceMappingURL=array.field.d.ts.map