import * as i0 from '@angular/core';
import { EventEmitter, AfterViewInit, ElementRef, ChangeDetectorRef } from '@angular/core';
import * as i4 from '@angular/common';
import * as i5 from '@obliczeniowo/elementary/loading';
import * as i6 from '@obliczeniowo/elementary/icons';

interface TreeItem {
    id: string | number;
    title: string;
    subItems: boolean;
    items: TreeItem[];
    expanded?: boolean;
}

interface TreeExpandEvent {
    item: TreeItem;
    cb: (items: TreeItem[]) => TreeItem[];
}

declare class TreeComponent {
    items: i0.InputSignal<TreeItem[] | undefined>;
    itemClicked: EventEmitter<TreeItem>;
    itemExpand: EventEmitter<TreeExpandEvent>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent, "obl-tree", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; }, { "itemClicked": "itemClicked"; "itemExpand": "itemExpand"; }, never, never, false, never>;
}

declare class VerticalArrowComponent implements AfterViewInit {
    protected elementRef: ElementRef<HTMLElement>;
    protected change: ChangeDetectorRef;
    private _loaded;
    constructor(elementRef: ElementRef<HTMLElement>, change: ChangeDetectorRef);
    get height(): number;
    ngAfterViewInit(): void;
    reload(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<VerticalArrowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<VerticalArrowComponent, "obl-vertical-arrow", never, {}, {}, never, never, false, never>;
}

declare class TreeItemComponent {
    protected loading: boolean;
    item: i0.InputSignal<TreeItem>;
    itemClicked: i0.InputSignal<EventEmitter<TreeItem>>;
    itemExpand: i0.InputSignal<EventEmitter<TreeExpandEvent>>;
    itemNotExpand: EventEmitter<void>;
    getLoading(): boolean;
    expand(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TreeItemComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TreeItemComponent, "obl-tree-item", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "itemClicked": { "alias": "itemClicked"; "required": true; "isSignal": true; }; "itemExpand": { "alias": "itemExpand"; "required": true; "isSignal": true; }; }, { "itemNotExpand": "itemNotExpand"; }, never, never, false, never>;
}

declare class TreeModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<TreeModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<TreeModule, [typeof TreeComponent, typeof VerticalArrowComponent, typeof TreeItemComponent], [typeof i4.CommonModule, typeof i5.LoadingModule, typeof i6.IconsModule], [typeof TreeComponent, typeof VerticalArrowComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<TreeModule>;
}

export { TreeComponent, TreeModule, VerticalArrowComponent };
export type { TreeExpandEvent, TreeItem };
