import { CamelCase } from "type-fest"; import { ZodRawShape } from "zod/lib/types"; import { ZodDiscriminatedUnion, ZodLiteral, ZodObject } from "zod"; import { EntityCore, EntityCoreShape, EntityCoreShapeType, Extender, UnsafeZentity, Zentity, ZodShapeType } from "./zentity"; type ExtractType = T extends { [K in D]: infer V; } ? { [K in keyof T]: K extends D ? V : T[K]; } : never; type ShapeRecord = Record; type KeyedExtender, R extends object> = { [K in keyof KS]?: Extender; }; type Flatten, D extends string> = ValueUnion<{ [K in keyof O]: ZodShapeType & { [Q in D]: K; }; }>; type CC

= CamelCase<`${P}-${K}`>; type Clean = T extends undefined ? {} : T; type OShape, K extends keyof O> = O[K] & Clean; type OType, K extends keyof O> = ZodShapeType>; type ReturnType = E extends (arg: any) => infer R ? R : {}; type ToZodD, D extends string> = ZodObject; }; }> & BS & EntityCoreShapeType>; type ZentityNewFn, D extends string, KSE extends KeyedExtender, TD extends TransitionDef> = { [key in (keyof KS & string) as CC<`new`, key>]: (params: OType & { id: string; }) => Full; }; type ZentityCreateFn, D extends string, KSE extends KeyedExtender, TD extends TransitionDef> = { [key in (keyof KS & string) as CC<`create`, key>]: (params: OType & EntityCore) => Full; }; type ZentityUnsafeFn, D extends string, KSE extends KeyedExtender, TD extends TransitionDef> = { [key in (keyof KS & string) as CC<`unsafe`, key>]: (params: OType & EntityCore) => UnsafeFull; }; type ZentityGuardFn, D extends string, KSE extends KeyedExtender, TD extends TransitionDef> = { [key in (keyof KS & string) as CC<'is', key>]: (data: any) => data is Full; }; type ZentityShape, D extends string> = { [key in (keyof KS & string) as CC]: OShape & { [K in D]: ZodLiteral; } & typeof EntityCoreShape; }; type ZentitySchema, D extends string> = { [key in (keyof KS & string) as CC]: ZodObject & { [K in D]: ZodLiteral; } & typeof EntityCoreShape>; }; type Full, D extends string, KE extends KeyedExtender, TD extends TransitionDef, key extends keyof KS> = Zentity<{ [Q in D]: key; } & OType, ReturnType & Transition>; type UnsafeFull, D extends string, KE extends KeyedExtender, TD extends TransitionDef, key extends keyof KS> = UnsafeZentity<{ [Q in D]: key; } & OType, ReturnType & Transition>; type DiscriminatedZentityClass, D extends string, KE extends KeyedExtender, TD extends TransitionDef> = { create: >(params: T & EntityCore & ZodShapeType) => Zentity & ExtractType, ReturnType & Transition>; new: >(params: T & ZodShapeType & { id: string; }) => Zentity, ReturnType & Transition>; unsafe: >(params: T & ZodShapeType) => UnsafeZentity, ReturnType & Transition>; baseShape: BS & typeof EntityCoreShape; schema: ZodDiscriminatedUnion, ...ToZodD[]]>; } & ZentityNewFn & ZentityCreateFn & ZentityUnsafeFn & ZentityGuardFn & ZentitySchema & ZentityShape; type ValueUnion = Required; type TransitionDef> = { [key in keyof KS]: (keyof Omit)[]; }; type ExclusiveToB = { [K in keyof B as K extends keyof A ? never : K]: B[K]; }; type Transition, KE extends KeyedExtender, TD extends TransitionDef, K extends keyof KS> = { [key in (TD[K][number] & string) as CC<`to`, key>]: (param: ExclusiveToB, ZodShapeType>) => Zentity, ReturnType & Transition>; }; export declare function statefulEntity, D extends string, KSE extends KeyedExtender, T extends TransitionDef>(options: { discriminator: D; base: BS; states: KS; extend: KSE; transitions: T; }): DiscriminatedZentityClass; type UnionOfStateShapeTypesWithDiscriminator, D extends string> = ValueUnion<{ [key in keyof KS]: ZodShapeType & { [Q in D]: key; }; }>; export type inferStatefulZentityTypeFromClass = T extends DiscriminatedZentityClass ? Zentity & Clean, ReturnType & Transition> : never; export {}; //# sourceMappingURL=stateful-zentity.d.ts.map