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

from __future__ import annotations
import dataclasses
from dataclasses_json import Undefined, dataclass_json
from enum import Enum
from leonardoaisdk import utils
from typing import Optional


class InitImageType(str, Enum):
    r"""Type indicating whether the init image is uploaded or generated."""
    GENERATED = 'GENERATED'
    UPLOADED = 'UPLOADED'


class StrengthType(str, Enum):
    r"""Strength type for the controlnet. Can only be used for Style, Character and Content Reference controlnets."""
    LOW = 'Low'
    MID = 'Mid'
    HIGH = 'High'
    ULTRA = 'Ultra'
    MAX = 'Max'


@dataclass_json(undefined=Undefined.EXCLUDE)
@dataclasses.dataclass
class ControlnetInput:
    UNSET='__SPEAKEASY_UNSET__'
    init_image_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('initImageId'), 'exclude': lambda f: f is None }})
    r"""The ID of the init image"""
    init_image_type: Optional[InitImageType] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('initImageType'), 'exclude': lambda f: f is None }})
    r"""Type indicating whether the init image is uploaded or generated."""
    preprocessor_id: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('preprocessorId'), 'exclude': lambda f: f is None }})
    r"""ID of the controlnet. A list of compatible IDs can be found in our guides."""
    strength_type: Optional[StrengthType] = dataclasses.field(default=UNSET, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('strengthType'), 'exclude': lambda f: f is ControlnetInput.UNSET }})
    r"""Strength type for the controlnet. Can only be used for Style, Character and Content Reference controlnets."""
    weight: Optional[float] = dataclasses.field(default=UNSET, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('weight'), 'exclude': lambda f: f is ControlnetInput.UNSET }})
    r"""Weight for the controlnet"""
    

