import { OnDestroy, OnInit, OnChanges, SimpleChanges, EventEmitter, Renderer2, ElementRef, TemplateRef, SimpleChange } from '@angular/core';
import { DecimalPipe } from '@angular/common';
import { HttpClient } from '@angular/common/http';
import { Router } from '@angular/router';
import { Observable } from 'rxjs';
import { CNCurrencyPipe, DatePipe, YNPipe, ModalHelper } from 'yoyo-ng-module/theme';
import { SimpleTableColumn, SimpleTableChange, SimpleTableSelection, SimpleTableFilter, SimpleTableData, SimpleTableButton, STExportOptions, ResReNameType, ReqReNameType } from './interface';
import { AdSimpleTableConfig } from './simple-table.config';
import { SimpleTableExport } from './simple-table-export';
export declare class SimpleTableComponent implements OnInit, OnChanges, OnDestroy {
    private defConfig;
    private http;
    private router;
    private el;
    private renderer;
    private exportSrv;
    private modal;
    private currenty;
    private date;
    private yn;
    private number;
    private doc;
    private data$;
    private _inited;
    _data: SimpleTableData[];
    _url: string;
    _isAjax: boolean;
    _isPagination: boolean;
    _classMap: string[];
    _allChecked: boolean;
    _indeterminate: boolean;
    _columns: SimpleTableColumn[];
    /** 数据源 */
    data: string | any[] | Observable<any[]>;
    /**
     * 额外请求参数，默认自动附加 `pi`、`ps` 至URL
     * - `{ status: 'new' }` => `url?pi=1&ps=10&status=new`
     */
    extraParams: any;
    /** 请求方法 */
    reqMethod: string;
    /** 请求体 `body` */
    reqBody: any;
    /** 请求体 `Header` */
    reqHeaders: any;
    /**
     * 重命名请求参数 `pi`、`ps`
     * - `{ pi: 'Page' }` => `pi` 会被替换成 Page
     */
    reqReName: ReqReNameType;
    private _reqReName;
    /** 请求异常时回调 */
    readonly reqError: EventEmitter<any>;
    /**
     * 重命名返回参数 `total`、`list`
     * - `{ total: 'Total' }` => Total 会被当作 `total`
     */
    resReName: ResReNameType;
    private _resReName;
    /** 列描述  */
    columns: SimpleTableColumn[];
    /** 每页数量，当设置为 `0` 表示不分页，默认：`10` */
    ps: any;
    private _ps;
    /** 当前页码 */
    pi: any;
    private _pi;
    /** 数据总量 */
    total: any;
    private _total;
    /** 是否显示分页器 */
    showPagination: any;
    private _showPagination;
    /** 是否显示Loading */
    loading: any;
    private _loading;
    /** 延迟显示加载效果的时间（防止闪烁） */
    loadingDelay: any;
    private _loadingDelay;
    /** 是否显示边框 */
    bordered: any;
    private _bordered;
    /** table大小 */
    size: 'small' | 'middle' | 'default';
    /** 纵向支持滚动，也可用于指定滚动区域的高度：`{ y: '300px', x: '300px' }` */
    scroll: {
        y?: string;
        x?: string;
    };
    /** 是否显示pagination中改变页数 */
    showSizeChanger: any;
    private _showSizeChanger;
    /** pagination中每页显示条目数下拉框值 */
    pageSizeOptions: number[];
    /** 是否显示pagination中快速跳转 */
    showQuickJumper: any;
    private _showQuickJumper;
    /** 是否显示总数据量 */
    private _totalTpl;
    showTotal: any;
    renderTotal(total: string, range: string[]): string;
    /**
     * 前端分页，当 `data` 为`any[]` 或 `Observable<any[]>` 有效，默认：`true`
     * - `true` 由 `simple-table` 根据 `data` 长度受控分页，包括：排序、过滤等
     * - `false` 由用户通过 `total` 和 `data` 参数受控分页，并维护 `(change)` 当分页变更时重新加载数据
     */
    frontPagination: any;
    private _frontPagination;
    /** 数据变更后是否保留在数据变更前的页码 */
    isPageIndexReset: any;
    private _isPageIndexReset;
    /** 分页方向 */
    pagePlacement?: 'left' | 'center' | 'right';
    /** 切换分页时返回顶部 */
    toTopInChange: any;
    private _toTopInChange;
    /** 返回顶部偏移值 */
    toTopOffset: any;
    private _toTopOffset;
    /** 重命名排序值，`columns` 的重命名高于属性 */
    sortReName: {
        ascend?: string;
        descend?: string;
    };
    /** 是否多排序，当 `sort` 多个相同值时自动合并，建议后端支持时使用 */
    multiSort: any;
    private _multiSort;
    /** 数据处理前回调 */
    preDataChange: (data: SimpleTableData[]) => SimpleTableData[];
    /** `header` 标题 */
    header: TemplateRef<void>;
    /** 额外 `body` 内容 */
    body: TemplateRef<void>;
    /** `footer` 底部 */
    footer: TemplateRef<void>;
    /** `expand` 可展开，当数据源中包括 `expand` 表示展开状态 */
    expand: TemplateRef<{
        $implicit: any;
        column: SimpleTableColumn;
    }>;
    noResult: string | TemplateRef<void>;
    widthConfig: string[];
    /** 页码、每页数量变化时回调 */
    readonly change: EventEmitter<SimpleTableChange>;
    /** checkbox变化时回调，参数为当前所选清单 */
    readonly checkboxChange: EventEmitter<SimpleTableData[]>;
    /** radio变化时回调，参数为当前所选 */
    readonly radioChange: EventEmitter<SimpleTableData>;
    /** 排序回调 */
    readonly sortChange: EventEmitter<any>;
    /** Filter回调 */
    readonly filterChange: EventEmitter<SimpleTableColumn>;
    /** 后端分页是否采用`1`基索引，只在`data`类型为`string`时有效 */
    zeroIndexedOnPage: any;
    private _zeroIndexedOnPage;
    constructor(defConfig: AdSimpleTableConfig, http: HttpClient, router: Router, el: ElementRef, renderer: Renderer2, exportSrv: SimpleTableExport, modal: ModalHelper, currenty: CNCurrencyPipe, date: DatePipe, yn: YNPipe, number: DecimalPipe, doc: any);
    /**
     * 根据页码重新加载数据
     *
     * @param pi 指定当前页码，默认：`1`
     * @param extraParams 重新指定 `extraParams` 值
     */
    load(pi?: number, extraParams?: any): void;
    /**
     * 重新刷新当前页
     * @param extraParams 重新指定 `extraParams` 值
     */
    reload(extraParams?: any): void;
    /**
     * 重置且重新设置 `pi` 为 `1`
     *
     * @param extraParams 重新指定 `extraParams` 值
     */
    reset(extraParams?: any): void;
    private getAjaxData(url?);
    private _genAjax(forceRefresh?);
    _genData(forceRefresh?: boolean): void;
    private _toTop();
    private checkPaged();
    private processData();
    private subscribeData(res);
    _change(type: 'pi' | 'ps'): void;
    _get(item: any, col: SimpleTableColumn): any;
    _click(e: Event, item: any, col: SimpleTableColumn): boolean;
    _sortMap: {
        [key: number]: any;
    };
    _sortColumn: SimpleTableColumn;
    _sortOrder: string;
    _sortIndex: number;
    private getReqSortMap();
    private getSorterFn();
    sort(index: number, value: any): void;
    private getReqFilterMap();
    private handleFilter(col);
    filterConfirm(col: SimpleTableColumn): void;
    filterClear(col: SimpleTableColumn): void;
    filterRadio(col: SimpleTableColumn, item: SimpleTableFilter, checked: boolean): void;
    /** 清除所有 `checkbox` */
    clearCheck(): this;
    _checkAll(checked?: boolean): this;
    _checkSelection(i: SimpleTableData, value: boolean): this;
    _refCheck(): this;
    _rowSelection(row: SimpleTableSelection): this;
    _checkNotify(): this;
    /** 清除所有 `radio` */
    clearRadio(): this;
    _refRadio(checked: boolean, item: SimpleTableData): this;
    btnCoerce(list: SimpleTableButton[]): SimpleTableButton[];
    btnCoerceIf(list: SimpleTableButton[]): void;
    btnClick(record: any, btn: SimpleTableButton): void;
    private btnCallback(record, btn, modal?);
    btnText(record: any, btn: SimpleTableButton): string;
    fixedCoerce(list: SimpleTableColumn[]): void;
    /**
     * 导出Excel，确保已经注册 `AdXlsxModule`
     * @param urlOrData 重新指定数据，例如希望导出所有数据非常有用
     * @param opt 额外参数
     */
    export(urlOrData?: string | any[], opt?: STExportOptions): void;
    ngOnInit(): void;
    private setClass();
    private updateColumns();
    ngOnChanges(changes: {
        [P in keyof this]?: SimpleChange;
    } & SimpleChanges): void;
    ngOnDestroy(): void;
}
