import { z } from 'zod';
/**
 * Modernization: first-class Person / Wearer contracts. The Person is WHO the
 * suit/measurement is for; the Customer remains WHO pays. Person numbers use the
 * PER-YYYY-##### series (concurrency-safe, annual, org-scoped).
 */
export declare const personListQuerySchema: z.ZodObject<{
    page: z.ZodDefault<z.ZodNumber>;
    pageSize: z.ZodDefault<z.ZodNumber>;
    q: z.ZodOptional<z.ZodString>;
    /** Optional customer context — restrict to persons linked to this customer. */
    customerId: z.ZodOptional<z.ZodString>;
    includeArchived: z.ZodEffects<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodString]>>, boolean, string | boolean | undefined>;
}, "strip", z.ZodTypeAny, {
    includeArchived: boolean;
    page: number;
    pageSize: number;
    q?: string | undefined;
    customerId?: string | undefined;
}, {
    q?: string | undefined;
    includeArchived?: string | boolean | undefined;
    page?: number | undefined;
    pageSize?: number | undefined;
    customerId?: string | undefined;
}>;
export type PersonListQuery = z.infer<typeof personListQuerySchema>;
export declare const personCreateSchema: z.ZodObject<{
    name: z.ZodString;
    phone: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
    email: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
    gender: z.ZodOptional<z.ZodString>;
    dateOfBirth: z.ZodOptional<z.ZodString>;
    relationshipLabel: z.ZodOptional<z.ZodString>;
    notes: z.ZodOptional<z.ZodString>;
    isActive: z.ZodOptional<z.ZodBoolean>;
    /** Optional default payer (Customer id, same org). */
    defaultPayerCustomerId: z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>;
    /** Optionally link the new person to a customer account on creation. */
    linkCustomerId: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    name: string;
    isActive?: boolean | undefined;
    notes?: string | undefined;
    email?: string | undefined;
    phone?: string | undefined;
    gender?: string | undefined;
    dateOfBirth?: string | undefined;
    relationshipLabel?: string | undefined;
    defaultPayerCustomerId?: string | undefined;
    linkCustomerId?: string | undefined;
}, {
    name: string;
    isActive?: boolean | undefined;
    notes?: string | undefined;
    email?: string | undefined;
    phone?: string | undefined;
    gender?: string | undefined;
    dateOfBirth?: string | undefined;
    relationshipLabel?: string | undefined;
    defaultPayerCustomerId?: string | undefined;
    linkCustomerId?: string | undefined;
}>;
export type PersonCreateInput = z.infer<typeof personCreateSchema>;
export declare const personUpdateSchema: z.ZodObject<{
    isActive: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
    name: z.ZodOptional<z.ZodString>;
    notes: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    email: z.ZodOptional<z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>>;
    phone: z.ZodOptional<z.ZodUnion<[z.ZodOptional<z.ZodString>, z.ZodLiteral<"">]>>;
    gender: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    dateOfBirth: z.ZodOptional<z.ZodOptional<z.ZodString>>;
    relationshipLabel: z.ZodOptional<z.ZodOptional<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    isActive?: boolean | undefined;
    name?: string | undefined;
    notes?: string | undefined;
    email?: string | undefined;
    phone?: string | undefined;
    gender?: string | undefined;
    dateOfBirth?: string | undefined;
    relationshipLabel?: string | undefined;
}, {
    isActive?: boolean | undefined;
    name?: string | undefined;
    notes?: string | undefined;
    email?: string | undefined;
    phone?: string | undefined;
    gender?: string | undefined;
    dateOfBirth?: string | undefined;
    relationshipLabel?: string | undefined;
}>;
export type PersonUpdateInput = z.infer<typeof personUpdateSchema>;
/**
 * Changing a person's default payer is a sensitive action and always requires a
 * reason. The reason is captured in the audit trail.
 */
export declare const personChangeDefaultPayerSchema: z.ZodObject<{
    defaultPayerCustomerId: z.ZodNullable<z.ZodString>;
    reason: z.ZodString;
}, "strip", z.ZodTypeAny, {
    reason: string;
    defaultPayerCustomerId: string | null;
}, {
    reason: string;
    defaultPayerCustomerId: string | null;
}>;
export type PersonChangeDefaultPayerInput = z.infer<typeof personChangeDefaultPayerSchema>;
export declare const personLinkCustomerSchema: z.ZodObject<{
    customerId: z.ZodString;
    relationshipLabel: z.ZodOptional<z.ZodString>;
    isPrimary: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    customerId: string;
    isPrimary?: boolean | undefined;
    relationshipLabel?: string | undefined;
}, {
    customerId: string;
    isPrimary?: boolean | undefined;
    relationshipLabel?: string | undefined;
}>;
export type PersonLinkCustomerInput = z.infer<typeof personLinkCustomerSchema>;
//# sourceMappingURL=persons.d.ts.map