import Joi from 'joi';
import type { Filter } from '../Filters';
import type AvonRequest from '../Http/Requests/AvonRequest';
import type { AnyValue, DefaultCallback, OpenApiSchema, Optional } from '../Contracts';
import Field from './Field';
export default class Integer extends Field {
    /**
     * The callback to be used for the field's default value.
     */
    defaultCallback: DefaultCallback;
    /**
     * The validation rules callback for creation and updates.
     */
    protected rulesSchema: Joi.NumberSchema<number>;
    /**
     * The validation rules callback for creation.
     */
    protected creationRulesSchema: Joi.NumberSchema<number>;
    /**
     * The validation rules callback for updates.
     */
    protected updateRulesSchema: Joi.NumberSchema<number>;
    /**
     * Indicates a minimum acceptable value.
     */
    protected minimum?: number;
    /**
     * Indicates a maximum acceptable value.
     */
    protected maximum?: number;
    /**
     * Indicates whether the range filter is disabled or not.
     */
    protected disableRangeFilter: boolean;
    /**
     * Specifies the minimum value.
     */
    min(minimum?: number): this;
    /**
     * Specifies the maximum value.
     */
    max(maximum?: number): this;
    /**
     * Mutate the field value for response.
     */
    getMutatedValue(request: AvonRequest, value: AnyValue): Optional<number>;
    /**
     * Determine field is filterable or not.
     */
    isFilterable(): boolean;
    /**
     * Determine field is orderable or not.
     */
    isOrderable(): boolean;
    /**
     * Prevent filters by range of values and force to accept only array of values.
     */
    preventRangeFilter(disableRangeFilter?: boolean): this;
    /**
     * Make the field filter.
     */
    makeFilter(request: AvonRequest): Filter;
    /**
     * Get the swagger-ui schema.
     */
    protected baseSchema(request: AvonRequest): OpenApiSchema;
}
