import { AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
import { QdFilterComponent } from '../../../filter/filter.component';
import { QdFilterConfigData } from '../../../filter/model/filter-config.interface';
import { QdTableComponent } from '../../../table/table.component';
import { QdToolbarComponentsService } from '../../services/toolbar-components.service';
import * as i0 from "@angular/core";
/**
 * Directive for establishing a connection between **QdTableComponent** and the existing **QdFilterComponent** within **QdSection**.
 *
 * @note
 * Attach this directive to the table and provide **QdFilterConfigData** via the **[qdConnectToFilter]** input.
 * This directive enables communication between the table and the filter component. It ensures that changes to the filter criteria are reflected in the table.
 *
 * @note
 * The **QdTableDataResolver** will send this filter criteria as a property in the method argument object, which can be used for a service request
 *
 * @note
 * Avoid using redundant filterConfig properties in sectionConfig! They become useless and are overridden by this directive.
 *
 * ####**Usage**
 *
 * ```html
 * <qd-section [config]="sectionConfig">
 *   <qd-table [config]="tableConfig" [qdConnectToFilter]="filterConfig"></qd-table>
 * </qd-section>
 * ```
 *
 * ```ts
 * resolve({ filter, … }): Observable<MyResultFromService> {
 *   doSomethingFancyWith(filter, …)
 * }
 * ```
 */
export declare class QdConnectorTableFilterDirective<T extends string> implements AfterViewInit, OnChanges, OnDestroy {
    private tableComponent;
    private toolbarComponentsService;
    /**
     * @description Configuration of the filter used to connect to the table.
     */
    qdConnectToFilter: QdFilterConfigData;
    filterComponent: QdFilterComponent;
    private _destroyed$;
    constructor(tableComponent: QdTableComponent<T>, toolbarComponentsService: QdToolbarComponentsService);
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    private setFilterComponent;
    private validateAndApplyConfig;
    private subscribeToFilterChanges;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdConnectorTableFilterDirective<any>, [{ host: true; }, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<QdConnectorTableFilterDirective<any>, "qd-table[qdConnectToFilter]", never, { "qdConnectToFilter": { "alias": "qdConnectToFilter"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=connector-table-filter.directive.d.ts.map