import "datatables.net";
import "datatables.net-bs";
import "datatables.net-buttons";
import "datatables.net-buttons-bs";
import "datatables.net-responsive";
import "datatables.net-responsive-bs";
import "datatables.net-select";
import "datatables.net-select-bs";
import "../../libs/datatables.sorting.datetime-moment/datatables.sorting.datetime-moment";
import "moment";
/**
 * Table module options
 */
export interface ITableModuleOptions {
    /**
     * Selector or HTML element for the table you want to initialize
     */
    tableSelector: string | HTMLElement;
    /**
     * Optional: Which moment.js format to use for datetimes, if any. It is possible to add multiple by supplying an array. Default is [ "DD/MM/YYYY", "DD/MM/YYYY HH:mm" ].
     */
    datetimeFormat?: string[] | string;
    /**
     * Whether to enable paging or not. Default is true.
     */
    paging?: boolean;
    /**
     * Whether to enable lengthChange or not. Default is false.
     */
    lengthChange?: boolean;
    /**
     * Optional: Selector or HTML element to a <h3> title element for your table, if any.
     */
    titleSelector?: string | HTMLElement;
    /**
     * Optional: Selector or HTML element to a <div> element which contains filters for your table, if any.
     */
    filterSelector?: string | HTMLElement;
    /**
     * Optional: Base url to embla icons. Used for pagination arrows. Default is "/dist/icons"
     */
    iconBaseUrl?: string;
    /**
     * Optional: Override default language settings (default is danish)
     */
    language?: DataTables.LanguageSettings;
    /**
     * Optional: Responsive behavior(default is false)
     */
    responsive?: boolean;
    /**
     * Optional: This settings enables checkbox on rows the actions is supplied with HTML (default is false)
     */
    actions?: {
        actionsSelector: string | HTMLElement;
        selectedTextSingle: string;
        selectedTextPlural: string;
    };
    /**
     * Optional: Override additional datatable settings. Does not override datatable settings defined in ITableModuleOptions.
     */
    additionalDatatableSettings?: DataTables.Settings;
}
/**
 * Embla table modules which is based upon datatables
 */
export declare class TableModule {
    private datatablesApi;
    /**
     * Constructor for table, which initialises the module
     */
    constructor(options: ITableModuleOptions);
    getDatatablesApi(): DataTables.Api;
    /**
     * Filter the table by matching a given column's data with the given filter value
     * @param columnIndex 0 based index of the column to filter
     * @param filterValue Value to filter by
     * @param matchEntireColumn If the value should match the entire column
     * @param caseSensitive If the filter should be case sensitive
     */
    filterColumn(columnIndex: number, filterValue: string, matchEntireColumn?: boolean, caseSensitive?: boolean): void;
    getAllSelectedRows(): DataTables.Api;
    private initModule;
    private getLanguage;
    private initActions;
    private updateActionsRow;
    private getResponsiveSettings;
    private getDom;
    private generateColumnDef;
}
