import { OnInit, QueryList, OnChanges, SimpleChanges, EventEmitter } from "@angular/core";
import { NpColumnDirective } from "./column.directive";
import { NpEmptyDirective } from "./empty.directive";
import { NpHeaderDirective } from './header.directive';
/**
 * 可分页表格组件 - 支持分页、自定义列名、自定义列内容等。对于多语言，支持通过·@Input·属性自定义。
 *
 * <example-url>https://stackblitz.com/edit/np-table-sample?embed=1&file=src/app/app.component.html</example-url>
 */
export declare class NpTable implements OnInit, OnChanges {
    /**定义列名称（即数据源datasource对象属性名称），列显示名称，列宽度（可选，默认每列自适应等宽） */
    columns: Array<ColumnDef>;
    /**表格组件数据源，数据源为一个对象数组，对象的属性名称必须与表格列名称相同，否则不会展示此列 */
    datasource: Array<any>;
    /**数据总条数 */
    total: number;
    /**每页显示条数，默认20条 */
    pageSize: number;
    /**是否在表头第一列展示多选框，默认不展示 */
    showCheckbox: boolean;
    /**是否显示分页组件，默认显示 */
    showPager: boolean;
    /**是否服务器端排序，默认false，即客户端排序 */
    serverSideSort: boolean;
    /**首页按钮文字 */
    firstBtnText: string;
    /**上一页按钮文字 */
    preBtnText: string;
    /**下一页按钮文字 */
    nextBtnText: string;
    /**尾页按钮文字 */
    lastBtnText: string;
    /**共 */
    totalText: string;
    /**条，每页显示条数 */
    itemsPerPageText: string;
    /**没有数据按钮文字 */
    noDataLabel: string;
    /**当前页码 */
    pageNumber: number;
    /**页码改变事件，即翻页事件 （双向绑定） */
    pageNumberChange: EventEmitter<number>;
    /**页码改变事件，即翻页事件 */
    onPageChanged: EventEmitter<number>;
    /**每页显示条数改变事件 */
    onPageSizeChanged: EventEmitter<number>;
    /**
     * Will be deprecated, use onRows instead
     */
    onRowsChecked: EventEmitter<any>;
    /**
     * Will be deprecated, use onRows instead
     *
     * 为了向后兼容，故没有修改onRowsChecked逻辑，增加此output事件
     *
     * 当前行uncheck时触发此事件
     */
    onRowsUnchecked: EventEmitter<any>;
    /**当选择服务器端排序（即serverSideSort = true）时，根据当前点击列内容及排序，传给backend api返回服务器端排序数据赋值给datasource及total字段即可 */
    onServerSideSorted: EventEmitter<{
        col: ColumnDef;
        sortedBy: "default" | "desc" | "asc";
    }>;
    /**
     * 当前处理的行row/rows，选中/非选中状态
     *
     * 如点击全选按钮，则处理的是当前页的所有行rows
     */
    onRows: EventEmitter<any>;
    columnComponents: QueryList<NpColumnDirective>;
    headerComponents: QueryList<NpHeaderDirective>;
    emptyContent: NpEmptyDirective;
    projectedTemplates: Array<{
        name: string;
        template: any;
    }>;
    headerTemplates: Array<{
        name: string;
        template: any;
    }>;
    internalColumns: Array<InternalColumnDef>;
    /**此字段后续会废弃 will be deprecated */
    selectedRows: Array<any>;
    datasourceSortedByDefault: Array<any>;
    constructor();
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterContentInit(): void;
    onTablePageChanged(currentPageNumber: number): void;
    onTablePageSizeChanged(currentPageSize: number): void;
    onSelectAllChecked(isChecked: boolean): void;
    onRowSelectChecked(row: any): void;
    onSort(item: InternalColumnDef): void;
    private buildServerSideSort;
    private buildClientSideSort;
    private setNextSortedBy;
    private initUniqueIdForDatasource;
    private projectTemplate;
    private mergeToInternalColumns;
    private setSortedByToDefault;
    private ID;
    private selectAll;
    private resetOtherSortedColumns;
}
export interface ColumnDef {
    /**列名称 */
    headerName: string;
    /**列显示名称 */
    headerDisplayName: string;
    /**列宽度 */
    width?: string;
    sort?: boolean;
}
/**
 * @ignore
 */
interface InternalColumnDef extends ColumnDef {
    isCheckbox?: boolean;
    checked?: boolean;
    sortedBy?: 'default' | 'asc' | 'desc';
}
export {};
