import { FocusOrigin, FocusableOption } from '@angular/cdk/a11y';
import { AfterViewChecked, AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { Subject } from 'rxjs';
import { ListTitleDirective } from '@fundamental-ngx/core/list';
import { OptionsInterface } from '../options.interface';
import * as i0 from "@angular/core";
/**
 * Event object emitted by OptionComponent when
 * selected or deselected.
 */
export declare class FdOptionSelectionChange {
    /** Reference to the option that emitted the event. */
    readonly source: OptionComponent;
    /** Whether the change in the option's value was a result of a user action. */
    readonly isUserInput: boolean;
    /**
     * Reference to the OptionComponent that emitted the event.
     * @param source The option that emitted the event.
     * @param isUserInput Whether the change in the option's value was a result of a user interaction.
     */
    constructor(
    /** Reference to the option that emitted the event. */
    source: OptionComponent, 
    /** Whether the change in the option's value was a result of a user action. */
    isUserInput?: boolean);
}
/**
 * Used to represent an option of the select component.
 */
export declare class OptionComponent implements AfterViewInit, AfterViewChecked, OnDestroy, FocusableOption, OptionsInterface {
    private _elementRef;
    private _changeDetectorRef;
    /** Option id attribute */
    id: string;
    /** Value of the option. Similar to how a native select operates. */
    value: any;
    /** Whether to disable this option specifically. */
    disabled: boolean;
    /**
     * Emits event when option is selected or deselected.
     */
    readonly selectionChange: EventEmitter<FdOptionSelectionChange>;
    /** @hidden */
    selected: boolean;
    /** @Hidden */
    _listTitleDirectives: QueryList<ListTitleDirective> | undefined;
    /** @hidden */
    _renderer: 'plain' | 'title';
    /**
     * The displayed value of the option. It shows the selected option in the select's trigger.
     */
    get viewValue(): string;
    /** used in components like autocomplete where focus must remain on the input.*/
    get active(): boolean;
    /** @hidden */
    readonly _stateChanges: Subject<void>;
    /** @hidden */
    private _mostRecentViewValue;
    /** @hidden */
    private _active;
    /** @hidden */
    constructor(_elementRef: ElementRef, _changeDetectorRef: ChangeDetectorRef);
    /** @Hidden */
    ngAfterViewInit(): void;
    /**
     * @hidden
     * Since select components could be using the option's label to display the selected values
     * and they don't have a way of knowing if the option's label has changed
     * we have to check for changes in the DOM ourselves and dispatch an event
     */
    ngAfterViewChecked(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden
     * This method sets display styles on the option to make it appear
     * active. This is used by the ActiveDescendantKeyManager so key
     * events will display the proper options as active on arrow key events.
     */
    setActiveStyles(): void;
    /** @hidden
     * This method removes display styles on the option that made it appear
     * active. This is used by the ActiveDescendantKeyManager so key
     * events will display the proper options as active on arrow key events.
     */
    setInactiveStyles(): void;
    /** @hidden
     * Focuses the element. */
    focus(_origin?: FocusOrigin, options?: FocusOptions): void;
    /** @hidden
     * option value
     */
    getLabel(): string;
    /** @hidden
     * Returns HTMLElement representation of the component. */
    _getHtmlElement(): HTMLElement;
    /** Selects the option.
     * * @hidden
     */
    _select(): void;
    /** @hidden
     * Deselects the option.
     */
    _deselect(): void;
    /**
     * Ensures the option is selected when activated from the keyboard.
     *
     * @hidden
     */
    _handleKeydown(event: KeyboardEvent): void;
    /** @hidden */
    _selectViaInteraction(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<OptionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OptionComponent, "[fd-option], fd-option", never, { "id": { "alias": "id"; "required": false; }; "value": { "alias": "value"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "selectionChange": "selectionChange"; }, ["_listTitleDirectives"], ["*", "[secondary]"], true, never>;
}
