import { ChangeDetectorRef, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { Observable } from 'rxjs';
import { QdFormDropdownConfiguration, QdFormInputConfiguration } from '../forms/model/forms.interface';
import { QdSearchOptions } from './model/search-options.interface';
import { QdSearchState } from './model/search-store.interface';
import { QdSearchRouterConnectorService } from './services/search-router-connector.service';
import { QdSearchStoreService } from './services/search-store.service';
import { QdSearchService } from './services/search.service';
import * as i0 from "@angular/core";
/**
 * **QdSearchComponent** is a flexible search field with many configuration options.
 *
 * #### **Features**
 *
 * - **Search Field**: Text input with configurable placeholder, clear ("x") button, autofocus, and optional initial value.
 * - **PreSelect Dropdown**: Optional dropdown for category or mode selection, with disabling, and customizable labels.
 * - **Additional Info**: Optionally displays an info icon with tooltip for user guidance.
 * - **Router Integration**: Supports synchronizing search state with URL query parameters.
 *
 * #### **Usage**
 *
 * ```html
 * <qd-search [configData]="searchConfig"></qd-search>
 * ```
 *
 * ```typescript
 * searchConfig: QdSearchOptions = {
 *   phrase: 'Initial search',
 *   clearable: true,
 *   preSelect: {
 *     optionsList: [
 *       { i18n: 'All', value: 'all' },
 *       { i18n: 'Open', value: 'open' },
 *       { i18n: 'Closed', value: 'closed' }
 *     ]
 *   },
 *   placeholder: { i18n: 'Search by keyword' },
 *   emptyAfterSearch: true,
 *   connectWithRouter: true
 * };
 * ```
 */
export declare class QdSearchComponent implements OnInit, OnChanges, OnDestroy {
    private readonly searchStoreService;
    private readonly searchRouterConnectorService;
    private cd;
    /**
     * The configuration of the search.
     */
    set configData(configData: QdSearchOptions);
    get configData(): QdSearchOptions;
    searchId: QdSearchOptions['uid'];
    searchService: QdSearchService;
    private _configDataSubject;
    private _search;
    private _preSelect;
    private _destroyed$;
    private _searchConnectedWithRouterSubject;
    private _searchConnectedWithRouter$;
    get inputConfig(): QdFormInputConfiguration;
    get hasConfig(): boolean;
    get dropdownConfig(): QdFormDropdownConfiguration;
    get search(): string;
    set search(search: string);
    get preSelect(): string;
    set preSelect(preSelect: string);
    get hasAdditionalInfo(): boolean;
    get preSelectedEnabled(): boolean;
    constructor(searchStoreService: QdSearchStoreService, searchRouterConnectorService: QdSearchRouterConnectorService, selfSearchService: QdSearchService, parentSearchService: QdSearchService, cd: ChangeDetectorRef);
    ngOnInit(): Promise<void>;
    private waitForConfigData;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    handleDelete(): void;
    startSearch(): void;
    hasConfigData(): boolean;
    getSearchChanges$(): Observable<QdSearchState>;
    private hasPhraseChanged;
    private hasPreselectOptionsListChanged;
    private handleClear;
    private isEmptySearchEmitted;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdSearchComponent, [null, null, { self: true; }, { optional: true; skipSelf: true; }, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<QdSearchComponent, "qd-search", never, { "configData": { "alias": "configData"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=search.component.d.ts.map