import { EventEmitter, OnChanges, ChangeDetectorRef, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { TreeNode } from './tree-transfer.interface';
import { TransferService } from '../transfer/transfer.service';
export declare class TreeTransferComponent implements OnChanges, ControlValueAccessor {
    private _cd;
    private service;
    /** get selected value event */
    getValue: EventEmitter<number[] | string[] | object[]>;
    /** search event */
    searchValue: EventEmitter<string>;
    /** tree node expand event */
    onExpandNode: EventEmitter<object>;
    /** tree node expand event */
    onExtendData: EventEmitter<object>;
    /**
     * candidate list data
     * @default []
     */
    candidateData: TreeNode[];
    /**
     * selected list data
     * @default []
     */
    selectedData: TreeNode[];
    /**
     * Whether the transfer is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * Whether the transfer is can all-trans
     * @default false
     */
    allSelectLink: boolean;
    /**
     * Whether the transfer is can all-delete
     * @default false
     */
    allDeleteLink: boolean;
    /**
     * Whether the transfer is can all-trans
     * @default false
     */
    candidateSearch: boolean;
    /**
     * Whether the transfer is can all-delete
     * @default false
     */
    selectedSearch: boolean;
    /**
     * Whether the transfer is can all-trans
     */
    candidateTitle: string;
    /**
     * Whether the transfer is can all-delete
     */
    selectedTitle: string;
    /**
     * 右侧提示文案
     */
    rightNotice: string;
    addLink: any;
    /**
     * support custom template
     */
    optionTpl: TemplateRef<any>;
    /**
     * all options count
     * @docs-private
     */
    candidateCount: number;
    /**
     * all selected options count
     * @docs-private
     */
    selectedCount: number;
    /**
     * candidate trans to list data
     * @docs-private
     */
    private _candidateNodeList;
    /**
     * selected trans to list data
     * @docs-private
     */
    private _selectedNodeList;
    /**
     * selected options's id as list
     * @docs-private
     */
    private value;
    /**
     * the search keyword
     * @docs-private
     */
    private keyword;
    constructor(_cd: ChangeDetectorRef, service: TransferService);
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * init transfer
     * @docs-private
     */
    initTransfer(): void;
    /**
     * set the show attribute to true
     * @docs-private
     */
    initTree(treeData: TreeNode[], mode: string): void;
    /**
     * set the show attribute to false, for fitler
     * @docs-private
     */
    transferTreeToList(treeData: TreeNode[], mode: string, isForSearch?: boolean): void;
    /**
     * init count
     * @docs-private
     */
    initCount(): void;
    /**
     * clear selected options's id as list
     * @docs-private
     */
    clearDataListSelected(): void;
    /**
     * calculate selected options count and push in value
     * @docs-private
     */
    countSelectedNodes(tree: TreeNode[]): void;
    /**
     * judge node whether have child
     * @docs-private
     */
    hasChildren(node: TreeNode): boolean;
    /**
     * @param   {string} part     搜索的字符串片段
     * @param   {string} complete 完整的字符串
     * @returns boolean 字符串片段在字符串中的位置
     */
    search(keyWord: string, fullWord: string | undefined): false | RegExpMatchArray | null;
    /**
     * fitler candidate or selected list by key word
     * @docs-private
     */
    searchByKeyWord(e: any): void;
    /**
     * reset candidate or selected node list
     * @docs-private
     */
    resetNodeList(mode: string): void;
    /**
     * get node the searched by key word
     * @docs-private
     */
    searchNodes(node: TreeNode, mode: string, keyword: string, type?: string): void;
    /**
     * get target node in xxNodeList
     * @docs-private
     */
    getTargetNode(treeNode: TreeNode, mode: string): TreeNode;
    /**
     * set searchnode is show or not
     * @docs-private
     */
    setSearchNodes(node: TreeNode): void;
    /**
     * set searchnode's children node is show or not
     * @docs-private
     */
    setSearchNodesChildren(nodeChildren: TreeNode[], mode: string, type: string | undefined): void;
    /**
     * get target node root node
     * @docs-private
     */
    getRootNodes(nodes: Object): any;
    /**
     * tree node expand event
     * @docs-private
     */
    expandNode(event: TreeNode): void;
    /**
     * throw the node click event out
     * @docs-private
     */
    transNode(event: TreeNode, mode: string): void;
    /**
     * propagate down node 'isSelected' value
     * @docs-private
     */
    propagateDown(node: TreeNode, chkVal: boolean, mode: string, currentTree: string, transType?: string): void;
    /**
     * propagate up node 'isSelected' value
     * @docs-private
     */
    propagateUp(node: TreeNode, chkVal: boolean, mode: string): void;
    /**
     * render target node 'isExpanded' and 'isSelected' attribute
     * @docs-private
     */
    renderTargetNode(mode: string, currentTree: string): TreeNode[];
    /**
     * render target's root node and root's children the 'isExpanded' and 'isSelected' attribute
     * @docs-private
     */
    renderTransTree(root: TreeNode, mode: string, currentTree: string): void;
    /**
     * trans all options to Selected or not
     * @docs-private
     */
    transAll(e: any): void;
    /**
     * render root nodes and root's children the 'isExpanded' and 'isSelected' attribute
     * @docs-private
     */
    renderRootNodes(treeData: TreeNode[], mode: string, chkVal: boolean, currentTree: string): TreeNode[];
    /**
     * throw out extend data event
     */
    extendData(): 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 tree-transfer model value. Implemented as part of ControlValueAccessor.
     * @docs-private
     */
    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
     * @docs-private
     */
    _markForCheck(): void;
}
