"""Stable string enums for billing, routing, and access (OpenAPI-friendly)."""
from __future__ import annotations

from enum import Enum


class BillingStatus(str, Enum):
    """Normalized subscription / billing state for APIs."""

    NONE = "none"
    COMPLIMENTARY = "complimentary"
    VERIFYING = "verifying"
    ACTIVE = "active"
    TRIALING = "trialing"
    INCOMPLETE = "incomplete"
    PAST_DUE = "past_due"
    CANCELED = "canceled"
    UNPAID = "unpaid"


class AccessReason(str, Enum):
    NONE = "none"
    BILLING_REQUIRED = "billing_required"
    MFA_REQUIRED = "mfa_required"


class RoutingNextStep(str, Enum):
    DASHBOARD = "dashboard"
    SELECT_PLAN = "select_plan"
    VERIFY_PAYMENT = "verify_payment"
    SETUP_MFA = "setup_mfa"
    MFA_CHALLENGE = "mfa_challenge"
    FROZEN_WORKSPACE = "frozen_workspace"
    ACCEPT_INVITE = "accept_invite"


class RoutingReason(str, Enum):
    WORKSPACE_REQUIRES_PLAN = "workspace_requires_plan"
    PAYMENT_PENDING = "payment_pending"
    MFA_REQUIRED = "mfa_required"
    AUTHENTICATED_READY = "authenticated_ready"
    WORKSPACE_BILLING_LAPSED = "workspace_billing_lapsed"
    PENDING_WORKSPACE_INVITES = "pending_workspace_invites"


class CheckoutReturnState(str, Enum):
    SUCCESS_RETURN = "success_return"
    CANCELED_RETURN = "canceled_return"
    UNKNOWN = "unknown"
