import { Observable } from 'rxjs';
import { QdFilterPostBodyData } from '../../filter/filter.module';
import { QdSearchPostBodyData } from '../../search/search.module';
import { QdTableData } from './table-data.interface';
import { QdTableStateSort } from './table-store.interface';
/**
 * Represents the resolved data for a query.
 *
 * @template T - The type representing column names.
 */
export interface QdTableResolvedData<T extends string> {
    /**
     * The current page's data object.
     */
    data: QdTableData<T>;
    /**
     * Index of the current page. This corresponds to the 'page' parameter in Pageable.
     */
    page: number;
    /**
     * The number of items per page as specified by Spring Boot's Pageable API.
     * This aligns with the 'size' parameter in Pageable.
     */
    size: number;
    /**
     * The total count of items across all pages.
     */
    totalElements: number;
}
/**
 * Represents the properties for resolving data, following the conventions of Spring Boot's Pageable API.
 *
 * @template T - The type representing column names.
 */
export interface QdTableDataResolverProps<T extends string> {
    /**
     * The index of the page to resolve. Corresponds to the 'page' parameter in Pageable.
     */
    page?: number;
    /**
     * The number of items per page. Corresponds to the 'size' parameter in Pageable.
     */
    size?: number;
    /**
     * The Sort object. To obtain the query string compliant with Spring Boot's conventions, use the helper method "QdTableSpringTools.sortParameterize".
     */
    sort?: QdTableStateSort<T>[];
    /**
     * The filter data if your table is connected to a filter.
     */
    filter?: QdFilterPostBodyData;
    /**
     * The search data if your table is connected to a search.
     */
    search?: QdSearchPostBodyData;
}
/**
 * Represents a data resolver for querying table data.
 *
 * @template T - The type representing column names.
 */
export interface QdTableDataResolver<T extends string> {
    /**
     * Resolves the data based on the specified resolver properties.
     */
    resolve(props: QdTableDataResolverProps<T>): Observable<QdTableResolvedData<T>>;
}
/**
 * Represents the request state for a table using QdTableDataResolver.
 * Additional states can be added as needed.
 */
export declare enum QdTableRequestState {
    PENDING = 0,
    SUCCESS = 1
}
//# sourceMappingURL=table-data-resolver.d.ts.map