import { ICustomAttributeController, ICustomAttributeViewModel, IHydratedController, IHydratedParentController } from '@aurelia/runtime-html';
import { ChangeType, GridStateChangeSubscriber, GridStateModel, OrderChangeData } from './grid-state.js';
import { SortOption } from './sorting-options.js';
/**
 * Template controller to render the headers.
 * @internal
 */
export declare class GridHeaders implements ICustomAttributeViewModel, GridStateChangeSubscriber {
    private readonly location;
    readonly $controller: ICustomAttributeController<this>;
    state: GridStateModel;
    private headers;
    private promise;
    /**
     * Key: original column-index; Value: view-index
     */
    private _indexMap;
    get indexMap(): Map<number, number>;
    attaching(initiator: IHydratedController, parent: IHydratedParentController): void | Promise<void>;
    detaching(initiator: IHydratedController, parent: IHydratedParentController): void | Promise<void>;
    dispose(): void;
    handleGridStateChange(type: ChangeType.Width): void;
    handleGridStateChange(type: ChangeType.Order, value: OrderChangeData): void;
    handleGridStateChange(type: ChangeType.Sort, newValue: SortOption<Record<string, unknown>>, oldValue: SortOption<Record<string, unknown>> | null): void;
    private queue;
}
/**
 * Template controller to render the content cells.
 * @internal
 */
export declare class GridContent implements ICustomAttributeViewModel {
    private readonly location;
    item: unknown;
    state: GridStateModel;
    readonly $controller: ICustomAttributeController<this>;
    private cells;
    private promise;
    /**
     * Key: original column-index; Value: view-index
     */
    private _indexMap;
    attaching(initiator: IHydratedController, parent: IHydratedParentController): void | Promise<void>;
    detaching(initiator: IHydratedController, parent: IHydratedParentController): void | Promise<void>;
    dispose(): void;
    private queue;
    handleGridStateChange(type: ChangeType.Width): void;
    handleGridStateChange(type: ChangeType.Order, value: OrderChangeData): void;
    handleGridStateChange(type: ChangeType.Sort, newValue: SortOption<Record<string, unknown>>, oldValue: SortOption<Record<string, unknown>> | null): void;
}
//# sourceMappingURL=template-controllers.d.ts.map