// Generated by dts-bundle v0.7.3
// Dependencies for this module:
//   ../../@polymer/lit-element

declare module '@p_mac/datatables.webcomponent' {
    import { defineComponent } from "@p_mac/datatables.webcomponent/utils/component";
    import DataTable from "@p_mac/datatables.webcomponent/component/DataTable";
    export { defineComponent, DataTable };
    export { FilterableOpts, SummableOpts, ExportableOpts, PaginateOpts, AjaxOpts } from "@p_mac/datatables.webcomponent/declarations";
}

declare module '@p_mac/datatables.webcomponent/utils/component' {
    export const defineComponent: (tagName: string, constructor: Function, namespace?: string) => any;
    export const findInSlot: (element: any, selector: any) => any;
    export const datasetToProps: (el: HTMLElement) => void;
    export const mergeDefaults: (el: HTMLElement, mergeableProps: string[]) => void;
}

declare module '@p_mac/datatables.webcomponent/component/DataTable' {
    import { LitElement } from "@polymer/lit-element";
    import { Filter, FilterableOpts, AjaxOpts, PaginateOpts, ExportableOpts, SummableOpts, OrderableOpts } from "@p_mac/datatables.webcomponent/declarations";
    export default class DataTable extends LitElement {
        static componentName: string;
        static renderRoot: string;
        theme: any;
        styleOverrides: string;
        data: Array<any>;
        headers: Array<string>;
        rows: Array<any>;
        protected orderableDefaults: OrderableOpts;
        orderable: OrderableOpts;
        protected summableDefaults: SummableOpts;
        summable: SummableOpts;
        filterableDefaults: FilterableOpts;
        filterable: FilterableOpts;
        paginatableDefaults: PaginateOpts;
        paginatable: PaginateOpts;
        exportablesDefaults: Array<ExportableOpts>;
        exportables: Array<ExportableOpts>;
        ajaxDefaults: AjaxOpts;
        ajax: AjaxOpts;
        loading: boolean;
        currentPage: number;
        protected originalData: Array<any>;
        protected searchedData: Array<any>;
        protected sortedFlags: Array<number>;
        protected activeFilters: Array<Filter>;
        protected summedCols: Array<any>;
        createRenderRoot(): this | ShadowRoot;
        firstUpdated(): void;
        init(data?: Array<any>): void;
        updateData(data: Array<any>): void;
        refreshData(data: Array<any>, applyFilters?: boolean, currentPage?: number): void;
        searchData(queryVal: string): void;
        sortCol(index: number, order?: any): void;
        protected sortData(index: number, order?: any, data?: Array<any>): any[];
        filterCol(key: string, queryValue: any): void;
        protected filterData(key: string, queryValue: any, data?: Array<any>): any[];
        getExportableData(): any[];
        getActiveData(): any[];
        protected getPaginatableData(): any[];
        reset(): void;
        getTotalPages(): number;
        getTotalItems(): number;
        getTotalDataItems(): number;
        nextPage(): void;
        prevPage(): void;
        changePage(pageNum: number): void;
        protected gotoPage(): void;
        setResultsPerPage(perPage: number): void;
        export(exportable: ExportableOpts): void;
        render(): import("lit-html").TemplateResult;
        protected tableTemplate(): import("lit-html").TemplateResult;
        protected exportButtonsTemplate(): import("lit-html").TemplateResult;
        protected perPageSelectorTemplate(): import("lit-html").TemplateResult;
        protected rowTemplate(row: any): import("lit-html").TemplateResult;
        protected filterTemplate(): import("lit-html").TemplateResult;
        protected filterSelectTemplate(key: any): import("lit-html").TemplateResult;
        protected footerTemplate(): import("lit-html").TemplateResult;
        protected paginationTemplate(): import("lit-html").TemplateResult;
    }
}

declare module '@p_mac/datatables.webcomponent/declarations' {
    export interface KeyMap {
        [key: string]: any;
    }
    export interface ExtensionOpts {
        enabled: boolean;
    }
    export interface OrderableOpts extends ExtensionOpts {
        column: number;
        order: string;
    }
    export interface ColOpts extends ExtensionOpts {
        colIndexes: any;
    }
    export interface FilterableOpts extends ColOpts {
    }
    export interface SummableOpts extends ColOpts {
        formatter?: Function;
    }
    export interface PaginateOpts extends ExtensionOpts {
        resultsPerPage: number;
        perPageOptions: Array<number>;
    }
    export interface AjaxOpts {
        url: string;
    }
    export interface ExportableOpts extends ExtensionOpts {
        type: string;
        filename: string;
    }
    export interface Filter {
        key: string;
        value: string;
    }
}

