import type { Promisable } from "type-fest";
/**
 * Async iterator with manual resolvers exposed.
 *
 * The Promise.withResolvers counterpart for async iterators.
 */
export interface AsyncIteratorWithResolvers<T, TReturn = unknown, TNext = unknown> extends AsyncIterator<T, TReturn, TNext>, AsyncDisposable {
    /** Indicates the iterator is not closed by return(). */
    readonly active: boolean;
    /** Number of values waiting to be consumed via .push(). */
    readonly backPressure: number;
    /** Number of consumers waiting for values via .next(). */
    readonly frontPressure: number;
    /** Push a value to the iterator. */
    push: (value: T | Promise<T>) => void;
    /** Close the iterator. */
    return(value?: Promisable<TReturn>, 
    /**
     * Drop pending values in the queue, specify false to let the iterator
     * finish gracefully.
     *
     * @default true
     */
    force?: boolean): Promise<IteratorResult<T, TReturn>>;
}
/**
 * Options for async iterator with resolvers.
 */
export interface AsyncIteratorWithResolversOptions {
    readonly dispose?: () => Promisable<void>;
}
/**
 * Create an async iterator for deferred iterator.
 */
export declare const asyncIteratorWithResolvers: <T, TReturn = unknown, TNext = unknown>(options?: AsyncIteratorWithResolversOptions) => AsyncIteratorWithResolvers<T, TReturn, TNext>;
/**
 * Async iterable iterator with manual resolvers exposed.
 */
export interface AsyncIterableWithResolvers<T, TReturn = unknown, TNext = unknown> extends AsyncIteratorWithResolvers<T, TReturn, TNext> {
    [Symbol.asyncIterator](): AsyncIteratorWithResolvers<T, TReturn, TNext>;
}
/**
 * Create an async iterator for deferred iterable.
 *
 * Manually push values to the iterator and closes it when done.
 */
export declare const asyncIterableIteratorWithResolvers: <T, TReturn = unknown, TNext = unknown>(options?: AsyncIteratorWithResolversOptions) => AsyncIterableWithResolvers<T, TReturn, TNext>;
//# sourceMappingURL=asyncIterator.d.ts.map