<?php

declare(strict_types=1);

namespace App\Framework\Config;

enum EnvKey: string
{
    case APP_NAME = 'APP_NAME';
    case APP_DEBUG = 'APP_DEBUG';
    case APP_ENV = 'APP_ENV';
    case APP_KEY = 'APP_KEY';
    case APP_TIMEZONE = 'APP_TIMEZONE';
    case APP_LOCALE = 'APP_LOCALE';
    case APP_URL = 'APP_URL';

    // Feature Flags
    case ENABLE_CONTEXT_AWARE_INITIALIZERS = 'ENABLE_CONTEXT_AWARE_INITIALIZERS';

    // Database
    case DB_DRIVER = 'DB_DRIVER';
    case DB_HOST = 'DB_HOST';
    case DB_PORT = 'DB_PORT';
    case DB_DATABASE = 'DB_DATABASE';
    case DB_USERNAME = 'DB_USERNAME';
    case DB_PASSWORD = 'DB_PASSWORD';
    case DB_CHARSET = 'DB_CHARSET';

    // External APIs
    case SHOPIFY_WEBHOOK_SECRET = 'SHOPIFY_WEBHOOK_SECRET';
    case RAPIDMAIL_USERNAME = 'RAPIDMAIL_USERNAME';
    case RAPIDMAIL_PASSWORD = 'RAPIDMAIL_PASSWORD';
    case RAPIDMAIL_TEST_MODE = 'RAPIDMAIL_TEST_MODE';

    // OAuth - Spotify
    case SPOTIFY_CLIENT_ID = 'SPOTIFY_CLIENT_ID';
    case SPOTIFY_CLIENT_SECRET = 'SPOTIFY_CLIENT_SECRET';
    case SPOTIFY_REDIRECT_URI = 'SPOTIFY_REDIRECT_URI';

    // OAuth - Apple Music
    case APPLE_MUSIC_CLIENT_ID = 'APPLE_MUSIC_CLIENT_ID';
    case APPLE_MUSIC_TEAM_ID = 'APPLE_MUSIC_TEAM_ID';
    case APPLE_MUSIC_KEY_ID = 'APPLE_MUSIC_KEY_ID';
    case APPLE_MUSIC_PRIVATE_KEY = 'APPLE_MUSIC_PRIVATE_KEY';
    case APPLE_MUSIC_REDIRECT_URI = 'APPLE_MUSIC_REDIRECT_URI';

    // ETag Configuration
    case ETAG_ENABLED = 'ETAG_ENABLED';
    case ETAG_PREFER_WEAK = 'ETAG_PREFER_WEAK';
    case ETAG_MIDDLEWARE_ENABLED = 'ETAG_MIDDLEWARE_ENABLED';
    case ETAG_EXCLUDE_PATHS = 'ETAG_EXCLUDE_PATHS';
    case ETAG_EXCLUDE_CONTENT_TYPES = 'ETAG_EXCLUDE_CONTENT_TYPES';

    case REDIS_HOST = 'REDIS_HOST';
    case REDIS_PORT = 'REDIS_PORT';
    case REDIS_PASSWORD = 'REDIS_PASSWORD';
    case REDIS_PREFIX = 'REDIS_PREFIX';

    // Vault Configuration
    case VAULT_ENCRYPTION_KEY = 'VAULT_ENCRYPTION_KEY';

}
