import { EventEmitter, ChangeDetectorRef, OnInit, OnDestroy } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
/**
 * region item interface
 */
export interface RegionItem {
    /** region node id */
    id: number;
    /** region node label */
    label: string;
    /** whether region node is selected */
    selected?: boolean;
    /** whether region node is disabled */
    disabled?: boolean;
    /** whether region node's children is partly selected */
    intermediate?: boolean;
    /** the children nodes of the region node */
    children?: RegionItem[];
    /** other properties */
    [key: string]: any;
}
/**
 * Region Picker Component
 */
export declare class RegionComponent implements OnInit, OnDestroy, ControlValueAccessor {
    private _cd;
    /** region value change event, emit an array of ids */
    change: EventEmitter<number[] | string[]>;
    /**
     * region datasource
     * @default []
     */
    datasource: RegionItem[];
    /**
     * region value, an array of numbers
     * @default []
     */
    value: number[];
    /**
     * region value change event
     * @docs-private
     */
    valueChange: EventEmitter<number[]>;
    /**
     * whether the region is disabled
     * @default false
     */
    disabled: boolean;
    /** timers */
    _timer: any;
    /** timeout */
    _timeout: number;
    /** previous shown province */
    _previousProvince: any;
    /** value map */
    _valueMap: {};
    constructor(_cd: ChangeDetectorRef);
    ngOnInit(): void;
    /**
     * @docs-private
     */
    onToggleNode(item: RegionItem, checked: boolean): void;
    /**
     * @docs-private
     */
    updateNode(node: RegionItem, checked: boolean): void;
    /**
     * @docs-private
     */
    setChildren(children: RegionItem[], checked: boolean): void;
    /**
     * @docs-private
     */
    updateParent(currentNode: RegionItem, checked: boolean): void;
    /**
     * @docs-private
     */
    getSelectedValue(): void;
    /**
     * @docs-private
     */
    walkDatasource(datasource: RegionItem[], fn: Function): void;
    /**
     * @docs-private
     */
    findParentNode(id: number): RegionItem | undefined;
    /**
     * @docs-private
     */
    onShowCity(overlay: any, event: MouseEvent): void;
    onClearTimeout(): void;
    onHideOverlay(overlay: any): void;
    /**
     * @docs-private
     */
    onHideCity(overlay: any): void;
    /**
     * @docs-private
     */
    onOverPanel(province: RegionItem): void;
    /**
     * @docs-private
     */
    onLeavePanel(province: RegionItem): void;
    /**
     * @docs-private
     */
    getSelectedCount(cities: RegionItem[]): number;
    ngOnDestroy(): 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;
    /**
     * Sets the model value. Implemented as part of ControlValueAccessor.
     * @param value Value to be set to the model.
     */
    writeValue(value: any): void;
    /**
     * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.
     * @param isDisabled Whether the component should be disabled.
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * update form model value and mark for check
     */
    _markForCheck(): void;
}
