<?php

declare(strict_types=1);

namespace App\Framework\Core\ValueObjects;

/**
 * Client Identifier Type Enum
 *
 * Categorizes different types of client identifiers for
 * rate limiting, tracking, and security purposes.
 */
enum ClientIdentifierType: string
{
    /**
     * IP Address (IPv4 or IPv6)
     */
    case IP_ADDRESS = 'ip';

    /**
     * Session ID from session management
     */
    case SESSION_ID = 'session';

    /**
     * User ID for authenticated users
     */
    case USER_ID = 'user';

    /**
     * API Key for API clients
     */
    case API_KEY = 'api_key';

    /**
     * Custom identifier type
     */
    case CUSTOM = 'custom';
}
