import { ExtensionStrategy } from "../internal_modules";
import { INumberIterator, IterableValues } from "../internal_modules";
import { ParamValueMode } from "../internal_modules";
/**
 * Represents the value(s) taken by a Parameter, along with and depending on
 * the value mode; linked values are not managed here, only the LINK value
 * mode is defined here
 */
export declare class ParamValues implements IterableValues {
    /** usually set by enclosing ParamDefinition */
    valueMode: ParamValueMode;
    /** usually set by enclosing ParamDefinition */
    extensionStrategy: ExtensionStrategy;
    /** valeur min dans le cas ParamValueMode.MINMAX */
    min: number;
    /** valeur max dans le cas ParamValueMode.MINMAX */
    max: number;
    /** pas de progression dans le cas ParamValueMode.MINMAX */
    step: number;
    /** liste de valeurs dans le cas ParamValueMode.LISTE */
    valueList: number[];
    /** valeur numérique (éventuellement non définie) dans le mode "valeur unique" (ParamValueMode.SINGLE) */
    private _singleValue;
    /** valeur courante (éventuellement non définie) indépendemment du mode */
    private _currentValue;
    /**
     * itérateur courant
     */
    private _iterator;
    clone(): ParamValues;
    get singleValue(): number;
    set singleValue(v: number);
    get currentValue(): number;
    count(): number;
    setValues(o: number | any, max?: number, step?: number): void;
    check(): void;
    /**
     * Returns values as a number list by running through the iterator,
     * taking in account reverse, extendTo and addLastStep if defined
     */
    getInferredValuesList(reverse?: boolean, extendTo?: number, addLastStep?: boolean): number[];
    /**
     * Returns a ParamValueIterator over the current values
     * @param reverse if true, will iterate starting at the end
     * @param extendTo if defined, will extend values list until this boundary
     * @param addLastStep if true, if (max - min) is not a multiple of step, one more
     *                    iteration will be done return last value (max)
     */
    getValuesIterator(reverse?: boolean, extendTo?: number, addLastStep?: boolean): INumberIterator;
    get valuesIterator(): INumberIterator;
    get hasMultipleValues(): boolean;
    /**
     * Checks that values are in LIST or MINMAX mode, then retrieves an iterator
     * @param reverse if true, will iterate starting at the end
     * @param extendTo if defined, will extend values list until this boundary
     * @param addLastStep if true, if (max - min) is not a multiple of step, one more
     *                    iteration will be done return last value (max)
     */
    initValuesIterator(reverse?: boolean, extendTo?: number, addLastStep?: boolean): INumberIterator;
    /**
     * @return true si il reste des valeurs à parcourir par l'itérateur courant
     */
    get hasNext(): boolean;
    /**
     * fixe la valeur courante à la prochaine valeur à parcourir par l'itérateur courant
     * @return prochaine valeur à parcourir par l'itérateur courant
     */
    next(): IteratorResult<number>;
    /** trick method - use .next() instead, unless you are explicitely in jalhyd#222 case */
    nextValue(): IteratorResult<number>;
    /**
     * Trick method to explicitely set _currentValue when using a dedicated iterator, for
     * params having multiple links on them @see jalhyd#222 ; usually calling .next() on
     * ParamDefinition sets _currentValue, but not when a dedicated iterator is used; this
     * method should only be called by ParamValueIterator.nextValue()
     */
    setCurrentValueFromIterator(v: number): void;
    [Symbol.iterator](): IterableIterator<number>;
}
//# sourceMappingURL=param-values.d.ts.map