export declare namespace Op { type Status = "loading" | "error" | "ready"; type Loading = { status: "loading"; }; type Error = { status: "error"; reason: string; }; type Ready = { status: "ready"; payload: X; }; type For = Loading | Error | Ready; type Setter = (op: For) => void; type Payload = O extends Op.Ready ? X : never; const loading: () => For; const error: (reason: string) => For; const ready: (payload: X) => For; const is: Readonly<{ loading: (op: For) => op is Op.Loading; error: (op: For) => op is Op.Error; ready: (op: For) => op is Op.Ready; }>; function payload(op: For): X | undefined; function reason(op: For): string | undefined; type Choices = { loading: () => R; error: (reason: string) => R; ready: (payload: X) => R; }; function select(op: For, choices: Choices): R; function load(set_op: Setter, operation: () => Promise): Promise; function morph(op: For, transmute: (a: A) => B): For; function all[]>(...ops: O): For<{ [K in keyof O]: Payload; }>; }