import type { Prettify } from "#utilities"; import type { Model, ModelOptions, ModelGroup, ModelGroupImpl, _isNestedGroup_, _validator_, filterActions } from "#composables"; export type ModelGroupFields = { [key: string]: ModelSpec | ModelGroupSpec; }; export type ModelSpec = ModelOptions & { value: T; formLabel?: string; }; export type ModelGroupSpec = T & { readonly [_isNestedGroup_]: true; readonly [_validator_]: ModelGroupValidator; }; type ModelGroupPath = Prettify<{ [K in keyof F]: F[K] extends ModelSpec ? K : F[K] extends ModelGroupSpec ? `${string & K}.${string & ModelGroupPath}` : never; }[keyof F]>; export type ModelGroupValidator = (payload: ModelGroupPayload, error: (path: ModelGroupPath, msg: string) => void) => void; export type ModelGroupPayload = { [K in keyof F]: F[K] extends ModelSpec ? T : F[K] extends ModelGroupSpec ? ModelGroupPayload : unknown; }; export type ExtractModelGroupPayload = T extends ModelGroupImpl ? ModelGroupPayload : never; type FilterActions = typeof filterActions; export type ModelFilter = (actions: FilterActions, path: string, isGroup: boolean, value: Model | ModelGroup) => FilterActions[keyof FilterActions]; export {}; //# sourceMappingURL=ModelGroup.types.d.ts.map