@kenniy/event-contracts
Version:
Shared event schemas and stream definitions for 8Medical microservices architecture
93 lines • 3.41 kB
TypeScript
export declare const UserServiceEventTypes: {
readonly CUSTOMER_REGISTERED: "customer.registered";
readonly BUSINESS_REGISTERED: "business.registered";
readonly CUSTOMER_LOGGED_IN: "customer.logged_in";
readonly BUSINESS_LOGGED_IN: "business.logged_in";
readonly EMAIL_VERIFIED: "email.verified";
readonly PHONE_VERIFIED: "phone.verified";
readonly PROFILE_UPDATED: "profile.updated";
readonly PASSWORD_CHANGED: "password.changed";
readonly BUSINESS_VERIFICATION_SUBMITTED: "business.verification.submitted";
readonly BUSINESS_VERIFICATION_APPROVED: "business.verification.approved";
readonly BUSINESS_VERIFICATION_REJECTED: "business.verification.rejected";
readonly AGENT_INVITED: "agent.invited";
readonly AGENT_ACCEPTED: "agent.accepted";
readonly AGENT_REJECTED: "agent.rejected";
};
export interface BusinessRegisteredEvent {
eventId: string;
timestamp: string;
eventType: typeof UserServiceEventTypes.BUSINESS_REGISTERED;
data: {
businessId: string;
businessName: string;
businessType: 'hospital' | 'hmo' | 'diagnostic_center' | 'ambulance_provider';
email: string;
contactName?: string;
phoneNumber?: string;
ownerId: string;
ownerEmail: string;
ownerName: string;
registeredAt: string;
verificationStatus: 'pending' | 'verified' | 'rejected';
onboardingStatus: 'not_started' | 'in_progress' | 'completed';
};
metadata: {
correlationId: string;
sourceService: 'user-service';
version: '1.0';
requiresNotification: boolean;
notificationTemplates?: string[];
};
}
export interface CustomerRegisteredEvent {
eventId: string;
timestamp: string;
eventType: typeof UserServiceEventTypes.CUSTOMER_REGISTERED;
data: {
customerId: string;
email: string;
firstName: string;
lastName: string;
phoneNumber?: string;
dateOfBirth?: string;
registeredAt: string;
verificationStatus: 'pending' | 'verified';
accountStatus: 'active' | 'inactive' | 'suspended';
};
metadata: {
correlationId: string;
sourceService: 'user-service';
version: '1.0';
requiresNotification: boolean;
notificationTemplates?: string[];
};
}
export interface BusinessVerificationDecisionEvent {
eventId: string;
timestamp: string;
eventType: typeof UserServiceEventTypes.BUSINESS_VERIFICATION_APPROVED | typeof UserServiceEventTypes.BUSINESS_VERIFICATION_REJECTED;
data: {
businessId: string;
businessName: string;
businessType: string;
email: string;
decision: 'approved' | 'rejected';
decidedBy: string;
decidedAt: string;
reason?: string;
notes?: string;
hrmOnboardingRequired?: boolean;
nextSteps?: string[];
};
metadata: {
correlationId: string;
sourceService: 'user-service';
version: '1.0';
requiresNotification: boolean;
notificationTemplates?: string[];
};
}
export type UserServiceEvent = BusinessRegisteredEvent | CustomerRegisteredEvent | BusinessVerificationDecisionEvent;
export type UserServiceEventType = typeof UserServiceEventTypes[keyof typeof UserServiceEventTypes];
//# sourceMappingURL=user-service.d.ts.map