import { ChangeDetectorRef, EventEmitter, OnInit, OnDestroy, ElementRef, NgZone } from '@angular/core';
import { Observable, Subscription } from 'rxjs';
/** default search-box theme types */
export declare type SEARCH_TYPE = 'ico' | 'btn' | string;
/** default search-box is not suggest search */
export declare type IS_SUGGESTION = 'true' | 'false';
/** Time in ms to throttle the resize|scroll events by default. */
export declare const DEFAULT_DELAY_TIME = 100;
/** default search-box size types */
export declare type SIZE = 'long' | 'default' | 'short' | string;
export declare class SearchBoxComponent implements OnInit, OnDestroy {
    private _cd;
    private el;
    private ngZone;
    /** search event */
    onSearch: EventEmitter<{}>;
    /** clear search event */
    onClear: EventEmitter<{}>;
    /** suggest search event */
    onSearchSuggestion: EventEmitter<{}>;
    /**
     * search-box type: either 'ico' or 'btn'
     * @default 'ico'
     */
    type: SEARCH_TYPE;
    /**
     * search-box size, there three default size: 'long' | 'default' | 'short'
     * @default 'default'
     */
    size: SIZE;
    /**
     * Whether the search-box is suggest search: either true or false
     * @default 'false'
     */
    isSuggestion: boolean;
    /**
     * search-box default placeholder
     * @default '按关键词搜索'
     */
    placeholder: string;
    /**
     * Whether the search-box is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * search-box mode,default 'keyup',have two mode: 'keyup','focus'.
     * @default 'keyup'
     */
    mode: string;
    /**
     * search-box value
     * @default ''
     */
    value: string;
    /**
     * search-box suggest search value
     * @default []
     */
    suggestionValue: Array<string>;
    /**
     * init suggest search region is not open
     * @docs-private
     */
    isOpen: boolean;
    /**
     * Stream of viewport change|scroll events.
     * @docs-private
     */
    _change: Observable<Event>;
    /**
     * Subscription to viewport resize|scroll events.
     * @docs-private
     */
    _resizeSubscription: Subscription;
    /**
     * composing value, default false
     * @docs-private
     */
    _composing: boolean;
    /**
     * input in search-box default size
     * @docs-private
     */
    _sizeIpt: string;
    /**
     * buttion in search-box default size
     * @docs-private
     */
    _sizeBtn: string;
    /**
     * input blur event
     * @docs-private
     */
    _inputBlur: Observable<Event>;
    /**
     * 计时器
     * @docs-private
     */
    _timer: Subscription;
    searchInput: ElementRef;
    constructor(_cd: ChangeDetectorRef, el: ElementRef, ngZone: NgZone);
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * set search-box class
     * @docs-private
     */
    setClass(): void;
    /**
     * get search-box class
     * @param className
     * @docs-private
     */
    getClassName(className: string): string;
    /**
     * return a stream that emits whenever the input blur event happen
     * @param throttleTime
     * @docs-private
     */
    blurInput(throttleTime?: number): Observable<Event>;
    /**
     * close suggestion layer
     * @param self
     * @docs-private
     */
    closeSuggestionLayer(self: any): void;
    /**
     * Returns a stream that emits whenever the size of the viewport change|scroll.
     * @param throttle Time in milliseconds to throttle the stream.
     * @docs-private
     */
    change(throttleTime?: number): Observable<Event>;
    /**
     * position suggestion layer
     * @docs-private
     */
    positionSuggestionLayer(self: any): void;
    /**
     * 处理compositionstart事件
     * @docs-private
     */
    _compositionStart(): void;
    /**
     * 处理compositionend事件
     * @docs-private
     */
    _compositionEnd(): void;
    /**
     * listen keyword input in search-box
     * @param event
     * @docs-private
     */
    onInputValue(event: any): void;
    /**
     * listen enter keydown event in search-box
     * @param event
     * @docs-private
     */
    onKeydown(event: any): void;
    /**
     * realize search-box suggest function
     * @docs-private
     */
    fnSugguestValue(): void;
    /**
     * clear keyword in search-box
     * @param ipt
     * @docs-private
     */
    clearSearch(ipt: any): void;
    /**
     * search use keyword event
     * @docs-private
     */
    search(): void;
    /**
     * click select suggest search value
     * @docs-private
     */
    selectSuggestionValue(suggestionItem: string): void;
    /**
     * listen focus on input event
     * @param ipt
     * @docs-private
     */
    onFocus(ipt: any): void;
    /**
     * listen blur input event
     * @param ipt
     * @docs-private
     */
    onBlur(ipt: any): void;
    /**
     * The method to be called in order to update ngModel.
     * Now `ngModel` binding is not supported in multiple selection mode.
     */
    private _onModelChange;
    /**
     * Registers a callback that will be triggered when the value has changed.
     * Implemented as part of ControlValueAccessor.
     * @param fn On change callback function.
     */
    registerOnChange(fn: Function): void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
    private _onTouch;
    /**
     * Registers a callback that will be triggered when the control has been touched.
     * Implemented as part of ControlValueAccessor.
     * @param fn On touch callback function.
     */
    registerOnTouched(fn: Function): void;
    /**
     * set search-box model value
     * @docs-private
     */
    writeValue(value: any): void;
    /**
     * update form model value and mark for check
     * @docs-private
     */
    _markForCheck(): void;
}
