import { Provider } from '@nestjs/common';
type ParamsInput<R> = R extends (...arg: infer P) => any ? P : never;
type ParamsReturn<R> = R extends (...arg: any) => infer P ? P extends Promise<infer T> ? T extends [infer K, ...any] ? K : T : P : never;
export type IterateFactory<R extends (...arg: any) => any = (...arg: any) => any> = {
    createIterator: (iterateObject: ParamsInput<R>, callback: R) => {
        [Symbol.asyncIterator](): GeneralAsyncIterator<R, ParamsInput<R>, ParamsReturn<R>>;
    };
};
declare class GeneralAsyncIterator<R extends (...arg: any[]) => any, T = ParamsInput<R>, TReturn = ParamsReturn<R>> implements AsyncIterator<T, TReturn> {
    private iterateObject;
    private callback;
    private counter;
    private maxLimit;
    constructor(iterateObject: T[], callback: R);
    next(): Promise<IteratorResult<T, TReturn>>;
}
export declare const AsyncIterate: Provider<IterateFactory>;
export {};
