import { z } from "zod";
declare const UserActorSchema: z.ZodObject<{
    identifiedBy: z.ZodLiteral<"user">;
    userUuid: z.ZodString;
}, "strip", z.ZodTypeAny, {
    userUuid: string;
    identifiedBy: "user";
}, {
    userUuid: string;
    identifiedBy: "user";
}>;
declare const GuestActorSchema: z.ZodObject<{
    identifiedBy: z.ZodLiteral<"guest">;
    email: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    phone: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    identifiedBy: "guest";
    email?: string | undefined;
    name?: string | undefined;
    phone?: string | undefined;
}, {
    identifiedBy: "guest";
    email?: string | undefined;
    name?: string | undefined;
    phone?: string | undefined;
}>;
declare const AttendeeActorSchema: z.ZodObject<{
    identifiedBy: z.ZodLiteral<"attendee">;
    attendeeId: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    attendeeId: number;
    identifiedBy: "attendee";
}, {
    attendeeId: number;
    identifiedBy: "attendee";
}>;
declare const ActorByIdSchema: z.ZodObject<{
    identifiedBy: z.ZodLiteral<"id">;
    id: z.ZodString;
}, "strip", z.ZodTypeAny, {
    id: string;
    identifiedBy: "id";
}, {
    id: string;
    identifiedBy: "id";
}>;
export declare const ActorSchema: z.ZodDiscriminatedUnion<"identifiedBy", [z.ZodObject<{
    identifiedBy: z.ZodLiteral<"id">;
    id: z.ZodString;
}, "strip", z.ZodTypeAny, {
    id: string;
    identifiedBy: "id";
}, {
    id: string;
    identifiedBy: "id";
}>, z.ZodObject<{
    identifiedBy: z.ZodLiteral<"user">;
    userUuid: z.ZodString;
}, "strip", z.ZodTypeAny, {
    userUuid: string;
    identifiedBy: "user";
}, {
    userUuid: string;
    identifiedBy: "user";
}>, z.ZodObject<{
    identifiedBy: z.ZodLiteral<"guest">;
    email: z.ZodOptional<z.ZodString>;
    name: z.ZodOptional<z.ZodString>;
    phone: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    identifiedBy: "guest";
    email?: string | undefined;
    name?: string | undefined;
    phone?: string | undefined;
}, {
    identifiedBy: "guest";
    email?: string | undefined;
    name?: string | undefined;
    phone?: string | undefined;
}>, z.ZodObject<{
    identifiedBy: z.ZodLiteral<"attendee">;
    attendeeId: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    attendeeId: number;
    identifiedBy: "attendee";
}, {
    attendeeId: number;
    identifiedBy: "attendee";
}>]>;
export type Actor = z.infer<typeof ActorSchema>;
type UserActor = z.infer<typeof UserActorSchema>;
type GuestActor = z.infer<typeof GuestActorSchema>;
type AttendeeActor = z.infer<typeof AttendeeActorSchema>;
type ActorById = z.infer<typeof ActorByIdSchema>;
/**
 * Creates an Actor representing a User by UUID
 */
export declare function makeUserActor(userUuid: string): UserActor;
/**
 * Creates an Actor representing the System
 * System actors must be referenced by ID (requires migration)
 */
export declare function makeSystemActor(): ActorById;
/**
 * Creates an Actor representing a Guest (non-registered attendee)
 */
export declare function makeGuestActor(params: {
    email: string;
    name?: string;
    phone?: string;
}): GuestActor;
/**
 * Creates an Actor by existing actor ID
 */
export declare function makeActorById(id: string): ActorById;
/**
 * Creates an Actor representing an Attendee by attendee ID
 */
export declare function makeAttendeeActor(attendeeId: number): AttendeeActor;
export declare const SYSTEM_ACTOR_ID = "00000000-0000-0000-0000-000000000000";
export {};
//# sourceMappingURL=actor.d.ts.map