from enum import StrEnum


class SalaryFrequency(StrEnum):
    MONTH = "MONTH"
    YEAR = "YEAR"
    WEEK = "WEEK"
    HOUR = "HOUR"

class RemoteType(StrEnum):
    ONSITE = "ONSITE"
    HYBRID = "HYBRID"
    REMOTE = "REMOTE"

class JobCategory(StrEnum):
    # Customer-facing & commercial
    CUSTOMER_SERVICE = "CUSTOMER_SERVICE"
    SALES = "SALES"
    BUSINESS_DEVELOPMENT = "BUSINESS_DEVELOPMENT"
    ACCOUNT_MANAGEMENT = "ACCOUNT_MANAGEMENT"

    # Marketing & communication
    MARKETING = "MARKETING"
    COMMUNICATIONS_PR = "COMMUNICATIONS_PR"
    CONTENT_COPY = "CONTENT_COPY"
    BRAND = "BRAND"
    EVENTS = "EVENTS"
    DIGITAL_MARKETING = "DIGITAL_MARKETING"

    # People & organization
    HR = "HR"
    RECRUITMENT = "RECRUITMENT"
    LEARNING_AND_DEVELOPMENT = "LEARNING_AND_DEVELOPMENT"

    # Finance & legal
    FINANCE_ACCOUNTING = "FINANCE_ACCOUNTING"
    CONTROLLING = "CONTROLLING"
    LEGAL = "LEGAL"
    COMPLIANCE_RISK = "COMPLIANCE_RISK"

    # Tech
    IT_SUPPORT = "IT_SUPPORT"
    SOFTWARE_ENGINEERING = "SOFTWARE_ENGINEERING"
    DATA_ANALYTICS = "DATA_ANALYTICS"
    DATA_SCIENCE_ML = "DATA_SCIENCE_ML"
    DEVOPS_SRE = "DEVOPS_SRE"
    SECURITY = "SECURITY"
    QA_TESTING = "QA_TESTING"
    PRODUCT_MANAGEMENT = "PRODUCT_MANAGEMENT"
    PROJECT_MANAGEMENT = "PROJECT_MANAGEMENT"
    UX_UI_DESIGN = "UX_UI_DESIGN"

    # Operations & supply chain
    OPERATIONS = "OPERATIONS"
    PROCUREMENT = "PROCUREMENT"
    LOGISTICS_SUPPLY_CHAIN = "LOGISTICS_SUPPLY_CHAIN"
    TRANSPORT = "TRANSPORT"
    WAREHOUSE = "WAREHOUSE"
    ADMINISTRATION = "ADMINISTRATION"
    OFFICE_MANAGEMENT = "OFFICE_MANAGEMENT"
    FACILITY_MANAGEMENT = "FACILITY_MANAGEMENT"

    # Skilled trades & industry
    ENGINEERING_TECHNICAL = "ENGINEERING_TECHNICAL"
    MAINTENANCE = "MAINTENANCE"
    MANUFACTURING_PRODUCTION = "MANUFACTURING_PRODUCTION"
    QUALITY_MANUFACTURING = "QUALITY_MANUFACTURING"
    CONSTRUCTION_INSTALLATION = "CONSTRUCTION_INSTALLATION"
    ENERGY_UTILITIES = "ENERGY_UTILITIES"

    # Sector-specific
    HEALTHCARE_MEDICAL = "HEALTHCARE_MEDICAL"
    EDUCATION_TRAINING = "EDUCATION_TRAINING"
    RESEARCH_SCIENCE = "RESEARCH_SCIENCE"
    GOVERNMENT_NONPROFIT = "GOVERNMENT_NONPROFIT"
    SECURITY_DEFENSE = "SECURITY_DEFENSE"

    # Retail & hospitality
    RETAIL = "RETAIL"
    HOSPITALITY = "HOSPITALITY"
    FOOD_SERVICE = "FOOD_SERVICE"

    # Creative & media
    DESIGN_CREATIVE = "DESIGN_CREATIVE"
    MEDIA_JOURNALISM = "MEDIA_JOURNALISM"

    # Consulting & advisory
    CONSULTING_ADVISORY = "CONSULTING_ADVISORY"

    OTHER = "OTHER"


class IndustryCategory(StrEnum):
    UNSPECIFIED = "UNSPECIFIED"

    ICT = "ICT"
    GOVERNMENT_NONPROFIT = "GOVERNMENT_NONPROFIT"
    FASHION_TEXTILES_COSMETICS = "FASHION_TEXTILES_COSMETICS"
    WHOLESALE_TRADE = "WHOLESALE_TRADE"
    BANKING_FINANCIAL_SERVICES = "BANKING_FINANCIAL_SERVICES"
    AUTOMOTIVE = "AUTOMOTIVE"
    INTERNET_SERVICES = "INTERNET_SERVICES"
    CONSULTING_ADVISORY = "CONSULTING_ADVISORY"
    RETAIL = "RETAIL"
    CONSTRUCTION_INSTALLATION = "CONSTRUCTION_INSTALLATION"
    TELECOMMUNICATIONS = "TELECOMMUNICATIONS"
    HOSPITALITY = "HOSPITALITY"
    CHEMICALS_PETROCHEMICALS = "CHEMICALS_PETROCHEMICALS"
    FACILITY_SERVICES = "FACILITY_SERVICES"
    INSURANCE = "INSURANCE"
    ENGINEERING_TECHNICAL = "ENGINEERING_TECHNICAL"
    EDUCATION_TRAINING = "EDUCATION_TRAINING"
    SPORTS_RECREATION_TOURISM = "SPORTS_RECREATION_TOURISM"
    INDUSTRIAL_MANUFACTURING = "INDUSTRIAL_MANUFACTURING"
    ELECTRONICS = "ELECTRONICS"
    FMCG = "FMCG"
    SECURITY_SERVICES = "SECURITY_SERVICES"
    BUSINESS_SERVICES = "BUSINESS_SERVICES"
    PASSENGER_TRANSPORT = "PASSENGER_TRANSPORT"
    STAFFING_RECRUITMENT = "STAFFING_RECRUITMENT"
    PHARMACEUTICALS = "PHARMACEUTICALS"
    AGRICULTURE_FORESTRY_FISHING = "AGRICULTURE_FORESTRY_FISHING"
    WASTE_ENVIRONMENT = "WASTE_ENVIRONMENT"
    MARITIME = "MARITIME"
    REAL_ESTATE = "REAL_ESTATE"
    LOGISTICS_TRANSPORT_DISTRIBUTION = "LOGISTICS_TRANSPORT_DISTRIBUTION"
    HEALTHCARE_WELLBEING = "HEALTHCARE_WELLBEING"
    LEGAL_SERVICES = "LEGAL_SERVICES"
    ACCOUNTING_AUDIT = "ACCOUNTING_AUDIT"
    ADVERTISING_PR_COMMUNICATIONS = "ADVERTISING_PR_COMMUNICATIONS"
    ARTS_CULTURE_ENTERTAINMENT = "ARTS_CULTURE_ENTERTAINMENT"
    MEDIA_PUBLISHING_BROADCASTING = "MEDIA_PUBLISHING_BROADCASTING"
    ENERGY_UTILITIES = "ENERGY_UTILITIES"

    OTHER = "OTHER"

class ExperienceLevel(StrEnum):
    UNSPECIFIED = "UNSPECIFIED"

    INTERN = "INTERN"
    ENTRY_LEVEL = "ENTRY_LEVEL"
    JUNIOR = "JUNIOR"
    MID_LEVEL = "MID_LEVEL"
    SENIOR = "SENIOR"
    LEAD = "LEAD"
    MANAGER = "MANAGER"
    SENIOR_MANAGER = "SENIOR_MANAGER"
    DIRECTOR = "DIRECTOR"
    EXECUTIVE = "EXECUTIVE"

    OTHER = "OTHER"

class Education(StrEnum):
    UNSPECIFIED = "UNSPECIFIED"

    # ISCED 2011 niveaus (UNESCO)
    NO_FORMAL_EDUCATION = "NO_FORMAL_EDUCATION"
    PRIMARY = "PRIMARY"
    LOWER_SECONDARY = "LOWER_SECONDARY"
    UPPER_SECONDARY = "UPPER_SECONDARY"
    POST_SECONDARY_NON_TERTIARY = "POST_SECONDARY_NON_TERTIARY"
    SHORT_CYCLE_TERTIARY = "SHORT_CYCLE_TERTIARY"
    BACHELOR = "BACHELOR"
    MASTER = "MASTER"
    DOCTORATE = "DOCTORATE"
    POSTDOCTORAL = "POSTDOCTORAL"

    OTHER = "OTHER"

class ContractType(StrEnum):
    UNSPECIFIED = "UNSPECIFIED"

    PERMANENT = "PERMANENT"              # indefinite / open-ended
    TEMPORARY = "TEMPORARY"              # fixed-term
    CONTRACTOR = "CONTRACTOR"            # contractor / 1099 / zelfstandige (zonder payroll)
    FREELANCE = "FREELANCE"              # freelancer (overlaps contractor; keep if channels distinguish)
    SELF_EMPLOYED = "SELF_EMPLOYED"      # zzp / independent (if you want explicit)
    INTERIM = "INTERIM"                  # interim assignment

    INTERN = "INTERN"                    # internship / stage
    APPRENTICESHIP = "APPRENTICESHIP"    # leer-werk / dual / BBL
    TEMP_AGENCY = "TEMP_AGENCY"          # via uitzendbureau / staffing
    VOLUNTEER = "VOLUNTEER"              # volunteer
    SEASONAL = "SEASONAL"                # seasonal work
    STUDENT_JOB = "STUDENT_JOB"          # part-time student job / bijbaan
    HOLIDAY_JOB = "HOLIDAY_JOB"          # vacation job

    FRANCHISE = "FRANCHISE"              # franchise / zelfstandige formule

    OTHER = "OTHER"