# generated by datamodel-codegen:
#   filename:  tmpemki45cy
#   timestamp: 2020-03-17T16:53:30+00:00

from __future__ import annotations

from enum import Enum
from typing import Any, Dict, List, Optional

from pydantic import BaseModel, Field, conint


class ActionSelect(BaseModel):
    id: str


class BackgroundColorChange(BaseModel):
    color: List[float]


class KeyboardInput(BaseModel):
    keyCode: int
    modifiers: int = Field(
        ..., description='bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt'
    )


class LoadDocument(BaseModel):
    fileName: str = Field(..., description='filename inlcuding .smash')


class ModelEntities(BaseModel):
    modelEntities: ModelEntities


class ModelEntitySelect(BaseModel):
    selectedIds: List[str]


class Type(Enum):
    up = 'up'
    down = 'down'
    move = 'move'
    dbl = 'dbl'
    wheel = 'wheel'

class OptionChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Options(BaseModel):
    options: Options


class Properties(BaseModel):
    properties: Properties


class PropertyChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Quality(BaseModel):
    quality: conint(ge=0.0, le=100.0) = Field(
        ..., description='0 means no compression, 100 lossless, default 75'
    )


class RenderImage(BaseModel):
    pass


class Resize(BaseModel):
    height: int
    width: int


class ScreenPosition(BaseModel):
    x: int
    y: int


class Tool(BaseModel):
    enabled: Optional[bool] = True
    icon: Optional[str] = None
    id: str
    label: str
    selected: Optional[bool] = False
    tooltip: str


class ToolCategory(BaseModel):
    name: str
    tools: List[Tool]


class ToolSelect(BaseModel):
    id: str


class Tools(BaseModel):
    tools: List[AnyOf[Tool, ToolCategory]]


class Actions(BaseModel):
    actions: List[Tool]


class MouseInput(BaseModel):
    button: Optional[int] = Field(
        None, description='0 = none, 1 = left, 2 = middle, 3 = right'
    )
    delta: Optional[int] = Field(None, description='Mouse wheel delta, +/- 120')
    modifiers: Optional[int] = Field(
        None, description='bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt'
    )
    pos: ScreenPosition
    type: Type
    class Config:
        use_enum_values = True



class OverlayMeasure(BaseModel):
    id: str
    pos: ScreenPosition
    unit: str
    value: str


class Render(BaseModel):
    overlayMeasures: Optional[List[OverlayMeasure]] = None
    renderImage: RenderImage


ModelEntities.update_forward_refs()
Options.update_forward_refs()
Properties.update_forward_refs()

51a28b223298c3142dd3888e9ce889b455ab0115
<mask token>


class Quality(BaseModel):
    quality: conint(ge=0.0, le=100.0) = Field(..., description=
        '0 means no compression, 100 lossless, default 75')


class RenderImage(BaseModel):
    pass


class Resize(BaseModel):
    height: int
    width: int


class ScreenPosition(BaseModel):
    x: int
    y: int


class Tool(BaseModel):
    enabled: Optional[bool] = True
    icon: Optional[str] = None
    id: str
    label: str
    selected: Optional[bool] = False
    tooltip: str


class ToolCategory(BaseModel):
    name: str
    tools: List[Tool]


class ToolSelect(BaseModel):
    id: str


class Tools(BaseModel):
    tools: List[AnyOf[Tool, ToolCategory]]


class Actions(BaseModel):
    actions: List[Tool]


class MouseInput(BaseModel):
    button: Optional[int] = Field(None, description=
        '0 = none, 1 = left, 2 = middle, 3 = right')
    delta: Optional[int] = Field(None, description='Mouse wheel delta, +/- 120'
        )
    modifiers: Optional[int] = Field(None, description=
        'bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt')
    pos: ScreenPosition
    type: Type


    class Config:
        use_enum_values = True


class OverlayMeasure(BaseModel):
    id: str
    pos: ScreenPosition
    unit: str
    value: str


class Render(BaseModel):
    overlayMeasures: Optional[List[OverlayMeasure]] = None
    renderImage: RenderImage


<mask token>

<mask token>


class Type(Enum):
    <mask token>
    <mask token>
    <mask token>
    <mask token>
    <mask token>


class OptionChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Options(BaseModel):
    options: Options


class Properties(BaseModel):
    properties: Properties


class PropertyChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Quality(BaseModel):
    quality: conint(ge=0.0, le=100.0) = Field(..., description=
        '0 means no compression, 100 lossless, default 75')


class RenderImage(BaseModel):
    pass


class Resize(BaseModel):
    height: int
    width: int


class ScreenPosition(BaseModel):
    x: int
    y: int


class Tool(BaseModel):
    enabled: Optional[bool] = True
    icon: Optional[str] = None
    id: str
    label: str
    selected: Optional[bool] = False
    tooltip: str


class ToolCategory(BaseModel):
    name: str
    tools: List[Tool]


class ToolSelect(BaseModel):
    id: str


class Tools(BaseModel):
    tools: List[AnyOf[Tool, ToolCategory]]


class Actions(BaseModel):
    actions: List[Tool]


class MouseInput(BaseModel):
    button: Optional[int] = Field(None, description=
        '0 = none, 1 = left, 2 = middle, 3 = right')
    delta: Optional[int] = Field(None, description='Mouse wheel delta, +/- 120'
        )
    modifiers: Optional[int] = Field(None, description=
        'bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt')
    pos: ScreenPosition
    type: Type


    class Config:
        use_enum_values = True


class OverlayMeasure(BaseModel):
    id: str
    pos: ScreenPosition
    unit: str
    value: str


class Render(BaseModel):
    overlayMeasures: Optional[List[OverlayMeasure]] = None
    renderImage: RenderImage


<mask token>

<mask token>


class Type(Enum):
    up = 'up'
    down = 'down'
    move = 'move'
    dbl = 'dbl'
    wheel = 'wheel'


class OptionChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Options(BaseModel):
    options: Options


class Properties(BaseModel):
    properties: Properties


class PropertyChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Quality(BaseModel):
    quality: conint(ge=0.0, le=100.0) = Field(..., description=
        '0 means no compression, 100 lossless, default 75')


class RenderImage(BaseModel):
    pass


class Resize(BaseModel):
    height: int
    width: int


class ScreenPosition(BaseModel):
    x: int
    y: int


class Tool(BaseModel):
    enabled: Optional[bool] = True
    icon: Optional[str] = None
    id: str
    label: str
    selected: Optional[bool] = False
    tooltip: str


class ToolCategory(BaseModel):
    name: str
    tools: List[Tool]


class ToolSelect(BaseModel):
    id: str


class Tools(BaseModel):
    tools: List[AnyOf[Tool, ToolCategory]]


class Actions(BaseModel):
    actions: List[Tool]


class MouseInput(BaseModel):
    button: Optional[int] = Field(None, description=
        '0 = none, 1 = left, 2 = middle, 3 = right')
    delta: Optional[int] = Field(None, description='Mouse wheel delta, +/- 120'
        )
    modifiers: Optional[int] = Field(None, description=
        'bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt')
    pos: ScreenPosition
    type: Type


    class Config:
        use_enum_values = True


class OverlayMeasure(BaseModel):
    id: str
    pos: ScreenPosition
    unit: str
    value: str


class Render(BaseModel):
    overlayMeasures: Optional[List[OverlayMeasure]] = None
    renderImage: RenderImage


<mask token>

<mask token>


class ModelEntities(BaseModel):
    modelEntities: ModelEntities


class ModelEntitySelect(BaseModel):
    selectedIds: List[str]


class Type(Enum):
    up = 'up'
    down = 'down'
    move = 'move'
    dbl = 'dbl'
    wheel = 'wheel'


class OptionChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Options(BaseModel):
    options: Options


class Properties(BaseModel):
    properties: Properties


class PropertyChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Quality(BaseModel):
    quality: conint(ge=0.0, le=100.0) = Field(..., description=
        '0 means no compression, 100 lossless, default 75')


class RenderImage(BaseModel):
    pass


class Resize(BaseModel):
    height: int
    width: int


class ScreenPosition(BaseModel):
    x: int
    y: int


class Tool(BaseModel):
    enabled: Optional[bool] = True
    icon: Optional[str] = None
    id: str
    label: str
    selected: Optional[bool] = False
    tooltip: str


class ToolCategory(BaseModel):
    name: str
    tools: List[Tool]


class ToolSelect(BaseModel):
    id: str


class Tools(BaseModel):
    tools: List[AnyOf[Tool, ToolCategory]]


class Actions(BaseModel):
    actions: List[Tool]


class MouseInput(BaseModel):
    button: Optional[int] = Field(None, description=
        '0 = none, 1 = left, 2 = middle, 3 = right')
    delta: Optional[int] = Field(None, description='Mouse wheel delta, +/- 120'
        )
    modifiers: Optional[int] = Field(None, description=
        'bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt')
    pos: ScreenPosition
    type: Type


    class Config:
        use_enum_values = True


class OverlayMeasure(BaseModel):
    id: str
    pos: ScreenPosition
    unit: str
    value: str


class Render(BaseModel):
    overlayMeasures: Optional[List[OverlayMeasure]] = None
    renderImage: RenderImage


<mask token>

# generated by datamodel-codegen:
#   filename:  tmpemki45cy
#   timestamp: 2020-03-17T16:53:30+00:00

from __future__ import annotations

from enum import Enum
from typing import Any, Dict, List, Optional

from pydantic import BaseModel, Field, conint


class ActionSelect(BaseModel):
    id: str


class BackgroundColorChange(BaseModel):
    color: List[float]


class KeyboardInput(BaseModel):
    keyCode: int
    modifiers: int = Field(
        ..., description='bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt'
    )


class LoadDocument(BaseModel):
    fileName: str = Field(..., description='filename inlcuding .smash')


class ModelEntities(BaseModel):
    modelEntities: ModelEntities


class ModelEntitySelect(BaseModel):
    selectedIds: List[str]


class Type(Enum):
    up = 'up'
    down = 'down'
    move = 'move'
    dbl = 'dbl'
    wheel = 'wheel'

class OptionChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Options(BaseModel):
    options: Options


class Properties(BaseModel):
    properties: Properties


class PropertyChange(BaseModel):
    id: str
    path: str
    value: Dict[str, Any]


class Quality(BaseModel):
    quality: conint(ge=0.0, le=100.0) = Field(
        ..., description='0 means no compression, 100 lossless, default 75'
    )


class RenderImage(BaseModel):
    pass


class Resize(BaseModel):
    height: int
    width: int


class ScreenPosition(BaseModel):
    x: int
    y: int


class Tool(BaseModel):
    enabled: Optional[bool] = True
    icon: Optional[str] = None
    id: str
    label: str
    selected: Optional[bool] = False
    tooltip: str


class ToolCategory(BaseModel):
    name: str
    tools: List[Tool]


class ToolSelect(BaseModel):
    id: str


class Tools(BaseModel):
    tools: List[AnyOf[Tool, ToolCategory]]


class Actions(BaseModel):
    actions: List[Tool]


class MouseInput(BaseModel):
    button: Optional[int] = Field(
        None, description='0 = none, 1 = left, 2 = middle, 3 = right'
    )
    delta: Optional[int] = Field(None, description='Mouse wheel delta, +/- 120')
    modifiers: Optional[int] = Field(
        None, description='bitmask: 0 = none, 1 = Shift, 2 = Ctrl, 4 = Alt'
    )
    pos: ScreenPosition
    type: Type
    class Config:
        use_enum_values = True



class OverlayMeasure(BaseModel):
    id: str
    pos: ScreenPosition
    unit: str
    value: str


class Render(BaseModel):
    overlayMeasures: Optional[List[OverlayMeasure]] = None
    renderImage: RenderImage


ModelEntities.update_forward_refs()
Options.update_forward_refs()
Properties.update_forward_refs()
