import { Signal } from '@angular/core';
import { Observable } from 'rxjs';
import { DsfrSortColumn, DsfrTableOptions, DsfrTableState } from '../table.model';
import * as i0 from "@angular/core";
/**
 * Service pour la datatable
 * Gestion du rafraichissement des données
 */
export declare class DsfrDataTableService {
    /** @internal Etat du tableau (tri, page courante, page size) */
    readonly tableState: Signal<DsfrTableState>;
    /** Page courante */
    private readonly _currentPage;
    /** Tri courant */
    private readonly _activeSort;
    readonly activeSort: Signal<DsfrSortColumn | null>;
    /** Nombre de lignes à afficher par page */
    private readonly _rowsPerPage;
    readonly rowsPerPage: Signal<number>;
    /** Données de la table */
    private readonly _dataSubject;
    readonly data$: Observable<any[]>;
    /** Options de la table */
    private readonly _tableOptionsSubject;
    readonly tableOptions$: Observable<DsfrTableOptions>;
    /** Lignes sélectionnées */
    private readonly _selectionSubject;
    readonly selection$: Observable<any[]>;
    constructor();
    /**
     * Mise à jour des données avec rafraichissement du tableau
     * @param newData nouvelles données du tableau
     * @returns void
     */
    refreshData(newData: any[]): void;
    /**
     * Aller à une page donnée
     * @param page
     */
    goToPage(page: number): void;
    updatePagination(rowsPerPage: number): void;
    /**
     * Trier la table
     * @param sort DsfrSortColumn
     */
    sortTable(sort: DsfrSortColumn): void;
    /**
     * Mise à jour de l'état d'affichage de la table (tri, page courante, nombre de lignes par page)
     * @param state
     */
    setState(state: DsfrTableState): void;
    /**
     * Met à jour une propriété spécifique de l'objet `tableOptions`.
     * @param key Le nom de la propriété de l'interface `tableOptions` à mettre à jour.
     * @param newValue La nouvelle valeur de la propriété spécifiée par `key`
     * @returns void
     */
    updateTableOptions(key: keyof DsfrTableOptions, newValue: any): void;
    /**
     * Sélectionner les lignes programmatiquement
     * @param selectedRows la liste des identifiants des lignes qui seront sélectionnées
     **/
    setSelectedRows(selectedRows: any[]): void;
    /** @internal */
    setTableOptions(tableOptions: DsfrTableOptions): void;
    private setData;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDataTableService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DsfrDataTableService>;
}
