-- ============================================================================
-- OrbiQuant IA - Trading Platform
-- Schema: auth
-- File: 01-enums.sql
-- Description: Enumerated types for authentication and authorization
-- ============================================================================

-- User account status
CREATE TYPE auth.user_status AS ENUM (
  'pending_verification',
  'active',
  'suspended',
  'deactivated',
  'banned'
);

COMMENT ON TYPE auth.user_status IS 'User account status lifecycle states';

-- User role for RBAC
CREATE TYPE auth.user_role AS ENUM (
  'user',
  'trader',
  'analyst',
  'admin',
  'super_admin'
);

COMMENT ON TYPE auth.user_role IS 'Role-based access control roles';

-- OAuth provider types
CREATE TYPE auth.oauth_provider AS ENUM (
  'google',
  'facebook',
  'apple',
  'github',
  'microsoft',
  'twitter'
);

COMMENT ON TYPE auth.oauth_provider IS 'Supported OAuth 2.0 providers';

-- Phone verification channel
CREATE TYPE auth.phone_channel AS ENUM (
  'sms',
  'whatsapp'
);

COMMENT ON TYPE auth.phone_channel IS 'Phone verification delivery channels';

-- Authentication event types for logging
CREATE TYPE auth.auth_event_type AS ENUM (
  'login',
  'logout',
  'register',
  'password_change',
  'password_reset_request',
  'password_reset_complete',
  'email_verification',
  'phone_verification',
  'mfa_enabled',
  'mfa_disabled',
  'session_expired',
  'account_suspended',
  'account_reactivated',
  'failed_login',
  'oauth_linked',
  'oauth_unlinked'
);

COMMENT ON TYPE auth.auth_event_type IS 'Types of authentication events for audit logging';

-- MFA method types
CREATE TYPE auth.mfa_method AS ENUM (
  'none',
  'totp',
  'sms',
  'email'
);

COMMENT ON TYPE auth.mfa_method IS 'Multi-factor authentication methods';
