- notificationId: NotificationId (UUID)
- clientId: ClientId
- type: NotificationType (enum)
- channel: PUSH | EMAIL | SMS | IN_APP | SSE
- priority: HIGH | NORMAL | LOW
- templateKey: String
- locale: Locale (en_IN | hi_IN | ta_IN)
- variables: Map<String, String>
- status: PENDING | SENT | DELIVERED | FAILED | READ
- sentAt: Instant?
- deliveredAt: Instant?
- readAt: Instant?
- retryCount: Int (max 3)
+ send(): DomainEvent[NotificationSent]
+ markDelivered(): DomainEvent[NotificationDelivered]
+ markRead(): void
+ fail(reason): DomainEvent[NotificationFailed]
+ retry(): void (increments retryCount)
- templates: Map<TemplateKey, Map<Locale, Template>>
- variableResolvers: List<VariableResolver>
+ resolve(templateKey, locale, vars): RenderedContent
+ validateTemplate(key): ValidationResult
+ listTemplates(): List<TemplateMetadata>
Notification Types (enum)
ORDER_PLACED
ORDER_CONFIRMED
SIP_EXECUTED
PAYMENT_RECEIVED
TIER_UPGRADED
KYC_VERIFIED
GOAL_MILESTONE
MARKET_ALERT
REBALANCE_DUE
WILL_REMINDER
INSURANCE_QUOTE
PAYMENT_FAILED