package com.correx.core.approvals.model

import com.correx.core.approvals.Tier
import com.correx.core.approvals.UserSteering
import com.correx.core.events.risk.RiskSummary
import com.correx.core.events.types.ApprovalRequestId
import com.correx.core.events.types.CausationId
import com.correx.core.events.types.CorrelationId
import com.correx.core.events.types.RiskSummaryId
import com.correx.core.events.types.ValidationReportId
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable

@Serializable
data class DomainApprovalRequest(
    val id: ApprovalRequestId,
    val tier: Tier,
    val validationReportId: ValidationReportId,
    val riskSummaryId: RiskSummaryId?,
    val riskSummary: RiskSummary? = null,
    val timestamp: Instant,
    val causationId: CausationId? = null,
    val correlationId: CorrelationId? = null,
    val userSteering: UserSteering? = null,
    val toolName: String? = null,
    val preview: String? = null,
)
