import { AsyncResult } from "."; import type { Option, OptionMatch, OptionMatchAsync } from "./option"; /** * A promise that resolves to an `Option`. * * This class is useful for chaining multiple asynchronous operations that return an `Option`. */ export declare class AsyncOption implements PromiseLike> { readonly promise: Promise> | PromiseLike> | AsyncOption; constructor(promise: Promise> | PromiseLike> | AsyncOption); then(successCallback?: (res: Option) => A | PromiseLike, failureCallback?: (reason: unknown) => B | PromiseLike): PromiseLike; catch(rejectionCallback?: (reason: unknown) => B | PromiseLike): PromiseLike; finally(callback: () => void): PromiseLike>; /** * Async version of `Option#match`. */ match(matcher: OptionMatch): Promise; matchAsync(matcher: OptionMatchAsync): Promise; /** * Async version of `Option#value`. */ value(): Promise; /** * Async version of `Option#okOr`. */ okOr(err: E): AsyncResult; /** * Async version of `Option#okOrElse`. */ okOrElse(err: () => E): AsyncResult; /** * Async version of `Option#and`. */ and(other: AsyncOption): AsyncOption; /** * Async version of `Option#andThen`. */ andThen(f: (value: T) => Option): AsyncOption; /** * Async version of `Option#inspect`. */ inspect(f: (value: T) => void): AsyncOption; /** * Async version of `Option#expect`. */ expect(message: string): Promise; /** * Async version of `Option#filter`. */ filter(f: (value: T) => boolean): AsyncOption; /** * Async version of `Option#flatten`. */ flatten(this: AsyncOption>): AsyncOption; /** * Async version of `Option#map`. */ map(f: (value: T) => U): AsyncOption; /** * Async version of `Option#mapOr`. */ mapOr(defaultValue: A, f: (value: T) => B): Promise; /** * Async version of `Option#mapOrElse`. */ mapOrElse(defaultValue: () => A, f: (value: T) => B): Promise; /** * Async version of `Option#or`. */ or(other: AsyncOption): AsyncOption; /** * Async version of `Option#orElse`. */ orElse(f: () => Option): AsyncOption; /** * Async version of `Option#unwrap`. */ unwrap(): Promise; /** * Async version of `Option#unwrapOr`. */ unwrapOr(defaultValue: U): Promise; /** * Async version of `Option#unwrapOrElse`. */ unwrapOrElse(f: () => U): Promise; /** * Async version of `Option#xor`. */ xor(other: AsyncOption): AsyncOption; }