import { DomainError$1 as DomainError, ValidationError$1 as ValidationError } from "./base.errors-DyC_RLkA.js"; import { Result } from "@carbonteq/fp"; import z, { ZodEnum, ZodError } from "zod"; //#region src/domain/refined.types.d.ts type Extensions = { create: (data: unknown) => Result, Err>; $infer: Schema["_output"] & z.BRAND; $inferPrimitive: Schema["_output"]; primitive(branded: Schema["_output"] & z.BRAND): Schema["_output"]; }; type ZodBrandedWithFactory = z.ZodBranded & Extensions; declare function createRefinedType(_tag: Tag, schema: Schema): ZodBrandedWithFactory; declare function createRefinedType(_tag: Tag, schema: Schema, errTransformer: (data: Schema["_input"], err: z.ZodError) => Err): ZodBrandedWithFactory; type Unbrand = T extends z.ZodType ? U : T; declare class InvalidUUID extends ValidationError { constructor(data: unknown); } declare class InvalidEmail extends ValidationError { constructor(data: unknown); } type TEmail = ZodBrandedWithFactory; declare const Email: TEmail; type Email = typeof Email.$infer; type TUUIDSchema = z.ZodString; type TUUIDInner = ZodBrandedWithFactory; declare const UUIDInner: TUUIDInner; type UUID = typeof UUIDInner.$infer; type TUUID = TUUIDInner & { init: () => UUID; fromTrusted: (s: string) => UUID; }; declare const UUID: TUUID; declare class InvalidDateTime extends ValidationError { constructor(data: unknown); } type TDTInnerSchema = z.ZodPipeline, z.ZodDate>; type TDTInner = ZodBrandedWithFactory; declare const DTInner: TDTInner; type DateTime = typeof DTInner.$infer; type TDateTime = TDTInner & { now: () => DateTime; from: (d: Date | DateTime) => DateTime; }; declare const DateTime: TDateTime; declare class EnumValidationError extends ValidationError { readonly tag: string | symbol; readonly data: unknown; readonly err: ZodError; constructor(tag: string | symbol, msg: string, data: unknown, err: ZodError); } type EnumTypeUtil = ZodBrandedWithFactory>, Tag, EnumValidationError> & { from: (v: T[number]) => z.Writeable[number] & z.BRAND; values: Readonly; eq: (a: T[number] | (T[number] & z.BRAND), b: T[number] | (T[number] & z.BRAND)) => boolean; }; declare const createEnumType: (tag: Tag, enumValues: T) => EnumTypeUtil; type MatchActions = { [K in T]: () => R }; declare function matchEnum, Tag, EnumValidationError>, Actions extends MatchActions>(value: EnumType["$infer"], _enumType: EnumType, actions: Actions): ReturnType; //#endregion export { DateTime as DateTime$1, Email as Email$1, EnumValidationError as EnumValidationError$1, InvalidDateTime as InvalidDateTime$1, InvalidEmail as InvalidEmail$1, InvalidUUID as InvalidUUID$1, UUID as UUID$1, Unbrand, createEnumType as createEnumType$1, createRefinedType as createRefinedType$1, matchEnum as matchEnum$1 }; //# sourceMappingURL=refined.types-Y15bJPl9.d.ts.map