import { CompleteEvent, ProgressEvent, StreamEventSource } from "./StreamEventSource.cjs";

//#region src/ProgressIterator.d.ts
declare abstract class BaseEventIterator<T extends CompleteEvent | any> implements AsyncIterable<T> {
  protected eventSource: StreamEventSource;
  protected queue: T[];
  protected index: number;
  protected isComplete: boolean;
  protected resolversNext: PromiseWithResolvers<void>;
  constructor(eventSource: StreamEventSource);
  whenComplete(): Promise<T[]>;
  on: (event: "progress", callback: (event: ProgressEvent) => void) => this;
  protected push(event: T): void;
  protected get queueLength(): number;
  [Symbol.asyncIterator](): AsyncIterator<T>;
}
declare class ProgressIterator extends BaseEventIterator<ProgressEvent | CompleteEvent> {
  constructor(eventSource: StreamEventSource);
  private initializeListeners;
}
declare class CompletionIterator extends BaseEventIterator<CompleteEvent | ProgressEvent> {
  private totalSize;
  private currentProgress;
  constructor(eventSource: StreamEventSource);
  private initializeListeners;
  abort(): void;
}
//#endregion
export { CompletionIterator, ProgressIterator };
//# sourceMappingURL=ProgressIterator.d.cts.map