import { Maximum } from './maximum.class';
import { Minimum } from './minimum.class';
export declare class Range<Min extends number, Max extends number, Step extends number = 1> {
    #private;
    get range(): Readonly<Array<number>>;
    get step(): Step;
    get steps(): number;
    get value(): number | undefined;
    set value(value: number | undefined);
    get [Symbol.toStringTag](): string;
    readonly max: Max;
    readonly min: Min;
    static create<Min extends number, Max extends number, Step extends number = 1>(min: Min, max: Max, value?: number, step?: Step): Range<Min, Max, Step>;
    static createFrom<Step extends number = 1>(numbers: number[], step?: Step): Range<number, number, Step>;
    static createMaximum<Value extends number>(value: Value): Maximum<Value>;
    static createMinimum<Value extends number>(value: Value): Minimum<Value>;
    static isRange<Min extends number, Max extends number, Step extends number>(value: any, min?: Min, max?: Max, step?: Step): value is Range<Min, Max, Step>;
    constructor(min: Min, max: Max, value?: number, step?: Step);
    forEachStep(forEachStep: (value: number, step: number, range: readonly number[]) => void): this;
    getCurrentRange(): Readonly<Array<number>> | undefined;
    getCurrentStep(): number | undefined;
    getMax(): Max;
    getMin(): Min;
    getRange(value?: number): Readonly<Array<number>>;
    getRangeOfStep(step: number): Readonly<Array<number>>;
    getValueOfStep(step: number): number | undefined;
    has(value: number): boolean;
    hasEvery(...values: number[]): boolean;
    hasSome(...values: number[]): boolean;
    isBetween(min: number, max: number): boolean;
    isBetweenEvery(...ranges: [number, number][]): boolean;
    isBetweenSome(...ranges: [number, number][]): boolean;
    maxGreaterThan(value: number): boolean;
    maxLessThan(value: number): boolean;
    minGreaterThan(value: number): boolean;
    minLessThan(value: number): boolean;
    setValue(value: number): this;
    setValueToStep(step: number): this;
    stepByStep(callbackFn: (value: Generator<number>, step: Step, max: Max) => void): this;
    toArray(): readonly [Min, Max];
    valueDown(stepDecrement?: number): this;
    valueOf(): Readonly<{
        min: Min;
        max: Max;
    }>;
    valueUp(stepIncrement?: number): this;
}
