<?php

declare(strict_types=1);

namespace App\Support\Audit;

enum AuditActionId: string
{
    case WorkspaceMembershipAdd = 'workspace_membership.add';
    case WorkspaceMembershipRoleChange = 'workspace_membership.role_change';
    case WorkspaceMembershipRemove = 'workspace_membership.remove';
    case WorkspaceMembershipLastOwnerBlocked = 'workspace_membership.last_owner_blocked';
    case WorkspaceMembershipBreakGlassAssignOwner = 'workspace_membership.break_glass.assign_owner';

    case TenantMembershipAdd = 'tenant_membership.add';
    case TenantMembershipRoleChange = 'tenant_membership.role_change';
    case TenantMembershipRemove = 'tenant_membership.remove';
    case TenantMembershipLastOwnerBlocked = 'tenant_membership.last_owner_blocked';

    // Not part of the v1 contract, but used in codebase.
    case TenantMembershipBootstrapRecover = 'tenant_membership.bootstrap_recover';

    // Diagnostics / repair actions.
    case TenantMembershipDuplicatesMerged = 'tenant_membership.duplicates_merged';

    // Managed tenant onboarding wizard.
    case ManagedTenantOnboardingStart = 'managed_tenant_onboarding.start';
    case ManagedTenantOnboardingResume = 'managed_tenant_onboarding.resume';
    case ManagedTenantOnboardingVerificationStart = 'managed_tenant_onboarding.verification_start';
    case ManagedTenantOnboardingActivation = 'managed_tenant_onboarding.activation';
    case VerificationCompleted = 'verification.completed';
    case VerificationCheckAcknowledged = 'verification.check_acknowledged';

    case AlertDestinationCreated = 'alert_destination.created';
    case AlertDestinationUpdated = 'alert_destination.updated';
    case AlertDestinationDeleted = 'alert_destination.deleted';
    case AlertDestinationEnabled = 'alert_destination.enabled';
    case AlertDestinationDisabled = 'alert_destination.disabled';
    case AlertDestinationTestRequested = 'alert_destination.test_requested';

    case AlertRuleCreated = 'alert_rule.created';
    case AlertRuleUpdated = 'alert_rule.updated';
    case AlertRuleDeleted = 'alert_rule.deleted';
    case AlertRuleEnabled = 'alert_rule.enabled';
    case AlertRuleDisabled = 'alert_rule.disabled';

    case WorkspaceSettingUpdated = 'workspace_setting.updated';
    case WorkspaceSettingReset = 'workspace_setting.reset';

    case BaselineProfileCreated = 'baseline_profile.created';
    case BaselineProfileUpdated = 'baseline_profile.updated';
    case BaselineProfileArchived = 'baseline_profile.archived';
    case BaselineCaptureStarted = 'baseline_capture.started';
    case BaselineCaptureCompleted = 'baseline_capture.completed';
    case BaselineCaptureFailed = 'baseline_capture.failed';
    case BaselineCompareStarted = 'baseline_compare.started';
    case BaselineCompareCompleted = 'baseline_compare.completed';
    case BaselineCompareFailed = 'baseline_compare.failed';
    case BaselineAssignmentCreated = 'baseline_assignment.created';
    case BaselineAssignmentUpdated = 'baseline_assignment.updated';
    case BaselineAssignmentDeleted = 'baseline_assignment.deleted';

    // Workspace selection / switch events (Spec 107).
    case WorkspaceAutoSelected = 'workspace.auto_selected';
    case WorkspaceSelected = 'workspace.selected';
}
