import { IEnhancements } from "./ienhancement"; import { Constructor, IteratorValue } from "./types"; export declare namespace Async { /** * Given a class that implements `Iterable`, this returns a class that implements {@link IEnhancements}, allowing one to treat it as if * it were an array, in supporting methods such as {@link IEnhancements.map | .map()} and {@link IEnhancements.filter | .filter()}. * * Usage: * * ```typescript * class MyAsyncIterable implements AsyncIterable { * async *[Symbol.Asynciterator]() { * yield 1; * yield 2; * yield 3; * } * } * * class MyEnhancedAsyncIterable extends Async.Mixin(MyAsyncIterable) { * constructor() { * super(); * } * } * const foo = new MyEnhancedAsyncIterable(); * await foo.map(i => i * 2).asArray(); // => [2, 4, 6] * await foo.map(i => i + 2).asArray(); // => [3, 4, 5] * ``` * @param Base a constructor for a class that implements `AsyncIterable`. * @returns a new constructor for an enhanced class. */ function Mixin>, P extends ConstructorParameters, I extends InstanceType, T extends IteratorValue, TReturn = any, TNext = undefined>(Base: B): Constructor, P>; } //# sourceMappingURL=async-mixin.d.ts.map