export type HousekeepingErrorCode = | "UNAUTHENTICATED" | "FORBIDDEN" | "VALIDATION" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMITED" | "DEPENDENCY_UNAVAILABLE" | "TIMEOUT" | "INTERNAL"; export interface HousekeepingError { code: HousekeepingErrorCode; messageKey: string; fieldErrors?: Readonly>; } export type HousekeepingResult = | { ok: true; data: T; correlationId: string } | { ok: false; error: HousekeepingError; correlationId: string }; export function ok(data: T, correlationId: string): HousekeepingResult { return { ok: true, data, correlationId }; } export function fail( code: HousekeepingErrorCode, messageKey: string, correlationId: string, fieldErrors?: Readonly>, ): HousekeepingResult { return { ok: false, error: { code, messageKey, ...(fieldErrors === undefined ? {} : { fieldErrors }), }, correlationId, }; } export function mapUnknownError(_error: unknown): HousekeepingError { return { code: "INTERNAL", messageKey: "errors.housekeeping.internal", }; }