export declare interface ErrorHandlingConfig { verbose: boolean } export declare interface Ok { readonly isOk: true readonly isErr: false readonly value: T readonly _tag: 'Ok' map: (fn: (value: T) => U) => Result mapErr: (_fn: (error: E) => F) => Result andThen: (fn: (value: T) => Result) => Result orElse: (_fn: (error: E) => Result) => Result match: (patterns: { ok: (value: T) => U, err: (error: E) => U }) => U unwrap: () => T unwrapOr: (_defaultValue: T) => T unwrapOrElse: (_fn: (error: E) => T) => T expect: (_msg: string) => T } export declare interface Err { readonly isOk: false readonly isErr: true readonly error: E readonly _tag: 'Err' map: (_fn: (value: T) => U) => Result mapErr: (fn: (error: E) => F) => Result andThen: (_fn: (value: T) => Result) => Result orElse: (fn: (error: E) => Result) => Result match: (patterns: { ok: (value: T) => U, err: (error: E) => U }) => U unwrap: () => never unwrapOr: (defaultValue: T) => T unwrapOrElse: (fn: (error: E) => T) => T expect: (msg: string) => never } // Core Result types inspired by Rust and neverthrow export type Result = Ok | Err; // Async Result type export type ResultAsync = Promise>; // Utility types export type InferOkType = T extends Result ? U : never; export type InferErrType = T extends Result ? E : never; // Combine utility types export type ExtractOkTypes[]> = { [K in keyof T]: T[K] extends Result ? U : never } export type ExtractErrTypes[]> = { [K in keyof T]: T[K] extends Result ? E : never }[number];