import { Effect } from "effect" import { JsonifiableObject } from "type-fest/source/jsonifiable" import { z } from "zod" import { SchemableClass } from ".." import { Class, ClassType } from "../../util" export type JsonifiableSchemableClass< SchemaT extends z.ZodRawShape, SchemaUnknownKeys extends z.UnknownKeysParam, SchemaCatchall extends z.ZodTypeAny, Values extends {}, DefaultValues extends Partial, JsonifySchemaT extends z.ZodRawShape, JsonifySchemaUnknownKeys extends z.UnknownKeysParam, JsonifySchemaCatchall extends z.ZodTypeAny, DejsonifySchemaT extends z.ZodRawShape, DejsonifySchemaUnknownKeys extends z.UnknownKeysParam, DejsonifySchemaCatchall extends z.ZodTypeAny, JsonifiedValues extends JsonifiableObject, Type extends ClassType = "AbstractClass" > = ( SchemableClass< SchemaT, SchemaUnknownKeys, SchemaCatchall, Values, DefaultValues, Type > & Class< Type, { readonly jsonifySchema: z.ZodObject< JsonifySchemaT, JsonifySchemaUnknownKeys, JsonifySchemaCatchall, JsonifiedValues, Values > readonly dejsonifySchema: z.ZodObject< DejsonifySchemaT, DejsonifySchemaUnknownKeys, DejsonifySchemaCatchall, Values, JsonifiedValues > jsonify(): JsonifiedValues jsonifyPromise(): Promise jsonifyEffect(): Effect.Effect, JsonifiedValues> }, any[] > & { readonly jsonifySchema: z.ZodObject< JsonifySchemaT, JsonifySchemaUnknownKeys, JsonifySchemaCatchall, JsonifiedValues, Values > readonly dejsonifySchema: z.ZodObject< DejsonifySchemaT, DejsonifySchemaUnknownKeys, DejsonifySchemaCatchall, Values, JsonifiedValues > } )