declare enum AsyncResultTag {
    Pending = "pending",
    Resolved = "resolved",
    Rejected = "rejected"
}
export declare type Pending = [tag: AsyncResultTag.Pending];
export declare type Rejected<Error> = [tag: AsyncResultTag.Rejected, error: Error];
export declare type Resolved<Value> = [tag: AsyncResultTag.Resolved, value: Value];
export declare type AsyncResult<Value = unknown, Error = unknown> = Pending | Rejected<Error> | Resolved<Value>;
export declare type AsyncResultDependencyList<Value = unknown, Error = unknown> = readonly [tag: AsyncResultTag.Pending, value: null, error: null] | readonly [tag: AsyncResultTag.Rejected, value: null, error: Error] | readonly [tag: AsyncResultTag.Resolved, value: Value, error: null];
declare function isPending(result: AsyncResult<unknown, unknown>): result is Pending;
declare function assertPending(result: AsyncResult<unknown, unknown>, message?: string): asserts result is Pending;
declare function isRejected<Error = unknown>(result: AsyncResult<unknown, Error>): result is Rejected<Error>;
declare function assertRejected<Error = unknown>(result: AsyncResult<unknown, Error>, message?: string): asserts result is Rejected<Error>;
declare function isResolved<Value = unknown>(result: AsyncResult<Value, unknown>): result is Resolved<Value>;
declare function assertResolved<Value = unknown>(result: AsyncResult<Value>, message?: string): asserts result is Resolved<Value>;
declare type Match<IfPending, IfRejected, IfResolved, Value = unknown, Error = unknown> = {
    readonly pending: () => IfPending;
    readonly rejected: (error: Error) => IfRejected;
    readonly resolved: (value: Value) => IfResolved;
};
declare type Join = {
    <V1>(values: readonly [AsyncResult<V1>]): AsyncResult<[V1], AggregateError>;
    <V1, V2>(values: readonly [AsyncResult<V1>, AsyncResult<V2>]): AsyncResult<[
        V1,
        V2
    ], AggregateError>;
    <V1, V2, V3>(values: readonly [AsyncResult<V1>, AsyncResult<V2>, AsyncResult<V3>]): AsyncResult<[V1, V2, V3], AggregateError>;
    <V1, V2, V3, V4>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>
    ]): AsyncResult<[V1, V2, V3, V4], AggregateError>;
    <V1, V2, V3, V4, V5>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>
    ]): AsyncResult<[V1, V2, V3, V4, V5], AggregateError>;
    <V1, V2, V3, V4, V5, V6>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>
    ]): AsyncResult<[V1, V2, V3, V4, V5, V6], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>
    ]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>
    ]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7, V8], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>
    ]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7, V8, V9], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>
    ]): AsyncResult<[V1, V2, V3, V4, V5, V6, V7, V8, V9, V10], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>,
        AsyncResult<V14>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13,
        V14
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>,
        AsyncResult<V14>,
        AsyncResult<V15>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13,
        V14,
        V15
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>,
        AsyncResult<V14>,
        AsyncResult<V15>,
        AsyncResult<V16>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13,
        V14,
        V15,
        V16
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>,
        AsyncResult<V14>,
        AsyncResult<V15>,
        AsyncResult<V16>,
        AsyncResult<V17>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13,
        V14,
        V15,
        V16,
        V17
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>,
        AsyncResult<V14>,
        AsyncResult<V15>,
        AsyncResult<V16>,
        AsyncResult<V17>,
        AsyncResult<V18>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13,
        V14,
        V15,
        V16,
        V17,
        V18
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>,
        AsyncResult<V14>,
        AsyncResult<V15>,
        AsyncResult<V16>,
        AsyncResult<V17>,
        AsyncResult<V18>,
        AsyncResult<V19>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13,
        V14,
        V15,
        V16,
        V17,
        V18,
        V19
    ], AggregateError>;
    <V1, V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20>(values: readonly [
        AsyncResult<V1>,
        AsyncResult<V2>,
        AsyncResult<V3>,
        AsyncResult<V4>,
        AsyncResult<V5>,
        AsyncResult<V6>,
        AsyncResult<V7>,
        AsyncResult<V8>,
        AsyncResult<V9>,
        AsyncResult<V10>,
        AsyncResult<V11>,
        AsyncResult<V12>,
        AsyncResult<V13>,
        AsyncResult<V14>,
        AsyncResult<V15>,
        AsyncResult<V16>,
        AsyncResult<V17>,
        AsyncResult<V18>,
        AsyncResult<V19>,
        AsyncResult<V20>
    ]): AsyncResult<[
        V1,
        V2,
        V3,
        V4,
        V5,
        V6,
        V7,
        V8,
        V9,
        V10,
        V11,
        V12,
        V13,
        V14,
        V15,
        V16,
        V17,
        V18,
        V19,
        V20
    ], AggregateError>;
    <V>(values: readonly AsyncResult<V>[]): AsyncResult<V[], AggregateError>;
};
export declare const AsyncResult: {
    Tag: typeof AsyncResultTag;
    is: {
        pending: typeof isPending;
        rejected: typeof isRejected;
        resolved: typeof isResolved;
    };
    assert: {
        pending: typeof assertPending;
        rejected: typeof assertRejected;
        resolved: typeof assertResolved;
    };
    of: {
        pending: () => Pending & AsyncResult<never, never>;
        rejected: <Error_1 = unknown>(error: Error_1) => Rejected<Error_1>;
        resolved: <Value = unknown>(value: Value) => Resolved<Value>;
    };
    to: {
        resolvedValue: <Value_1 = unknown>(resolved: Resolved<Value_1>) => Value_1;
        rejectedError: <Error_2 = unknown>(rejected: Rejected<Error_2>) => Error_2;
        dependencyList: <Value_2 = unknown, Error_3 = unknown>(result: AsyncResult<Value_2, Error_3>) => AsyncResultDependencyList<Value_2, Error_3>;
    };
    match: <IfPending, IfRejected, IfResolved, Value_3 = unknown, Error_4 = unknown>(result: AsyncResult<Value_3, Error_4>, match: Match<IfPending, IfRejected, IfResolved, Value_3, Error_4>) => IfPending | IfRejected | IfResolved;
    join: Join;
    pipe: <T, U>(result: AsyncResult<T, unknown>, fn: (value: T) => U) => AsyncResult<U, unknown>;
    catch: <T_1, E, S>(result: AsyncResult<T_1, E>, fn: (error: E) => S) => AsyncResult<T_1 | S, unknown>;
};
export {};
