import { Browser, By, WebElement } from "../selenium";
import { UIComponent } from "./ui-component";
import { SortType } from "./enums";
import { FilterMenu } from "./filtermenu";
import { ColumnMenu } from "./columnmenu";
export declare class Table extends UIComponent {
    protected parentElement?: WebElement | By | string;
    static TOOLBAR_ADD_BUTTON: string;
    static TOOLBAR_SAVE_BUTTON: string;
    static TOOLBAR_CANCEL_BUTTON: string;
    constructor(browser: Browser, locator: By | string, parentElement?: WebElement | By | string);
    addButton(): Promise<WebElement>;
    saveChanges(): Promise<WebElement>;
    cancelChanges(): Promise<WebElement>;
    headerByIndex(column: number): Promise<WebElement>;
    headerByText(text: string, { exactMatch }?: {
        exactMatch?: boolean;
    }): Promise<WebElement>;
    columnMenuByIndex(column: number): Promise<WebElement>;
    columnMenuByText(text: string, { exactMatch }?: {
        exactMatch?: boolean;
    }): Promise<WebElement>;
    filterMenuByIndex(column: number): Promise<WebElement>;
    filterMenuByText(text: string, { exactMatch }?: {
        exactMatch?: boolean;
    }): Promise<WebElement>;
    headerSortType(text: string, { exactMatch }?: {
        exactMatch?: boolean;
    }): Promise<SortType>;
    filterInput(column: number): Promise<WebElement>;
    openColumnMenu(text: string): Promise<ColumnMenu>;
    openFilterMenu(text: string): Promise<FilterMenu>;
    tableRows(): Promise<WebElement[]>;
    tableRow(index: number): Promise<WebElement>;
    tableRowsCount({ onlyVisible }?: {
        onlyVisible?: boolean;
    }): Promise<number>;
    waitForRows(rowsCount: number, { timeout, pollTimeout }?: {
        timeout?: number;
        pollTimeout?: number;
    }): Promise<void>;
    cellLocator(row: number, column: number): string;
    cell(row: number, column: number): Promise<WebElement>;
    cellText(row: number, column: number): Promise<string>;
    cellInput(row: number, column: number): Promise<WebElement>;
    writeInCell(row: number, column: number, text: string, { clickToFocus, clear, sendEnter }?: {
        clickToFocus?: boolean;
        clear?: boolean;
        sendEnter?: boolean;
    }): Promise<void>;
    dragCellByRow(index: number): Promise<WebElement>;
    addCommandByRow(index: number): Promise<WebElement>;
    editCommandByRow(index: number): Promise<WebElement>;
    removeCommandByRow(index: number): Promise<WebElement>;
    saveCommandByRow(index: number): Promise<WebElement>;
    cancelCommandByRow(index: number): Promise<WebElement>;
}
