"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""

from __future__ import annotations
import dataclasses
from ..shared import planenrollmentcoveragemonth as shared_planenrollmentcoveragemonth
from ..shared import userroles as shared_userroles
from dataclasses_json import Undefined, dataclass_json
from enum import Enum
from sdk import utils
from typing import Any, Dict, List, Optional

class PlanEnrollmentPlanType(str, Enum):
    MERIDIO_HEALTH = 'MeridioHealth'

class PlanEnrollmentStatus(str, Enum):
    PENDING = 'Pending'
    ACTIVE = 'Active'
    TERMINATED = 'Terminated'


@dataclass_json(undefined=Undefined.EXCLUDE)
@dataclasses.dataclass
class PlanEnrollment:
    coverage_months: List[shared_planenrollmentcoveragemonth.PlanEnrollmentCoverageMonth] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('coverageMonths') }})
    created_at: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('createdAt') }})
    currency: Any = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('currency') }})
    effective_date: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('effectiveDate') }})
    event_actors: Dict[str, str] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('eventActors') }})
    labels: Dict[str, str] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('labels') }})
    member_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('memberId') }})
    monthly_premium: float = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('monthlyPremium') }})
    name: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name') }})
    plan_enrollment_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('planEnrollmentId') }})
    plan_type: PlanEnrollmentPlanType = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('planType') }})
    sku: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sku') }})
    status: PlanEnrollmentStatus = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status') }})
    updated_at: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('updatedAt') }})
    user_roles: shared_userroles.UserRoles = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('userRoles') }})
    end_date: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('endDate') }})
    

