import { Observable } from 'rxjs';
import InputFieldModel, { ParsedInputFieldModelOptions } from './InputFieldModel';
export declare type OptionInputFieldMode = 'segmented' | 'dropdown' | 'dialog';
export declare type OptionInputClearButtonMode = 'auto' | 'always' | 'never';
export interface OptionInputFieldModelOptions<T> extends ParsedInputFieldModelOptions<T, number> {
    mode: OptionInputFieldMode;
    possibleValues: T[];
    /**
     * Set this when values are not
     * supported by `Array#indexOf` method.
     */
    serializer?: (value: T | undefined) => any;
    optional?: boolean;
    prompt?: string;
    /**
     * When to show the clear button.
     *
     * Supported with `segmented` mode only.
     */
    clearButtonMode?: OptionInputClearButtonMode;
}
export default class OptionInputFieldModel<T = string> extends InputFieldModel<T, number> implements OptionInputFieldModelOptions<T> {
    mode: OptionInputFieldMode;
    possibleValues: T[];
    serializer?: OptionInputFieldModelOptions<T>['serializer'];
    optional: boolean;
    prompt?: string;
    clearButtonMode: OptionInputClearButtonMode;
    constructor(options: OptionInputFieldModelOptions<T>);
    indexOf(value: T): number;
    selectedIndex(): Observable<number>;
    selectIndex(index: number): void;
}
