<?php

declare(strict_types=1);

namespace App\Framework\Http;

enum StateKey: string
{
    case AUTH_USER = 'auth.user';
    case AUTH_PERMISSIONS = 'auth.permissions';
    case AUTH_ROLES = 'auth.roles';
    case AUTH_TOKEN = 'auth.token';

    case ROUTING_PARAMS = 'routing.params';
    case ROUTING_MATCHED_ROUTE = 'routing.matched_route';
    case ROUTING_CONTROLLER = 'routing.controller';
    case ROUTING_ACTION = 'routing.action';
    case ROUTE_CONTEXT = 'route.context';

    case CONTROLLER_RESULT = 'controller.result';

    case MIDDLEWARE_STACK = 'middleware.stack';
    case MIDDLEWARE_CURRENT = 'middleware.current';

    case VALIDATION_ERRORS = 'validation.errors';
    case VALIDATION_RULES = 'validation.rules';

    case CACHE_KEY = 'cache.key';
    case CACHE_TTL = 'cache.ttl';

    case PERFORMANCE_START_TIME = 'performance.start_time';
    case PERFORMANCE_MEMORY_START = 'performance.memory_start';

    case SESSION_ID = 'session.id';
    case SESSION_DATA = 'session.data';

    case REQUEST_ID = 'request.id';
    case REQUEST_START_TIME = 'request.start_time';
    case REQUEST_IP = 'request.ip';
    case REQUEST_USER_AGENT = 'request.user_agent';
}
