import { EventEmitter, OnChanges, ChangeDetectorRef, ElementRef, Renderer2, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { TransferService } from '../transfer/transfer.service';
export interface TableConfig {
    headData: any[];
    colWidth: any[];
    hideCol: any[];
}
export declare class TableTransferComponent implements OnChanges, ControlValueAccessor {
    private _cd;
    private el;
    private _render;
    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: any;
    /**
     * selected list data
     * @default []
     */
    selectedData: any[];
    /**
     * table head list data
     * @default []
     */
    tableConfig: TableConfig;
    /**
     * Whether the transfer is disabled
     * @default false
     */
    disabled: boolean;
    /**
     * custom class name
     * @default ''
     */
    customClass: string;
    /**
     * 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 have candidate data search-box
     * @default false
     */
    candidateSearch: boolean;
    /**
     * Whether the transfer is have selected data search-box
     * @default false
     */
    selectedSearch: boolean;
    /**
     * candidate data list title
     */
    candidateTitle: string;
    /**
     * selected data list title
     */
    selectedTitle: string;
    /**
     * add extend data config
     */
    addLink: any;
    /**
     * name length limit value
     */
    nameLenLimit: number;
    /**
     * support custom template
     */
    optionTplLeft: TemplateRef<any>;
    /**
     * support custom template
     */
    optionTplRight: TemplateRef<any>;
    /**
     * 右侧提示文案
     */
    rightNotice: string;
    /**
     * 空数据模板
     */
    emptyTpl: TemplateRef<any>;
    /**
     * 空数据字符串
     */
    emptyMessage: string;
    /**
     * return method make object formatter to array
     * @docs-private
     */
    private _datasource;
    /**
     * return method make object formatter to array
     * @docs-private
     */
    private _allDatasource;
    /**
     * return method make object formatter to array
     * @docs-private
     */
    selectedDatasource: any[];
    /**
     * return method make object formatter to array
     * @docs-private
     */
    private _selectedDatasource;
    /**
     * The method to be called in order to update ngModel.
     * Now `ngModel` binding is not supported in multiple selection mode.
     */
    private _onModelChange;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
    private _onTouch;
    /**
     * selected options's id as list
     * @docs-private
     */
    private value;
    /**
     * return method make object formatter to array
     * @docs-private
     */
    objectKeys: (o: {}) => string[];
    constructor(_cd: ChangeDetectorRef, el: ElementRef, _render: Renderer2, service: TransferService);
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * linsten model change
     * @docs-private
     */
    onModelChange(): void;
    /**
     * 更新已选值，并将备选及已选数组length push给basic transfer
     */
    noticeCountChange(datasourceLen: any, selectedLen: any): void;
    /**
     * 计算备选数据length
     * @param data 备选数据，默认为全量备选数据
     */
    leftCountChange(data?: any[]): number;
    /**
     * 计算已选数据length
     */
    rightCountChange(): number;
    /**
     * selected row
     * @param element selected row
     * @docs-private
     */
    onSelect(element: any): void;
    /**
     * select child node
     * @param node current node
     */
    onSelectChildNode(parent: any, element: any): void;
    /**
     * remove row
     * @param element remove row
     * @docs-private
     */
    onRemove(element: any): void;
    /**
     * 删除选中的子节点
     * @param parent 父节点
     * @param element 子节点
     */
    onRemoveChildNode(parent: any, element: any): void;
    copy(data: any): any;
    /**
     * trans all or not trans all item
     * @param e trans option
     * @docs-private
     */
    transAll(e: any): void;
    /**
     * 数据遍历器
     * @param origin 待遍历的数据
     * @param bool
     */
    dataIterator(origin: any, bool: any): void;
    /**
     * fitler candidate or selected list by key word
     * @param e search key word
     * @docs-private
     */
    searchByKeyWord(e: any): void;
    /**
     * shallow copy selectedDatasource
     * @docs-private
     */
    copySelectedData(): void;
    /**
     * throw out extend data event
     * @docs-private
     */
    extendData(): void;
    /**
     * judge text length whether is over long or not
     * @docs-private
     */
    judgeOverLong(event: string): boolean;
    /**
     * toggle parent node, expand or shrink
     */
    onToggle(item: any): void;
    /**
     * 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;
    /**
     * 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 table-transfer model value
     * @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;
}
