import type { PagedResponseLinks } from "../Links";
export interface Collection<TEntity> {
    values: Array<TEntity>;
    _links: PagedResponseLinks;
}
export interface EntityCollectionPage<TEntity> {
    /** Current page entities. */
    entities: TEntity[];
    /** Function to retrieve the next page of the entities. If `undefined` the current page is last. */
    next?: () => Promise<EntityCollectionPage<TEntity>>;
}
export type EntityPageQueryFunc<TEntity> = () => Promise<EntityCollectionPage<TEntity>>;
export declare function flatten<TEntity>(pagedIterator: AsyncIterableIterator<TEntity[]>): AsyncIterableIterator<TEntity>;
export declare function getEntityCollectionPage<TEntity>(nextUrl: string, getNextBatch: (url: string) => Promise<Collection<TEntity>>): Promise<EntityCollectionPage<TEntity>>;
/**
 * Loads all entities from an iterator into an array.
 * @param {AsyncIterableIterator<TEntity>} iterator entity iterator.
 * @returns {Promise<TEntity[]>} entity array.
 */
export declare function toArray<TEntity>(iterator: AsyncIterableIterator<TEntity>): Promise<TEntity[]>;
//# sourceMappingURL=IteratorUtil.d.ts.map