/// <reference types="node" />
/// <reference types="node" />
import tty from 'node:tty';
import { ITqdmAsyncIteratorContainer, ITqdmSyncIteratorContainer, TqdmItem } from './base-types';
export type TqdmInnerIterator<TItem> = Iterator<TItem> | AsyncIterator<TItem>;
export type TqdmIteratorResultSync<TInput> = TInput extends Iterable<unknown> ? IteratorResult<TqdmItem<TInput>> : TInput extends Iterator<unknown> ? IteratorResult<TqdmItem<TInput>> : TInput extends number ? IteratorResult<TqdmItem<TInput>> : never;
export type TqdmIteratorResultAsync<TInput> = TInput extends AsyncIterable<unknown> ? Promise<IteratorResult<TqdmItem<TInput>>> : TInput extends AsyncIterator<unknown> ? Promise<IteratorResult<TqdmItem<TInput>>> : never;
export declare class TqdmNumericIterator implements Iterator<number> {
    private readonly num;
    private cnt;
    constructor(num: number);
    next(): IteratorResult<number, undefined>;
}
export declare class TqdmSyncResultIterator<TItem> implements Iterator<TItem> {
    private readonly container;
    constructor(container: ITqdmSyncIteratorContainer<TItem>);
    next(): IteratorResult<TItem>;
}
export type TqdmSyncResultIteratorReturn<TInput> = TInput extends Iterable<unknown> ? TqdmSyncResultIterator<TqdmItem<TInput>> : TInput extends Iterator<unknown> ? TqdmSyncResultIterator<TqdmItem<TInput>> : TInput extends number ? TqdmSyncResultIterator<TqdmItem<TInput>> : never;
export declare class TqdmAsyncResultIterator<TItem> implements AsyncIterator<TItem> {
    private readonly container;
    constructor(container: ITqdmAsyncIteratorContainer<TItem>);
    next(): Promise<IteratorResult<TItem>>;
}
export type TqdmAsyncResultIteratorReturn<TInput> = TInput extends AsyncIterable<unknown> ? TqdmAsyncResultIterator<TqdmItem<TInput>> : TInput extends AsyncIterator<unknown> ? TqdmAsyncResultIterator<TqdmItem<TInput>> : never;
export declare class TqdmWriteStream {
    private readonly stream;
    readonly resetLine: () => void;
    private readonly streamIsTty;
    constructor(stream: NodeJS.WritableStream | tty.WriteStream, forceTerminal?: boolean);
    get isTty(): boolean;
    get columns(): number;
    write(chunk: string): void;
    finalize(): void;
    clearScreen(): void;
    private onTerminalResize;
    private getStreamAsTty;
    private ttyResetLine;
    private forceTerminalResetLine;
    private generalResetLine;
}
