import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { QdFilterService } from '../filter/filter-service/filter.service';
import { QdFilterPostBodyData } from '../filter/model/filter-post-body.interface';
import { QdSearchPostBodyData } from '../search/model/search-post-body';
import { QdSearchService } from '../search/services/search.service';
import { QdSectionConfig } from './model/section-config.interface';
import { QdSectionToolbarActionService } from './services/section-toolbar-action.service';
import * as i0 from "@angular/core";
/**
 * **QdSectionComponent** is a flexible container pattern for organizing UI elements like tables or forms.
 * It is a part of the **Quadrel Layout System (QLS)** and supports responsive design and includes built-in features for actions, search, and filtering.
 *
 * #### **Features**
 *
 * - **Customizable**: Fully configurable with the `QdSectionConfig` API.
 * - **Toolbar Integration**: Add actions, search, and filters directly to the toolbar.
 * - **Action Management**: Use predefined or custom actions for user interactions.
 * - **Search and Filter**: Improve data presentation with integrated search and filtering.
 *
 * #### **Interactions**
 *
 * - **Actions**: Define actions with custom labels, icons, and handlers.
 * - **Search**: Add a field to search queries and results.
 * - **Filter**: Use filters to refine the section’s displayed data.
 *
 * #### **Toolbar for Interaction**
 *
 * The **QdSection** supports toolbar tools that interact directly with its content.
 *
 * - Tools like **QdFilter** and **QdSearch** can filter or search a **QdTable** dynamically.
 * - Use directives such as ConnectToFilter, ConnectToSearch, ConnectToContext on the target component to enable this interaction.
 * - These connections ensure smooth communication between the toolbar and the section content.
 * - And much more...
 *
 * #### **Content Usage Rules**
 *
 * Each **QdSection** should contain **only one type of content**.
 * For instance:
 * - Use a **QdTable** or **QdForm** components within a **QdSection**, but not both at the same time.
 * - For multiple content types, create separate instances of **QdSectionComponent**.
 *
 * This ensures clean design and separation of concerns in your UI.
 *
 * #### **Usage**
 *
 * ```typescript
 * @Component({
 *   selector: 'app-my-section',
 *   template: `
 *     <qd-section [config]="sectionConfig">
 *       <!-- Your content here -->
 *     </qd-section>
 *   `
 * })
 * export class MySectionComponent {
 *   sectionConfig: QdSectionConfig = {
 *     // Configuration options here
 *   };
 * }
 * ```
 */
export declare class QdSectionComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {
    private readonly searchService;
    private readonly actionService;
    private readonly filterService;
    private readonly elementRef;
    private readonly cdr;
    /**
     * The configuration of the section.
     */
    config: QdSectionConfig;
    /**
     * Emits an event when the search functionality integrated in the toolbar has been triggered. <br />
     * Return value is the query string of the search.
     */
    searchQueryStringOutput: EventEmitter<string>;
    /**
     * Emits an event when the search functionality integrated in the toolbar has been triggered. <br />
     * Return value is the result object of the search.
     */
    searchPostBodyOutput: EventEmitter<QdSearchPostBodyData>;
    /**
     * @description Sends an event when the toolbar action button is clicked or tapped.
     *
     * The event includes the action type or `null` if no specific action type is defined.
     */
    actionOutput: EventEmitter<string>;
    /**
     * Emits event on click/tap of the filter/reset button of the filter or on deletion of an active item. <br />
     * Return value is the query string of the filter. The filter is integrated in the toolbar.
     */
    filterQueryStringOutput: EventEmitter<string>;
    /**
     * Emits event on click/tap of the filter/reset button of the filter or on deletion of an active item. <br />
     * Return value is the result object of the filter. The filter is integrated in the toolbar.
     */
    filterPostBodyOutput: EventEmitter<QdFilterPostBodyData>;
    /**
     * Emits event when the values of the filter change. Return value matches the current object of the filter.
     */
    filterValueChangeOutput: EventEmitter<QdFilterPostBodyData>;
    noHorizontalPaddingMobile: boolean;
    private _outputSubscriptions;
    constructor(searchService: QdSearchService, actionService: QdSectionToolbarActionService, filterService: QdFilterService, elementRef: ElementRef, cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    private subscribeForOutputs;
    private subscribeForSearchOutputs;
    private subscribeForActionOutput;
    private subscribeForFilterOutputs;
    private unsubscribeOutputSubscriptions;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdSectionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<QdSectionComponent, "qd-section", never, { "config": { "alias": "config"; "required": false; }; }, { "searchQueryStringOutput": "searchQueryStringOutput"; "searchPostBodyOutput": "searchPostBodyOutput"; "actionOutput": "actionOutput"; "filterQueryStringOutput": "filterQueryStringOutput"; "filterPostBodyOutput": "filterPostBodyOutput"; "filterValueChangeOutput": "filterValueChangeOutput"; }, never, ["*"], false, never>;
}
//# sourceMappingURL=section.component.d.ts.map