/// <reference types="react" />
import { HTTP_METHOD } from '../..';
export declare enum TypeKeys {
    GET_TABLE_DATA = "instacar/table/GET_TABLE_DATA",
    GET_TABLE_DATA_SUCCESS = "instacar/table/GET_TABLE_DATA_SUCCESS",
    GET_TABLE_DATA_FAIL = "instacar/table/GET_TABLE_DATA_FAIL",
    DELETE_TABLE_ENTRY = "instacar/table/DELETE_TABLE_ENTRY",
    DELETE_TABLE_ENTRY_SUCCESS = "instacar/table/DELETE_TABLE_ENTRY_SUCCESS",
    DELETE_TABLE_ENTRY_FAIL = "instacar/table/DELETE_TABLE_ENTRY_FAIL",
    REFRESH_TABLE = "instacar/table/REFRESH_TABLE",
    SHOW_ENTRY_DETAILS = "instacar/table/SHOW_ENTRY_DETAILS",
    INIT_ENTRY_DETAILS = "instacar/table/INIT_ENTRY_DETAILS",
    SHOW_MENU = "instacar/table/SHOW_MENU",
    CLEAR_TABLE_DATA = "instacar/table/CLEAR_TABLE_DATA",
    CHANGE_GPS_DATA_VIEW_MODE = "instacar/table/CHANGE_GPS_DATA_VIEW_MODE"
}
export interface GetTableDataAction {
    type: TypeKeys.GET_TABLE_DATA;
    tableId: string;
}
export interface GetTableDataSuccessFailAction {
    type: TypeKeys.GET_TABLE_DATA_SUCCESS | TypeKeys.GET_TABLE_DATA_FAIL;
    response: any;
    tableId: string;
}
export interface DeleteTableEntryAction {
    type: TypeKeys.DELETE_TABLE_ENTRY;
    tableId: string;
    itemId: string | number;
}
export interface DeleteTableEntrySuccessFailAction {
    type: TypeKeys.DELETE_TABLE_ENTRY_SUCCESS | TypeKeys.DELETE_TABLE_ENTRY_FAIL;
    response: any;
    tableId: string;
}
export interface RefreshTableAction {
    type: TypeKeys.REFRESH_TABLE;
    tableId: string;
}
export interface ShowMenuAction {
    type: TypeKeys.SHOW_MENU;
    menuRow: any;
    menuShown: boolean;
    tableId: string;
}
export interface ClearTableDataAction {
    type: TypeKeys.CLEAR_TABLE_DATA;
    tableId: string;
}
export interface ChangeGpsDataViewMode {
    type: TypeKeys.CHANGE_GPS_DATA_VIEW_MODE;
    isTableView: boolean;
}
export interface ShowEntryDetails {
    type: TypeKeys.SHOW_ENTRY_DETAILS;
    details?: Array<TableEntryDetail>;
    itemName?: string | number;
}
export interface InitEntryDetails {
    type: TypeKeys.INIT_ENTRY_DETAILS;
    componentName: string;
}
export declare type ActionTypes = GetTableDataAction | GetTableDataSuccessFailAction | DeleteTableEntryAction | DeleteTableEntrySuccessFailAction | RefreshTableAction | ShowMenuAction | ClearTableDataAction | ChangeGpsDataViewMode | ShowEntryDetails | InitEntryDetails;
export interface TableState {
    [tableId: string]: {
        loading?: boolean;
        refresh?: boolean;
        data?: any;
        menuShown?: boolean;
        menuRow?: any;
        deletingEntry?: boolean;
        deletedEntrySuccess?: boolean;
        isTableView?: boolean;
        details?: Array<TableEntryDetail>;
        itemName?: string | number;
        componentName?: string;
    };
}
export interface TableEntryDetail {
    title: string;
    value: string | number | undefined | null | JSX.Element;
}
export interface TableFilter {
    column: string;
    value: string;
    operator: string;
}
export declare const table: (state: TableState | undefined, action: ActionTypes) => TableState;
export declare function loadTableData(url: string, tableId: string, filters?: Array<TableFilter>): {
    types: TypeKeys[];
    method: HTTP_METHOD;
    url: string;
    body: {};
    requestPayload: {
        tableId: string;
    };
    successPayload: {
        tableId: string;
    };
    failPayload: {
        tableId: string;
    };
};
export declare function deleteTableEntry(url: string, itemId: string | number, tableId: string): {
    types: TypeKeys[];
    method: string;
    url: string;
    successPayload: {
        tableId: string;
    };
    failPayload: {
        tableId: string;
    };
};
export declare function showMenu(pageId: string, tableId: string, menuShown: boolean, menuRow: any): {
    type: TypeKeys;
    pageId: string;
    tableId: string;
    menuShown: boolean;
    menuRow: any;
};
export declare function setRefreshTable(tableId: string): {
    type: TypeKeys;
    tableId: string;
};
export declare function clearTableData(tableId: string): {
    type: TypeKeys;
    tableId: string;
};
export declare function changeGpsDataViewMode(isTableView: boolean): {
    type: TypeKeys;
    isTableView: boolean;
};
export declare function showEntryDetails(details?: Array<TableEntryDetail>, itemName?: string | number): ShowEntryDetails;
export declare function initEntryDetails(componentName: string): InitEntryDetails;
