import { UserRole } from '../../../user/domain/enum/user-role.enum'; /** * Base interface for all User domain events */ export interface UserDomainEvent { readonly eventType: string; readonly aggregateId: string; readonly occurredOn: Date; readonly version: number; readonly payload: Record; } /** * User account was created */ export interface UserCreatedEventPayload { readonly userId: string; readonly email: string; readonly name: string; readonly role: UserRole; readonly [key: string]: unknown; } export declare class UserCreatedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: UserCreatedEventPayload; readonly eventType = "UserCreatedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: UserCreatedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: UserCreatedEventPayload): UserCreatedEvent; toJSON(): Record; static fromJSON(data: Record): UserCreatedEvent; } /** * User profile was updated */ export interface UserProfileUpdatedEventPayload { readonly userId: string; readonly updates: object; readonly [key: string]: unknown; } export declare class UserProfileUpdatedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: UserProfileUpdatedEventPayload; readonly eventType = "UserProfileUpdatedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: UserProfileUpdatedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: UserProfileUpdatedEventPayload): UserProfileUpdatedEvent; toJSON(): Record; static fromJSON(data: Record): UserProfileUpdatedEvent; } /** * User subscription changed */ export interface UserSubscriptionChangedEventPayload { readonly userId: string; readonly subscriptionId: string; readonly [key: string]: unknown; } export declare class UserSubscriptionChangedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: UserSubscriptionChangedEventPayload; readonly eventType = "UserSubscriptionChangedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: UserSubscriptionChangedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: UserSubscriptionChangedEventPayload): UserSubscriptionChangedEvent; toJSON(): Record; static fromJSON(data: Record): UserSubscriptionChangedEvent; } /** * User preferences were updated */ export interface UserPreferencesUpdatedEventPayload { readonly userId: string; readonly preferences: object; readonly [key: string]: unknown; } export declare class UserPreferencesUpdatedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: UserPreferencesUpdatedEventPayload; readonly eventType = "UserPreferencesUpdatedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: UserPreferencesUpdatedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: UserPreferencesUpdatedEventPayload): UserPreferencesUpdatedEvent; toJSON(): Record; static fromJSON(data: Record): UserPreferencesUpdatedEvent; } /** * User logged in */ export interface UserLoggedInEventPayload { readonly userId: string; readonly [key: string]: unknown; } export declare class UserLoggedInEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: UserLoggedInEventPayload; readonly eventType = "UserLoggedInEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: UserLoggedInEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: UserLoggedInEventPayload): UserLoggedInEvent; toJSON(): Record; static fromJSON(data: Record): UserLoggedInEvent; } /** * User role changed */ export interface UserRoleChangedEventPayload { readonly userId: string; readonly oldRole: UserRole; readonly newRole: UserRole; readonly [key: string]: unknown; } export declare class UserRoleChangedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: UserRoleChangedEventPayload; readonly eventType = "UserRoleChangedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: UserRoleChangedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: UserRoleChangedEventPayload): UserRoleChangedEvent; toJSON(): Record; static fromJSON(data: Record): UserRoleChangedEvent; } /** * User started onboarding */ export interface OnboardingStartedEventPayload { readonly userId: string; readonly [key: string]: unknown; } export declare class OnboardingStartedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: OnboardingStartedEventPayload; readonly eventType = "OnboardingStartedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: OnboardingStartedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: OnboardingStartedEventPayload): OnboardingStartedEvent; toJSON(): Record; static fromJSON(data: Record): OnboardingStartedEvent; } /** * User completed an onboarding step */ export interface OnboardingStepCompletedEventPayload { readonly userId: string; readonly stepId: string; readonly [key: string]: unknown; } export declare class OnboardingStepCompletedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: OnboardingStepCompletedEventPayload; readonly eventType = "OnboardingStepCompletedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: OnboardingStepCompletedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: OnboardingStepCompletedEventPayload): OnboardingStepCompletedEvent; toJSON(): Record; static fromJSON(data: Record): OnboardingStepCompletedEvent; } /** * User completed all onboarding steps */ export interface OnboardingCompletedEventPayload { readonly userId: string; readonly [key: string]: unknown; } export declare class OnboardingCompletedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: OnboardingCompletedEventPayload; readonly eventType = "OnboardingCompletedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: OnboardingCompletedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: OnboardingCompletedEventPayload): OnboardingCompletedEvent; toJSON(): Record; static fromJSON(data: Record): OnboardingCompletedEvent; } /** * User skipped onboarding */ export interface OnboardingSkippedEventPayload { readonly userId: string; readonly [key: string]: unknown; } export declare class OnboardingSkippedEvent implements UserDomainEvent { readonly aggregateId: string; readonly payload: OnboardingSkippedEventPayload; readonly eventType = "OnboardingSkippedEvent"; readonly occurredOn: Date; readonly version = 1; constructor(aggregateId: string, payload: OnboardingSkippedEventPayload, occurredOn?: Date); static create(aggregateId: string, payload: OnboardingSkippedEventPayload): OnboardingSkippedEvent; toJSON(): Record; static fromJSON(data: Record): OnboardingSkippedEvent; } /** * Union type of all User events */ export type UserEvent = UserCreatedEvent | UserProfileUpdatedEvent | UserSubscriptionChangedEvent | UserPreferencesUpdatedEvent | UserLoggedInEvent | UserRoleChangedEvent | OnboardingStartedEvent | OnboardingStepCompletedEvent | OnboardingCompletedEvent | OnboardingSkippedEvent; /** * Event type discriminator */ export declare const UserEventTypes: { readonly UserCreatedEvent: "UserCreatedEvent"; readonly UserProfileUpdatedEvent: "UserProfileUpdatedEvent"; readonly UserSubscriptionChangedEvent: "UserSubscriptionChangedEvent"; readonly UserPreferencesUpdatedEvent: "UserPreferencesUpdatedEvent"; readonly UserLoggedInEvent: "UserLoggedInEvent"; readonly UserRoleChangedEvent: "UserRoleChangedEvent"; readonly OnboardingStartedEvent: "OnboardingStartedEvent"; readonly OnboardingStepCompletedEvent: "OnboardingStepCompletedEvent"; readonly OnboardingCompletedEvent: "OnboardingCompletedEvent"; readonly OnboardingSkippedEvent: "OnboardingSkippedEvent"; }; /** * Event registry for polymorphic deserialization */ export declare const USER_EVENT_REGISTRY: Record) => UserDomainEvent; }>; /** * Deserialize any User event from JSON using eventType discriminator * @param data - Object containing event data with 'eventType' key * @returns The deserialized event instance * @throws Error if eventType is unknown */ export declare function deserializeUserEvent(data: Record): UserDomainEvent; //# sourceMappingURL=user.events.d.ts.map