export interface PromiseResolution { status: "fulfilled"; value: T; } export interface PromiseRejection { status: "rejected"; reason: E; } export type PromiseResult = PromiseResolution | PromiseRejection; export type PromiseTuple = { [P in keyof T]: Promise }; export type PromiseResultTuple = { [P in keyof T]: PromiseResult };