import { ReactiveController, ReactiveElement } from 'lit';
import { KeynavCode } from '../utils/dom.js';
export interface KeynavGridConfig {
    grid?: HTMLElement;
    columnRow?: HTMLElement;
    columns?: NodeListOf<HTMLElement> | HTMLElement[];
    rows: NodeListOf<HTMLElement> | HTMLElement[];
    cells: NodeListOf<HTMLElement> | HTMLElement[];
}
export interface KeynavGridElement {
    keynavGridConfig: KeynavGridConfig;
}
/**
 * https://w3c.github.io/aria-practices/#gridNav_focus
 */
export declare function keyNavigationGrid<T extends ReactiveElement & KeynavGridElement>(): ClassDecorator;
export declare class KeyNavigationGridController<T extends ReactiveElement & KeynavGridElement> implements ReactiveController {
    #private;
    private host;
    constructor(host: T);
    hostConnected(): Promise<void>;
    hostDisconnected(): void;
}
export declare function getNextKeyGridItem(cells: HTMLElement[], rows: HTMLElement[], config: {
    code: KeynavCode | string;
    ctrlKey: boolean;
    dir: string;
}): {
    x: number;
    y: number;
};
