import type { LoggerContext } from './Logger.js'; export declare const ErrorType: { /** Corresponds to 400 Bad Request */ readonly BadRequest: "BadRequest"; /** Corresponds to 409 Conflict */ readonly Conflict: "Conflict"; /** Corresponds to 401 Unauthenticated */ readonly NotAuthenticated: "NotAuthenticated"; /** Corresponds to 403 Forbidden */ readonly NotAuthorized: "NotAuthorized"; /** Corresponds to 404 Not Found */ readonly NotFound: "NotFound"; readonly Generic: "Generic"; }; export type ErrorType = (typeof ErrorType)[keyof typeof ErrorType]; export type Result = OkResult | ErrorResult; export type PromiseResult = Promise>; export type OkFromResult = Awaited extends Result ? TOk : never; export type ErrorFromResult = Awaited extends Result ? TError : never; export declare class OkResult { readonly value: TOk; constructor(value: TOk); isOk(): this is OkResult; isError(): this is ErrorResult; toError(): Error; throwIfError(): void; valueOrThrow(): TOk; map(mapper: (value: TOk) => TNewOk): Result; } export declare class ErrorResult { readonly error: TError; readonly message: string; constructor(error: TError, message: string); isOk(): this is OkResult; isError(): this is ErrorResult; toError(): Error; throwIfError(): never; valueOrThrow(): never; isErrorType(errorType: TSubError): this is ErrorResult; get httpStatus(): 400 | 401 | 403 | 404 | 409 | 500; } export declare class ErrorResultError extends Error { errorType: ErrorType; errorMessage: string; constructor(result: ErrorResult); } export declare function createErrorResult(error: TError, message: string): ErrorResult; export declare function createErrorResultFromError(context: LoggerContext, error: ErrorResultError | unknown, expectedErrorTypes?: TError[] | null): ErrorResult; export declare function ok(value: TOk): OkResult; export declare const notOk: { fromHttpStatus: (status: number, message: string) => ErrorResult; BadRequest: (message: string) => ErrorResult; Conflict: (message: string) => ErrorResult; Generic: (message: string) => ErrorResult; GenericUnexpectedError: (result: ErrorResult) => ErrorResult; GenericUnexpectedException: (context: LoggerContext, error: unknown) => ErrorResult; NotAuthenticated: (message: string) => ErrorResult; NotAuthorized: (message: string) => ErrorResult; NotFound: (message: string) => ErrorResult; }; export declare function assertOkResult(actual: Result): asserts actual is OkResult; export declare function assertErrorResultType(actual: Result, expectedErrorType: ErrorType): asserts actual is ErrorResult;