import { Store } from '@ngrx/store';
import { Observable } from 'rxjs';
import { QdTableConnector, QdTableConnectorCriteria, QdTableDataResolutionCriteria, QdTablePaginatorCurrentPage, QdTableState, QdTableStore } from '../model/table-store.interface';
import { QdTableConnectorState } from '../model/connectors-state.enum';
import { QdSortDirection } from '../model/sort-direction.enum';
import { QdTableConfigColumn } from '../model/table-config.interface';
import { QdTableRequestState } from '../model/table-data-resolver';
import { QdTableData, QdTableDataRow, QdTableRecentSecondaryAction, QdTableRowIdentifier } from '../model/table-data.interface';
import { QdTableStoreSelectorService } from './table-store-selector.service';
import { QdTreeData } from '../../tree/model/tree-data.interface';
import * as i0 from "@angular/core";
export declare class QdTableStoreService<T extends string> {
    private readonly store;
    private readonly tableStoreSelectorService;
    tableId: string;
    constructor(store: Store<QdTableStore<T>>, tableStoreSelectorService: QdTableStoreSelectorService);
    init(): void;
    /**
     * Actions
     */
    initTableState(data: QdTableData<T> | QdTreeData<T>, hasResolver: boolean, connectors: QdTableConnector[], hasPagination?: boolean): void;
    initTableStateSelectedRows(selectedRows: QdTableRowIdentifier[]): void;
    updateTableStateData(data: QdTableData<T> | QdTreeData<T>): void;
    updateTableStateRowToSelected(rowIndex: number): void;
    updateTableStateSingleRowToSelected(rowIndex: number): void;
    updateTableStateRowToUnselected(rowIndex: number): void;
    updateTableStateRecentSecondaryAction(action: QdTableRecentSecondaryAction<any> | undefined): void;
    setupPagination(pageSize: number): void;
    setPage(pageIndex: number, pageSize: number, totalCount: number, data: QdTableData<string>): void;
    setPageSize(pageSize: number): void;
    setPageParams(pageIndex: number, pageSize: number, totalCount: number): void;
    setupSort(columns: QdTableConfigColumn<T>[]): void;
    setSort(column: string, direction: QdSortDirection): void;
    updateSort(column: string, direction: QdSortDirection): void;
    setRequestState(requestState: QdTableRequestState): void;
    connect(connectorName: string, connectorState: QdTableConnectorState, connectorCriteria: QdTableConnectorCriteria): void;
    resetConnectorStates(): void;
    deleteTableState(): void;
    /**
     * Selects
     */
    table$(): Observable<QdTableState<string> | undefined>;
    tableDataEntries$(): Observable<QdTableData<any> | QdTreeData<any>>;
    selectedRows$(): Observable<QdTableRowIdentifier[]>;
    isTableRowSelected$(rowIndex: number): Observable<boolean>;
    recentSecondaryAction$(): Observable<QdTableRecentSecondaryAction<T> | undefined>;
    tableRow$(rowIndex: number): Observable<QdTableDataRow<T> | undefined>;
    canPageBackward$(): Observable<boolean>;
    canPageForward$(): Observable<boolean>;
    pageInfo$(): Observable<QdTablePaginatorCurrentPage | undefined>;
    pageSize$(): Observable<number>;
    totalCount$(): Observable<number>;
    pageChangeInfo$(): Observable<{
        pageIndex: number;
        pageSize: number;
        requestState: QdTableRequestState;
    } | undefined>;
    columnSortDirection$(column: string): Observable<QdSortDirection>;
    selectIsLoading$(): Observable<boolean>;
    selectDataResolutionCriteria$(): Observable<QdTableDataResolutionCriteria<T> | undefined>;
    selectConnectorState$(connectorName: string): Observable<QdTableConnectorState>;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdTableStoreService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<QdTableStoreService<any>>;
}
//# sourceMappingURL=table-store.service.d.ts.map