import type { QueryBuilder } from './query-builder.js'; export declare abstract class Iterator, TQueryBuilder extends QueryBuilder> { protected readonly _items: T[]; protected readonly _fetchNextPage: () => Promise; protected readonly _fetchPrevPage: () => Promise; protected readonly _originQuery: TQueryBuilder; protected readonly _limit: number; protected constructor({ items, originQuery, fetchNextPage, fetchPrevPage, limit, }: { items: T[]; originQuery: TQueryBuilder; fetchNextPage: () => Promise; fetchPrevPage: () => Promise; limit: number; }); abstract hasNext(): boolean; abstract hasPrev(): boolean; get items(): T[]; get length(): number; get pageSize(): number; get query(): TQueryBuilder; next(): Promise; prev(): Promise; } export declare class CursorBasedIterator extends Iterator, QueryBuilder> { private readonly _nextCursor?; private readonly _prevCursor?; readonly cursors: { next?: string | null; prev?: string | null; }; constructor({ items, originQuery, fetchNextPage, fetchPrevPage, limit, nextCursor, prevCursor, }: { items: T[]; originQuery: QueryBuilder; fetchNextPage: () => Promise>; fetchPrevPage: () => Promise>; limit: number; nextCursor?: string | null; prevCursor?: string | null; }); hasNext(): boolean; hasPrev(): boolean; } export declare class OffsetBasedIterator extends Iterator, QueryBuilder> { private _totalCount; private _offset; private _tooManyToCount; constructor({ items, fetchNextPage, fetchPrevPage, offset, originQuery, limit, totalCount, tooManyToCount, }: { items: T[]; fetchNextPage: () => Promise>; fetchPrevPage: () => Promise>; offset: number; originQuery: QueryBuilder; limit: number; totalCount?: number | null; tooManyToCount?: boolean | null; }); get currentPage(): number | undefined; get totalPages(): number | undefined; get totalCount(): number | undefined; hasNext(): boolean; hasPrev(): boolean; }