from enum import Enum

# Enums for Job Status
class JobStatus(str, Enum):
    IDLE = "idle"
    PENDING = "pending"
    RUNNING = "running"
    COMPLETED = "completed"
    CANCELLED = "cancelled"
    FAILED_TO_SCHEDULE = "failedToSchedule"
    FAILED = "failed"

# Enums for Job Execution Status
class JobExecutionStatus(str, Enum):
    SUCCESS = "success"
    ERROR = "error"

# Enums for Job Task Types
class JobTaskType(str, Enum):
    WEB_PAGE_AS_HTML = "webPageAsHTML"
    WEB_PAGE_METADATA = "webPageMetadata"
    WEB_SCREEN_CAPTURE = "webScreenCapture"
    WEB_PAGE_AS_MARKDOWN = "webPageAsMarkdown"
    SPECIFIC_DATA_EXTRACTION = "specificDataExtraction"

# Enums for Specific Data Extraction Types
class SpecificDataExtractionType(str, Enum):
    STRUCTURED_DATA = "structuredData"
    FORM_DATA = "formData"
    TABLE_DATA = "tableData"
    URLS = "urls"
    IMAGE_LINKS = "imageLinks"
    VIDEO_LINKS = "videoLinks"
    FILE_LINKS = "fileLinks"
    HEADINGS = "headings"
    PHONE_NUMBERS = "phoneNumbers"
    EMAIL_ADDRESSES = "emailAddresses"
    SOCIAL_MEDIA_LINKS = "socialMediaLinks"
    CUSTOM = "custom"

# Enums for Structured Data Extraction Attributes
class StructuredDataExtractionAttribute(str, Enum):
    INNER_TEXT = "innerText"
    TEXT_CONTENT = "textContent"
    HREF = "href"
    SRC = "src"
    ALT = "alt"
    TITLE = "title"
    VALUE = "value"
    CLASS = "class"
    ID = "id"
    NAME = "name"
    TYPE = "type"
    PLACEHOLDER = "placeholder"
    DATA = "data"
    ARIA_LABEL = "ariaLabel"
    TARGET = "target"
    REL = "rel"
    CHECKED = "checked"
    SELECTED = "selected"
    CONTENT = "content"
    PROPERTY = "property"
    CUSTOM = "custom"

# Enums for Specific Data Extraction Output Formats
class SpecificDataExtractionOutputFormat(str, Enum):
    SINGLE_LIST = "singleList"
    SPLIT_BY_PAGE = "splitByPage"

# Enums for Web Screen Capture Formats
class WebScreenCaptureFormat(str, Enum):
    WEBP = "WEBP"
    JPEG = "JPEG"
    PNG = "PNG"
    PDF = "PDF"

# Enums for PDF Paper Formats
class PdfPaperFormat(str, Enum):
    LETTER = "letter"
    LEGAL = "legal"
    TABLOID = "tabloid"
    LEDGER = "ledger"
    A0 = "a0"
    A1 = "a1"
    A2 = "a2"
    A3 = "a3"
    A4 = "a4"
    A5 = "a5"
    A6 = "a6"

# Enums for PDF Orientation
class PdfOrientation(str, Enum):
    LANDSCAPE = "Landscape"
    PORTRAIT = "Portrait"

# Enums for Job Schedule Policies
class JobSchedulePolicy(str, Enum):
    REMAIN_IDLE = "remainIdle"
    IMMEDIATELY = "immediately"
    ONCE_AT = "onceAt"

# Enums for Job Navigation Types
class JobNavigationType(str, Enum):
    NONE = "none"
    LINEAR = "linear"
    BREADTH_FIRST = "breadthFirst"
    CUSTOM_PATH = "customPath"

# Enums for Puppet Device Types
class PuppetDeviceType(str, Enum):
    GENERIC = "Generic"
    BLACKBERRY_PLAYBOOK = "Blackberry PlayBook"
    BLACKBERRY_PLAYBOOK_LANDSCAPE = "Blackberry PlayBook landscape"
    BLACKBERRY_Z30 = "BlackBerry Z30"
    BLACKBERRY_Z30_LANDSCAPE = "BlackBerry Z30 landscape"
    GALAXY_NOTE_3 = "Galaxy Note 3"
    GALAXY_NOTE_3_LANDSCAPE = "Galaxy Note 3 landscape"
    GALAXY_NOTE_II = "Galaxy Note II"
    GALAXY_NOTE_II_LANDSCAPE = "Galaxy Note II landscape"
    GALAXY_S_III = "Galaxy S III"
    GALAXY_S_III_LANDSCAPE = "Galaxy S III landscape"
    GALAXY_S5 = "Galaxy S5"
    GALAXY_S5_LANDSCAPE = "Galaxy S5 landscape"
    GALAXY_S8 = "Galaxy S8"
    GALAXY_S8_LANDSCAPE = "Galaxy S8 landscape"
    GALAXY_S9_PLUS = "Galaxy S9+"
    GALAXY_S9_PLUS_LANDSCAPE = "Galaxy S9+ landscape"
    GALAXY_TAB_S4 = "Galaxy Tab S4"
    GALAXY_TAB_S4_LANDSCAPE = "Galaxy Tab S4 landscape"
    IPAD = "iPad"
    IPAD_LANDSCAPE = "iPad landscape"
    IPAD_GEN_6 = "iPad (gen 6)"
    IPAD_GEN_6_LANDSCAPE = "iPad (gen 6) landscape"
    IPAD_GEN_7 = "iPad (gen 7)"
    IPAD_GEN_7_LANDSCAPE = "iPad (gen 7) landscape"
    IPAD_MINI = "iPad Mini"
    IPAD_MINI_LANDSCAPE = "iPad Mini landscape"
    IPAD_PRO = "iPad Pro"
    IPAD_PRO_LANDSCAPE = "iPad Pro landscape"
    IPAD_PRO_11 = "iPad Pro 11"
    IPAD_PRO_11_LANDSCAPE = "iPad Pro 11 landscape"
    IPHONE_4 = "iPhone 4"
    IPHONE_4_LANDSCAPE = "iPhone 4 landscape"
    IPHONE_5 = "iPhone 5"
    IPHONE_5_LANDSCAPE = "iPhone 5 landscape"
    IPHONE_6 = "iPhone 6"
    IPHONE_6_LANDSCAPE = "iPhone 6 landscape"
    IPHONE_6_PLUS = "iPhone 6 Plus"
    IPHONE_6_PLUS_LANDSCAPE = "iPhone 6 Plus landscape"
    IPHONE_7 = "iPhone 7"
    IPHONE_7_LANDSCAPE = "iPhone 7 landscape"
    IPHONE_7_PLUS = "iPhone 7 Plus"
    IPHONE_7_PLUS_LANDSCAPE = "iPhone 7 Plus landscape"
    IPHONE_8 = "iPhone 8"
    IPHONE_8_LANDSCAPE = "iPhone 8 landscape"
    IPHONE_8_PLUS = "iPhone 8 Plus"
    IPHONE_8_PLUS_LANDSCAPE = "iPhone 8 Plus landscape"
    IPHONE_SE = "iPhone SE"
    IPHONE_SE_LANDSCAPE = "iPhone SE landscape"
    IPHONE_X = "iPhone X"
    IPHONE_X_LANDSCAPE = "iPhone X landscape"
    IPHONE_XR = "iPhone XR"
    IPHONE_XR_LANDSCAPE = "iPhone XR landscape"
    IPHONE_11 = "iPhone 11"
    IPHONE_11_LANDSCAPE = "iPhone 11 landscape"
    IPHONE_11_PRO = "iPhone 11 Pro"
    IPHONE_11_PRO_LANDSCAPE = "iPhone 11 Pro landscape"
    IPHONE_11_PRO_MAX = "iPhone 11 Pro Max"
    IPHONE_11_PRO_MAX_LANDSCAPE = "iPhone 11 Pro Max landscape"
    IPHONE_12 = "iPhone 12"
    IPHONE_12_LANDSCAPE = "iPhone 12 landscape"
    IPHONE_12_PRO = "iPhone 12 Pro"
    IPHONE_12_PRO_LANDSCAPE = "iPhone 12 Pro landscape"
    IPHONE_12_PRO_MAX = "iPhone 12 Pro Max"
    IPHONE_12_PRO_MAX_LANDSCAPE = "iPhone 12 Pro Max landscape"
    IPHONE_12_MINI = "iPhone 12 Mini"
    IPHONE_12_MINI_LANDSCAPE = "iPhone 12 Mini landscape"
    IPHONE_13 = "iPhone 13"
    IPHONE_13_LANDSCAPE = "iPhone 13 landscape"
    IPHONE_13_PRO = "iPhone 13 Pro"
    IPHONE_13_PRO_LANDSCAPE = "iPhone 13 Pro landscape"
    IPHONE_13_PRO_MAX = "iPhone 13 Pro Max"
    IPHONE_13_PRO_MAX_LANDSCAPE = "iPhone 13 Pro Max landscape"
    IPHONE_13_MINI = "iPhone 13 Mini"
    IPHONE_13_MINI_LANDSCAPE = "iPhone 13 Mini landscape"
    IPHONE_14 = "iPhone 14"
    IPHONE_14_LANDSCAPE = "iPhone 14 landscape"
    IPHONE_14_PLUS = "iPhone 14 Plus"
    IPHONE_14_PLUS_LANDSCAPE = "iPhone 14 Plus landscape"
    IPHONE_14_PRO = "iPhone 14 Pro"
    IPHONE_14_PRO_LANDSCAPE = "iPhone 14 Pro landscape"
    IPHONE_14_PRO_MAX = "iPhone 14 Pro Max"
    IPHONE_14_PRO_MAX_LANDSCAPE = "iPhone 14 Pro Max landscape"
    IPHONE_15 = "iPhone 15"
    IPHONE_15_LANDSCAPE = "iPhone 15 landscape"
    IPHONE_15_PLUS = "iPhone 15 Plus"
    IPHONE_15_PLUS_LANDSCAPE = "iPhone 15 Plus landscape"
    IPHONE_15_PRO = "iPhone 15 Pro"
    IPHONE_15_PRO_LANDSCAPE = "iPhone 15 Pro landscape"
    IPHONE_15_PRO_MAX = "iPhone 15 Pro Max"
    IPHONE_15_PRO_MAX_LANDSCAPE = "iPhone 15 Pro Max landscape"
    JIOPHONE_2 = "JioPhone 2"
    JIOPHONE_2_LANDSCAPE = "JioPhone 2 landscape"
    KINDLE_FIRE_HDX = "Kindle Fire HDX"
    KINDLE_FIRE_HDX_LANDSCAPE = "Kindle Fire HDX landscape"
    LG_OPTIMUS_L70 = "LG Optimus L70"
    LG_OPTIMUS_L70_LANDSCAPE = "LG Optimus L70 landscape"
    MICROSOFT_LUMIA_550 = "Microsoft Lumia 550"
    MICROSOFT_LUMIA_950 = "Microsoft Lumia 950"
    MICROSOFT_LUMIA_950_LANDSCAPE = "Microsoft Lumia 950 landscape"
    NEXUS_10 = "Nexus 10"
    NEXUS_10_LANDSCAPE = "Nexus 10 landscape"
    NEXUS_4 = "Nexus 4"
    NEXUS_4_LANDSCAPE = "Nexus 4 landscape"
    NEXUS_5 = "Nexus 5"
    NEXUS_5_LANDSCAPE = "Nexus 5 landscape"
    NEXUS_5X = "Nexus 5X"
    NEXUS_5X_LANDSCAPE = "Nexus 5X landscape"
    NEXUS_6 = "Nexus 6"
    NEXUS_6_LANDSCAPE = "Nexus 6 landscape"
    NEXUS_6P = "Nexus 6P"
    NEXUS_6P_LANDSCAPE = "Nexus 6P landscape"
    NEXUS_7 = "Nexus 7"
    NEXUS_7_LANDSCAPE = "Nexus 7 landscape"
    NOKIA_LUMIA_520 = "Nokia Lumia 520"
    NOKIA_LUMIA_520_LANDSCAPE = "Nokia Lumia 520 landscape"
    NOKIA_N9 = "Nokia N9"
    NOKIA_N9_LANDSCAPE = "Nokia N9 landscape"
    PIXEL_2 = "Pixel 2"
    PIXEL_2_LANDSCAPE = "Pixel 2 landscape"
    PIXEL_2_XL = "Pixel 2 XL"
    PIXEL_2_XL_LANDSCAPE = "Pixel 2 XL landscape"
    PIXEL_3 = "Pixel 3"
    PIXEL_3_LANDSCAPE = "Pixel 3 landscape"
    PIXEL_4 = "Pixel 4"
    PIXEL_4_LANDSCAPE = "Pixel 4 landscape"
    PIXEL_4A_5G = "Pixel 4a (5G)"
    PIXEL_4A_5G_LANDSCAPE = "Pixel 4a (5G) landscape"
    PIXEL_5 = "Pixel 5"
    PIXEL_5_LANDSCAPE = "Pixel 5 landscape"
    MOTO_G4 = "Moto G4"
    MOTO_G4_LANDSCAPE = "Moto G4 landscape"

# Enums for Puppet Regions
class PuppetRegion(str, Enum):
    US = "US"
    DE = "DE"
    FR = "FR"
    IT = "IT"
    UA = "UA"

# Enums for Web Data Selector Types
class WebDataSelectorType(str, Enum):
    NONE = "none"
    CSS = "css"
    XPATH = "xpath"
