<?php

declare(strict_types=1);

namespace App\Services\Audit;

/**
 * Canonical audit event names.
 *
 * Held as constants rather than free strings so that the dispute tooling can
 * filter on a stable vocabulary -- a typo'd event name is an event nobody will
 * ever find again when it matters.
 */
final class AuditEvent
{
    // Accounts
    public const USER_REGISTERED = 'user.registered';

    public const USER_EMAIL_VERIFIED = 'user.email_verified';

    public const USER_PROFILE_UPDATED = 'user.profile_updated';

    public const USER_PASSWORD_CHANGED = 'user.password_changed';

    public const USER_TWO_FACTOR_ENABLED = 'user.two_factor_enabled';

    public const USER_TWO_FACTOR_DISABLED = 'user.two_factor_disabled';

    public const USER_SUSPENDED = 'user.suspended';

    public const USER_REINSTATED = 'user.reinstated';

    public const USER_ROLE_CHANGED = 'user.role_changed';

    public const USER_CLOSED = 'user.closed';

    // Verification
    public const VERIFICATION_SUBMITTED = 'verification.submitted';

    public const VERIFICATION_APPROVED = 'verification.approved';

    public const VERIFICATION_REJECTED = 'verification.rejected';

    // Seller
    public const SELLER_ONBOARDED = 'seller.onboarded';

    public const SELLER_PROFILE_UPDATED = 'seller.profile_updated';

    public const SELLER_LISTING_SUSPENDED = 'seller.listing_suspended';

    public const SELLER_LISTING_REINSTATED = 'seller.listing_reinstated';

    // Marketplace configuration
    public const TLD_CREATED = 'tld.created';

    public const TLD_UPDATED = 'tld.updated';

    public const CATEGORY_CREATED = 'category.created';

    public const CATEGORY_UPDATED = 'category.updated';

    public const FEE_CREATED = 'fee.created';

    public const FEE_UPDATED = 'fee.updated';

    public const FEE_DEACTIVATED = 'fee.deactivated';

    public const PLAN_CREATED = 'plan.created';

    public const PLAN_UPDATED = 'plan.updated';

    // Subscriptions
    public const SUBSCRIPTION_STARTED = 'subscription.started';

    public const SUBSCRIPTION_CANCELED = 'subscription.canceled';

    public const SUBSCRIPTION_RENEWED = 'subscription.renewed';

    // Risk
    public const FRAUD_FLAG_RAISED = 'fraud.flag_raised';

    public const FRAUD_FLAG_RESOLVED = 'fraud.flag_resolved';

    private function __construct() {}
}
