/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { ChangeDetectorRef, AfterContentInit } from '@angular/core';
import { DataBindingDirective } from "../databinding.directive";
import { CompositeFilterDescriptor, GroupDescriptor, SortDescriptor, State } from "@progress/kendo-data-query";
import { GridDataResult } from "../data/data.collection";
import { VirtualGroupResult } from "./virtual-group-result.interface";
import { LocalDataChangesService } from "../editing/local-data-changes.service";
import { ContextService } from '../common/provider.service';
import { GroupsService } from './groups.service';
import * as i0 from "@angular/core";
/**
 * @hidden
 */
export declare const count: (groups: any[], includeFooters?: boolean) => any;
/**
 * @hidden
 */
export declare const noDescriptors: (descriptors?: any[]) => boolean;
/**
 * @hidden
 */
export declare const slice: (groups: any[], skip: number, take: number, includeFooters?: boolean) => VirtualGroupResult[];
/**
 * A directive which encapsulates the in-memory handling of grouping with virtual scrolling.
 */
export declare class GroupBindingDirective extends DataBindingDirective implements AfterContentInit {
    private groupsService;
    /**
     * The array of data which will be used to populate the Grid.
     */
    set kendoGridGroupBinding(value: any[]);
    /**
     * @hidden
     */
    set data(value: any[]);
    /**
     * Defines the descriptors by which the data will be sorted.
     */
    set sort(value: SortDescriptor[]);
    /**
     * Defines the descriptor by which the data will be filtered.
     */
    set filter(value: CompositeFilterDescriptor);
    /**
     * Defines the descriptors by which the data will be grouped.
     */
    set group(value: GroupDescriptor[]);
    private groups;
    private gridSubs;
    constructor(changeDetector: ChangeDetectorRef, localDataChangesService: LocalDataChangesService, ctxService: ContextService, groupsService: GroupsService);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    /**
     * @hidden
     */
    toggleAll(expand: boolean): void;
    /**
     * Collapses all expanded root level groups.
     */
    collapseAll(): void;
    /**
     * Expands all expanded root level groups.
     */
    expandAll(): void;
    /**
     * @hidden
     */
    groupExpand({ groupIndex }: any): void;
    /**
     * @hidden
     */
    groupCollapse({ groupIndex }: any): void;
    protected process(state: State): GridDataResult;
    protected processGroups(state: State): GridDataResult;
    protected dataResult(skip: number, take: number): GridDataResult;
    protected applyState({ skip, take, sort, group, filter }: State): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<GroupBindingDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<GroupBindingDirective, "[kendoGridGroupBinding]", ["kendoGridGroupBinding"], { "kendoGridGroupBinding": { "alias": "kendoGridGroupBinding"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "group": { "alias": "group"; "required": false; }; }, {}, never, never, true, never>;
}
