import { BehaviorSubject, Observable } from 'rxjs';
import * as i0 from "@angular/core";
/**
 * Service to manage the selection state of rows in a table.
 * Allows tracking of selected rows and managing selection for individual and multiple rows.
 */
export declare class EuiTableV2SelectableRowService<DATA> {
    /**
     * BehaviorSubject containing the selected rows.
     */
    selectedRows$: BehaviorSubject<DATA[]>;
    /**
     * BehaviorSubject containing the state of whether all rows are selected.
     */
    isAllRowsSelected$: BehaviorSubject<boolean>;
    private lastSelectedRow;
    private rows;
    private propId;
    /**
     * Observable stream of selected rows.
     */
    get selectedRows(): Observable<DATA[]>;
    /**
     * Observable stream of whether all rows are selected.
     */
    get isAllRowsSelected(): Observable<boolean>;
    /**
     * Sets the property name used to identify rows as unique.
     */
    setPropId(value: string): void;
    /**
     * Gets the current property name used to identify rows.
     */
    getPropId(): string;
    /**
     * Registers a row as selectable.
     *
     * @param row Row to register.
     */
    registerRow(row: DATA): void;
    /**
     * Registers a set of rows as selectable.
     *
     * @param rows Set of rows to register.
     */
    registerRows(rows: DATA[]): void;
    /**
     * Unregisters a row as selectable.
     *
     * @param row Row to unregister.
     */
    unregisterRow(row: DATA): void;
    /**
     * Unregisters all rows.
     */
    unregisterRows(): void;
    /**
     * Selects a row.
     *
     * @param row Row to select.
     */
    selectRow(row: DATA): void;
    /**
     * Selects a single row and replace existing one in selectedRows array.
     *
     * @param row Row to select.
     */
    selectSingleRow(row: DATA): void;
    /**
     * Unselects a row.
     *
     * @param row Row to unselect.
     */
    unselectRow(row: DATA): void;
    /**
     * Selects a set of rows.
     *
     * @param rows Rows to select.
     */
    selectRows(rows: DATA[]): void;
    /**
     * Select all rows.
     */
    selectAllRows(): void;
    /**
     * Unselect all rows.
     */
    unselectAllRows(): void;
    /**
     * Gets the list of registered rows.
     *
     * @returns The list of registered rows.
     */
    getRows(): DATA[];
    /**
     * Gets the last selected row.
     *
     * @returns The last selected row.
     */
    getLastSelectedRow(): DATA;
    static ɵfac: i0.ɵɵFactoryDeclaration<EuiTableV2SelectableRowService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<EuiTableV2SelectableRowService<any>>;
}
//# sourceMappingURL=eui-table-v2-selectable-row.service.d.ts.map