import { type AnyZodObject, type ZodObject, type ZodTypeAny } from 'zod'; import type { AddPropertySchemaToZodObjectOrArrayOfObjects } from '../schema-tools/zod-merge.js'; import type { AdditionalChildPropertiesMap, AdditionalPropertiesKey, AdditionalPropertiesMap } from './additional-properties.js'; type BaseEntitySchemaShape = Readonly>; type BaseEntitySchema = ZodObject; type StringKeyOf = string & keyof T; type EnsureTopLevelAdditionalPropertyExist> = undefined extends Current['shape'][TopLevelKey] ? AddPropertySchemaToZodObjectOrArrayOfObjects : Current; type AddNestedPropertyToBaseSchema, TopLevelKey extends StringKeyOf, ChildKey extends StringKeyOf> = AddPropertySchemaToZodObjectOrArrayOfObjects, TopLevelKey, AddPropertySchemaToZodObjectOrArrayOfObjects['shape'][TopLevelKey], ChildKey, AdditionalChildSchemas[TopLevelKey][ChildKey]>>; type AddSingleAdditionalDirectOrNestedProperty, Key> = Key extends StringKeyOf ? EnsureTopLevelAdditionalPropertyExist : Key extends `${infer TopLevelKey}.${infer ChildKey}` ? AddNestedPropertyToBaseSchema : never; export type EntitySchemaWithAdditionalKeys, AdditionalKeys extends readonly AdditionalPropertiesKey[]> = AdditionalKeys extends readonly [infer FirstKey, ...infer RemainingKeys] ? [] extends RemainingKeys ? AddSingleAdditionalDirectOrNestedProperty : RemainingKeys extends readonly AdditionalPropertiesKey[] ? EntitySchemaWithAdditionalKeys, AdditionalSchemas, AdditionalChildSchemas, RemainingKeys> : never : Current; export declare function buildEntitySchemaForKeys, AdditionalKeys extends readonly AdditionalPropertiesKey[]>(baseSchema: BaseSchema, additionalSchemas: AdditionalSchemas, additionalChildSchemas: AdditionalChildSchemas, additionalKeys: AdditionalKeys): EntitySchemaWithAdditionalKeys; export type { AdditionalPropertiesKey } from './additional-properties.js'; //# sourceMappingURL=entity.d.ts.map