import { DataSource } from '@angular/cdk/collections'; import { Observable } from 'rxjs'; interface SimpleDataSource extends DataSource { connect(): Observable; disconnect(): void; } interface Sort { property: keyof T; order: 'asc' | 'desc'; } interface PageRequest { page: number; size: number; sort?: Sort; } interface Page { content: T[]; totalElements: number; size: number; number: number; } type PaginationEndpoint = (pageable: PageRequest, query: Q) => Observable>; type UpdateFn = (last: T) => T; declare class PaginationDataSource> implements SimpleDataSource { private endpoint; pageSize: number; initialPage: number; loading$: Observable; page$: Observable>; private readonly pageNumber; private readonly sort; private readonly query; private readonly loading; constructor(endpoint: PaginationEndpoint, initialSort: Sort, initialQuery: Q, pageSize?: number, initialPage?: number); sortBy(sortUpdate: Partial> | UpdateFn>): void; queryBy(queryUpdate: Partial | UpdateFn): void; fetch(page: number, pageSize?: number): void; connect(): Observable; disconnect(): void; } export { PaginationDataSource }; export type { Page, PageRequest, PaginationEndpoint, SimpleDataSource, Sort, UpdateFn };