/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { Observable } from 'rxjs';
import { EventEmitter } from '@angular/core';
/**
 * The data type that is expected by the TreeList.
 */
export interface TreeListDataResult {
    /**
     * The data that will be rendered by the TreeList as an array.
     */
    data: any[];
    /**
     * The aggregated values for the group. An [`AggregateResult`](slug:treelist_with_aggregates) instance.
     */
    aggregates?: any;
}
/**
 * @hidden
 */
export interface ExpandState {
    isExpanded: (item: any) => boolean;
}
/**
 * @hidden
 */
export interface EditState {
    context: (item: any) => any;
    hasNew: (item: any) => boolean;
    newItem: any;
}
/**
 * @hidden
 */
export interface SelectionState {
    isRowSelected: (item: any) => boolean;
}
/**
 * @hidden
 */
export declare const EXPANDED_STATE: {
    isExpanded: () => boolean;
};
/**
 * @hidden
 */
export declare const UNSELECTED_STATE: {
    isRowSelected: () => boolean;
};
/**
 * @hidden
 */
export declare const NOT_EDITED_STATE: {
    hasNew: () => boolean;
    context: () => any;
};
/**
 * @hidden
 */
export declare class ViewItemFactory {
    private expandState;
    private editState;
    private selectionState;
    private loaded;
    private fieldAccessor;
    observables: any[];
    private rowIndex;
    private rootLevel;
    private fetchChildren;
    private hasChildren;
    private idGetter;
    private hasFooter;
    private viewRange;
    private offsetFirst;
    constructor(expandState: ExpandState, editState: EditState, selectionState: SelectionState, loaded: any, fieldAccessor: any, rootItem?: any);
    generate(): any;
    private loadChildren;
    private dataLevel;
    private addNew;
}
/**
 * @hidden
 */
export declare class ViewCollection {
    fieldAccessor: any;
    expandState: ExpandState;
    editState: EditState;
    selectionState: SelectionState;
    childrenLoaded: EventEmitter<any>;
    dataLoaded: EventEmitter<any>;
    resetPage: EventEmitter<any>;
    total: number;
    totalVisible: number;
    loaded: any;
    loading: boolean;
    private _totalRows;
    private loadingCount;
    private childrenSubscription;
    private _data;
    static loadView(options: any): Observable<any>;
    get totalRows(): number;
    get data(): any[];
    constructor(fieldAccessor: any, expandState: ExpandState, editState: EditState, selectionState: SelectionState);
    get length(): number;
    get first(): any;
    get firstItem(): any;
    get last(): any;
    at(index: number): any;
    itemIndex(item: any): number;
    map(fn: (item: any, index: number, array: any[]) => any): any[];
    filter(fn: (item: any, index: number, array: any[]) => boolean): any[];
    findIndex(fn: any): number;
    reduce(fn: (prevValue: any, curValue: any, curIndex: number, array: any[]) => any, init: any): any;
    forEach(fn: (item: any, index: number, array: any[]) => void): void;
    some(fn: (value: any, index: number, array: any[]) => boolean): boolean;
    find(fn: (value: any, index: number, array: any[]) => boolean): any;
    toString(): string;
    updateSelectedState(): void;
    updateEditedState(): void;
    reset(): void;
    resetItem(item: any, resetChildren: boolean): void;
    clear(): void;
    loadData(): void;
    private unsubscribeChildren;
}
