import { ObjectGroup } from './group.js'; import { type CamelCase } from '../camelcase_types.js'; import { GroupConditional } from './conditional.js'; import { type OTYPE, type COTYPE, type ITYPE } from '../../symbols.js'; import type { FieldContext, SchemaTypes } from '../../types.js'; /** * Creates an object group that conditionally merges properties into an existing object * based on runtime validation logic. Groups enable dynamic schema composition where * different properties are required based on conditional rules. * * @param conditionals - Array of conditional property sets to evaluate * @returns ObjectGroup instance that can be merged into a VineObject * * @example * const schema = vine.object({ * account_type: vine.string() * }).merge( * vine.group([ * vine.group.if((value) => value.account_type === 'personal', { * first_name: vine.string(), * last_name: vine.string() * }), * vine.group.if((value) => value.account_type === 'business', { * company_name: vine.string(), * tax_id: vine.string() * }) * ]) * ) */ export declare function group>(conditionals: Conditional[]): ObjectGroup; export declare namespace group { var _a: >(conditon: (value: Record, field: FieldContext) => any, properties: Properties) => GroupConditional]?: { [K_1 in keyof Properties]: Properties[K_1][typeof ITYPE]; }[K_2] | undefined; } & { [K_3 in import("@poppinss/types").ExtractDefined<{ [K_1 in keyof Properties]: Properties[K_1][typeof ITYPE]; }>]: { [K_1 in keyof Properties]: Properties[K_1][typeof ITYPE]; }[K_3]; } extends infer T ? { [K in keyof T]: T[K]; } : never, { [K_6 in import("@poppinss/types").ExtractUndefined<{ [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }>]?: { [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }[K_6] | undefined; } & { [K_7 in import("@poppinss/types").ExtractDefined<{ [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }>]: { [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }[K_7]; } extends infer T_1 ? { [K_4 in keyof T_1]: T_1[K_4]; } : never, { [K_10 in import("@poppinss/types").ExtractUndefined<{ [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }>]?: { [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }[K_10] | undefined; } & { [K_11 in import("@poppinss/types").ExtractDefined<{ [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }>]: { [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }[K_11]; } extends infer T_2 ? { [K_8 in keyof T_2]: T_2[K_8]; } : never>; var _b: >(properties: Properties) => GroupConditional]?: { [K_1 in keyof Properties]: Properties[K_1][typeof ITYPE]; }[K_2] | undefined; } & { [K_3 in import("@poppinss/types").ExtractDefined<{ [K_1 in keyof Properties]: Properties[K_1][typeof ITYPE]; }>]: { [K_1 in keyof Properties]: Properties[K_1][typeof ITYPE]; }[K_3]; } extends infer T ? { [K in keyof T]: T[K]; } : never, { [K_6 in import("@poppinss/types").ExtractUndefined<{ [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }>]?: { [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }[K_6] | undefined; } & { [K_7 in import("@poppinss/types").ExtractDefined<{ [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }>]: { [K_5 in keyof Properties]: Properties[K_5][typeof OTYPE]; }[K_7]; } extends infer T_1 ? { [K_4 in keyof T_1]: T_1[K_4]; } : never, { [K_10 in import("@poppinss/types").ExtractUndefined<{ [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }>]?: { [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }[K_10] | undefined; } & { [K_11 in import("@poppinss/types").ExtractDefined<{ [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }>]: { [K_9 in keyof Properties as CamelCase]: Properties[K_9][typeof COTYPE]; }[K_11]; } extends infer T_2 ? { [K_8 in keyof T_2]: T_2[K_8]; } : never>; export { _a as if, _b as else }; }