export interface EventMetadata {
    correlationId: string;
    sourceService: string;
    version: string;
    priority?: 'low' | 'normal' | 'high' | 'urgent';
    headers?: Record<string, string>;
    requiresAcknowledgment?: boolean;
    maxRetries?: number;
    expiresAt?: string;
}
export interface BaseEvent<TData = any> {
    eventId: string;
    eventType: string;
    timestamp: string;
    data: TData;
    metadata: EventMetadata;
}
export interface EventEnvelope<TData = any> extends BaseEvent<TData> {
    stream: string;
    streamMessageId?: string;
}
export interface BusinessEntityIds {
    userId?: string;
    businessId?: string;
    hospitalId?: string;
    customerId?: string;
    transactionId?: string;
    transportId?: string;
    fileId?: string;
    adminId?: string;
}
export interface EventErrorInfo {
    code: string;
    message: string;
    details?: Record<string, any>;
    stack?: string;
    occurredAt: string;
}
export interface Address {
    street: string;
    city: string;
    state: string;
    postalCode: string;
    country: string;
    coordinates?: {
        latitude: number;
        longitude: number;
    };
}
export interface ContactInfo {
    email?: string;
    phoneNumber?: string;
    alternatePhone?: string;
    emergencyContact?: {
        name: string;
        phoneNumber: string;
        relationship: string;
    };
}
export type BusinessType = 'hospital' | 'hmo' | 'diagnostic_center' | 'ambulance_provider' | 'pharmacy' | 'laboratory';
export type UserType = 'customer' | 'business_owner' | 'business_agent' | 'admin' | 'super_admin';
export type EntityStatus = 'active' | 'inactive' | 'pending' | 'suspended' | 'archived' | 'deleted';
export type VerificationStatus = 'pending' | 'in_review' | 'verified' | 'rejected' | 'expired' | 'requires_resubmission';
export type EventData<T extends BaseEvent> = T['data'];
export type EventHandler<T extends BaseEvent> = (event: T) => Promise<void> | void;
export interface EventBatch<TData = any> {
    events: BaseEvent<TData>[];
    batchId: string;
    batchMetadata?: EventMetadata;
}
//# sourceMappingURL=base-event.d.ts.map