import { FocusOrigin } from '@angular/cdk/a11y';
import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, InjectionToken, NgZone } from '@angular/core';
import { KbqOptionActionComponent, KbqPseudoCheckbox, KbqPseudoCheckboxState, KbqTitleTextRef } from '@koobiq/components/core';
import { KbqDropdownTrigger } from '@koobiq/components/dropdown';
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
import { Subject } from 'rxjs';
import { KbqTreeNodeToggleBaseDirective } from './toggle';
import { KbqTreeNode } from './tree-base';
import * as i0 from "@angular/core";
export interface KbqTreeOptionEvent {
    option: KbqTreeOption;
}
/**
 * Injection token used to provide the parent component to options.
 */
export declare const KBQ_TREE_OPTION_PARENT_COMPONENT: InjectionToken<any>;
export declare class KbqTreeOptionChange {
    source: KbqTreeOption;
    isUserInput: boolean;
    constructor(source: KbqTreeOption, isUserInput?: boolean);
}
export declare class KbqTreeOption extends KbqTreeNode<KbqTreeOption> implements AfterContentInit, KbqTitleTextRef {
    private changeDetectorRef;
    private ngZone;
    tree: any;
    readonly onFocus: Subject<KbqTreeOptionEvent>;
    readonly onBlur: Subject<KbqTreeOptionEvent>;
    preventBlur: boolean;
    parentTextElement: ElementRef;
    toggleElementDirective: KbqTreeNodeToggleBaseDirective<KbqTreeOption>;
    toggleElementComponent: KbqTreeNodeToggleBaseDirective<KbqTreeOption>;
    pseudoCheckbox: KbqPseudoCheckbox;
    actionButton: KbqOptionActionComponent;
    tooltipTrigger: KbqTooltipTrigger;
    dropdownTrigger: KbqDropdownTrigger;
    checkboxThirdState: boolean;
    get externalPseudoCheckbox(): boolean;
    get value(): any;
    set value(value: any);
    private _value;
    get disabled(): any;
    set disabled(value: any);
    private _disabled;
    selectable: boolean;
    get showCheckbox(): any;
    set showCheckbox(value: any);
    private _showCheckbox;
    readonly onSelectionChange: EventEmitter<KbqTreeOptionChange>;
    readonly userInteraction: EventEmitter<void>;
    get selected(): boolean;
    set selected(value: boolean);
    private _selected;
    get id(): string;
    private _id;
    get viewValue(): string;
    hasFocus: boolean;
    get isExpandable(): boolean;
    get toggleElement(): KbqTreeNodeToggleBaseDirective<KbqTreeOption>;
    get isToggleInDefaultPlace(): boolean;
    checkboxState: KbqPseudoCheckboxState;
    constructor(elementRef: ElementRef<HTMLElement>, changeDetectorRef: ChangeDetectorRef, ngZone: NgZone, tree: any);
    ngAfterContentInit(): void;
    descendantsAllSelected(): boolean;
    descendantsPartiallySelected(): boolean;
    updateParentsCheckboxState(node: any): void;
    updateCheckboxState: () => void;
    toggle(): void;
    setSelected(selected: boolean): void;
    focus(focusOrigin?: FocusOrigin): void;
    blur(): void;
    /** @docs-private */
    getHeight(): number;
    select(setFocus?: boolean): void;
    deselect(): void;
    onKeydown($event: any): void;
    selectViaInteraction($event?: KeyboardEvent): void;
    emitSelectionChangeEvent(isUserInput?: boolean): void;
    getHostElement(): HTMLElement;
    markForCheck(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqTreeOption, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqTreeOption, "kbq-tree-option", ["kbqTreeOption"], { "checkboxThirdState": { "alias": "checkboxThirdState"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; }; }, { "onSelectionChange": "onSelectionChange"; }, ["toggleElementDirective", "toggleElementComponent", "pseudoCheckbox", "actionButton", "tooltipTrigger", "dropdownTrigger"], ["kbq-tree-node-toggle, [kbq-tree-node-toggle], [kbqTreeNodeToggle]", "kbq-pseudo-checkbox", "kbq-checkbox", "[kbq-icon]", "kbq-progress-spinner", "*", "kbq-option-action"], false, never>;
    static ngAcceptInputType_selectable: unknown;
}
