import { BaseEvent, BusinessEntityIds, ContactInfo, Address, BusinessType, VerificationStatus } from "../../schemas/base-event";
export declare const RegistrationEvents: {
    readonly CUSTOMER_REGISTERED: "user.customer.registered";
    readonly BUSINESS_REGISTERED: "user.business.registered";
    readonly AGENT_INVITED: "user.agent.invited";
    readonly AGENT_ACCEPTED: "user.agent.accepted";
    readonly AGENT_REJECTED: "user.agent.rejected";
};
export interface CustomerRegistrationData extends BusinessEntityIds {
    customerId: string;
    email: string;
    firstName: string;
    lastName: string;
    dateOfBirth?: string;
    gender?: "male" | "female" | "other" | "prefer_not_to_say";
    contactInfo: ContactInfo;
    address?: Address;
    registeredAt: string;
    registrationSource: "web" | "mobile" | "admin" | "agent";
    verificationStatus: VerificationStatus;
    accountStatus: "active" | "inactive" | "suspended";
    medicalInfo?: {
        bloodType?: string;
        allergies?: string[];
        chronicConditions?: string[];
        emergencyContact?: ContactInfo["emergencyContact"];
    };
    privacySettings?: {
        allowMarketing: boolean;
        allowDataSharing: boolean;
        communicationPreferences: ("email" | "sms" | "push")[];
    };
}
export interface BusinessRegistrationData extends BusinessEntityIds {
    businessId: string;
    businessName: string;
    businessType: BusinessType;
    email: string;
    registrationNumber?: string;
    licenseNumber?: string;
    hefamaaNumber?: string;
    taxId?: string;
    contactInfo: ContactInfo;
    address: Address;
    website?: string;
    businessDescription?: string;
    establishedYear?: number;
    employeeCount?: number;
    operationalHours?: Record<string, string>;
    servicesOffered?: string[];
    ownerId: string;
    ownerEmail: string;
    ownerName: string;
    registeredAt: string;
    verificationStatus: VerificationStatus;
    onboardingStatus: "not_started" | "in_progress" | "completed";
    specialtyAreas?: string[];
    accreditations?: string[];
    insuranceAccepted?: string[];
    requiresHrmIntegration: boolean;
    requiresPaymentIntegration: boolean;
    socialMedia?: Record<string, string>;
    marketingConsent: boolean;
}
export interface AgentInvitationData extends BusinessEntityIds {
    invitationId: string;
    businessId: string;
    businessName: string;
    inviteeEmail: string;
    inviteeName?: string;
    roleTitle: string;
    permissions: string[];
    invitedBy: string;
    invitedAt: string;
    expiresAt: string;
    invitationToken: string;
    roleDescription?: string;
    departmentAccess?: string[];
    specialPermissions?: Record<string, boolean>;
    sendWelcomeEmail: boolean;
    customMessage?: string;
}
export interface AgentResponseData extends BusinessEntityIds {
    invitationId: string;
    businessId: string;
    agentId: string;
    agentEmail: string;
    agentName: string;
    response: "accepted" | "rejected";
    respondedAt: string;
    responseMessage?: string;
    profileCompleted?: boolean;
    agreementsSigned?: string[];
    onboardingStarted?: boolean;
}
export interface CustomerRegisteredEvent extends BaseEvent<CustomerRegistrationData> {
    eventType: typeof RegistrationEvents.CUSTOMER_REGISTERED;
}
export interface BusinessRegisteredEvent extends BaseEvent<BusinessRegistrationData> {
    eventType: typeof RegistrationEvents.BUSINESS_REGISTERED;
}
export interface AgentInvitedEvent extends BaseEvent<AgentInvitationData> {
    eventType: typeof RegistrationEvents.AGENT_INVITED;
}
export interface AgentAcceptedEvent extends BaseEvent<AgentResponseData> {
    eventType: typeof RegistrationEvents.AGENT_ACCEPTED;
}
export interface AgentRejectedEvent extends BaseEvent<AgentResponseData> {
    eventType: typeof RegistrationEvents.AGENT_REJECTED;
}
export type RegistrationEvent = CustomerRegisteredEvent | BusinessRegisteredEvent | AgentInvitedEvent | AgentAcceptedEvent | AgentRejectedEvent;
export type RegistrationEventType = (typeof RegistrationEvents)[keyof typeof RegistrationEvents];
//# sourceMappingURL=registration.d.ts.map