export interface Ok { readonly ok: T; } export interface Err { readonly err: E; } export type Result = Ok | Err; export declare function ok(t: T): Ok; export declare function err(error: E): Err; export declare function isOk(r: Result): r is Ok; export declare function isErr(r: Result): r is Err; export type OptionalKeys = Exclude<{ [P in keyof T]: undefined extends T[P] ? P : never; }[keyof T], undefined>; export type RequiredKeys = Exclude<{ [P in keyof T]: undefined extends T[P] ? never : P; }[keyof T], undefined>; export type RequireFields = { [K in RequiredKeys]: T[K]; } & { [K in OptionalKeys]-?: T[K] | undefined; };