import { LoadingState, PageListLoadingState } from '@dereekb/rxjs';
import { type Maybe } from '@dereekb/util';
import { ComponentStore } from '@ngrx/component-store';
import { Observable } from 'rxjs';
import { DbxTableColumn, DbxTableContextData, DbxTableContextDataDelegate, DbxTableItemGroup, DbxTableViewDelegate } from './table';
import * as i0 from "@angular/core";
export interface DbxTableStoreState<I, C, T, G> {
    /**
     * Contextual input that is passed to the data delegate.
     */
    readonly input: Maybe<I>;
    /**
     * Delegate used for retrieving info given the selection.
     */
    readonly dataDelegate: Maybe<DbxTableContextDataDelegate<I, C, T>>;
    /**
     * Delegate used for retrieving view configurations.
     */
    readonly viewDelegate: Maybe<DbxTableViewDelegate<I, C, T, G>>;
}
export declare class DbxTableStore<I = unknown, C = unknown, T = unknown, G = unknown> extends ComponentStore<DbxTableStoreState<I, C, T, G>> {
    constructor();
    readonly loadMore: (observableOrValue?: void | Observable<void> | undefined) => import("rxjs").Subscription;
    readonly input$: Observable<Maybe<I>>;
    readonly dataDelegate$: Observable<Maybe<DbxTableContextDataDelegate<I, C, T>>>;
    readonly currentViewDelegate$: Observable<Maybe<DbxTableViewDelegate<I, C, T, G>>>;
    readonly viewDelegate$: Observable<DbxTableViewDelegate<I, C, T, G>>;
    readonly tableCssClasses$: Observable<import("@dereekb/util").CssClassesArray | undefined>;
    readonly spaceSeparatedTableCssClasses$: Observable<string>;
    readonly dataState$: Observable<LoadingState<DbxTableContextData<I, C, T>>>;
    readonly data$: Observable<DbxTableContextData<I, C, T>>;
    readonly columns$: Observable<DbxTableColumn<C>[]>;
    readonly itemsState$: Observable<PageListLoadingState<T>>;
    readonly items$: Observable<T[]>;
    readonly groupsState$: Observable<LoadingState<DbxTableItemGroup<T, G>[]>>;
    readonly groups$: Observable<DbxTableItemGroup<T, G>[]>;
    readonly setInput: (() => void) | ((observableOrValue: Maybe<I> | Observable<Maybe<I>>) => import("rxjs").Subscription) | (I extends void ? () => void : (observableOrValue: Maybe<I> | Observable<Maybe<I>>) => import("rxjs").Subscription);
    readonly setDataDelegate: (() => void) | ((observableOrValue: Maybe<DbxTableContextDataDelegate<I, C, T>> | Observable<Maybe<DbxTableContextDataDelegate<I, C, T>>>) => import("rxjs").Subscription);
    readonly setViewDelegate: (() => void) | ((observableOrValue: Maybe<DbxTableViewDelegate<I, C, T, G>> | Observable<Maybe<DbxTableViewDelegate<I, C, T, G>>>) => import("rxjs").Subscription);
    static ɵfac: i0.ɵɵFactoryDeclaration<DbxTableStore<any, any, any, any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DbxTableStore<any, any, any, any>>;
}
