/** * Step 12 — Household & Economic Profile * * Fields: maritalStatus, familyMembers, [14 link sub-step fields gated on * familyMembers], numberOfDependents, housingType, householdIncome, * bplCard, digitalAccess, migrationStatus, landOwnership, primaryIncomeSource * * Family member linking: * After picking familyMembers (sub-step 2), up to 14 conditional sub-steps * appear — one per family-member type the user selected. Each sub-step * shows a search UI (by name / email / phone) and lets the user link an * existing platform account. Single-instance relations (mother / father * / step_*) save as a single link object; multi-instance relations * (siblings / children / spouse / other) save as an array. * * The schema accepts these fields here so they can be validated at save * time. The same data is also written to the User collection's * `relations` sub-doc on save (indexed for graph traversal). * * @module udp-schema/step-12 */ import { z } from 'zod'; /** * One family-link entry. `_id` is server-assigned on insert. Both `linkedUserId` * and `cachedName` are written together (per the "save id + name" decision — * id for joins / graph traversal, name for display without an extra lookup). * * `mutuallyConfirmed` flips to true when the *other* user adds a reciprocal * relation pointing back at this user (computed server-side on save). * * `verified` / `verifiedAt` / `verifiedBy` are populated when the initiating * volunteer marks the family-relations field group as verified per the * member's official ID (Phase 4 of the rollout). */ declare const familyLinkSchema: z.ZodObject<{ _id: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>; export declare const step12HouseholdSchema: z.ZodObject<{ maritalStatus: z.ZodOptional>; familyMembers: z.ZodOptional>; linkedMother: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>; linkedStepMother: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>; linkedFather: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>; linkedStepFather: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>; linkedSpouses: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedBloodSisters: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedHalfSisters: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedStepSisters: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedBloodBrothers: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedHalfBrothers: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedStepBrothers: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedDaughters: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedSons: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; linkedOthers: z.ZodOptional; relation: z.ZodEnum<{ other: "other"; father: "father"; mother: "mother"; step_father: "step_father"; step_mother: "step_mother"; wife_husband: "wife_husband"; blood_brother: "blood_brother"; blood_sister: "blood_sister"; half_brother: "half_brother"; half_sister: "half_sister"; step_brother: "step_brother"; step_sister: "step_sister"; son: "son"; daughter: "daughter"; }>; linkedUserId: z.ZodString; cachedName: z.ZodString; cachedAvatarUrl: z.ZodOptional; mutuallyConfirmed: z.ZodDefault; verified: z.ZodDefault; verifiedAt: z.ZodOptional>; verifiedBy: z.ZodOptional; createdAt: z.ZodOptional>; }, z.core.$strip>>>; numberOfDependents: z.ZodOptional; housingType: z.ZodOptional>; householdIncome: z.ZodOptional; bplCard: z.ZodOptional>; digitalAccess: z.ZodOptional>; migrationStatus: z.ZodOptional>; landOwnership: z.ZodOptional>; primaryIncomeSource: z.ZodOptional>; }, z.core.$strip>; export type Step12HouseholdInput = z.infer; export type FamilyLink = z.infer; export {}; //# sourceMappingURL=step-12.schema.d.ts.map