# Code generated by Lark OpenAPI.

from typing import Any, Optional, Union, Dict, List, Set, IO, Callable, Type
from lark_oapi.core.construct import init


class Shadow(object):
    _types = {
        "color": str,
        "blur": int,
        "offset_x": int,
        "offset_y": int,
        "opacity": float,
    }

    def __init__(self, d=None):
        self.color: Optional[str] = None
        self.blur: Optional[int] = None
        self.offset_x: Optional[int] = None
        self.offset_y: Optional[int] = None
        self.opacity: Optional[float] = None
        init(self, d, self._types)

    @staticmethod
    def builder() -> "ShadowBuilder":
        return ShadowBuilder()


class ShadowBuilder(object):
    def __init__(self) -> None:
        self._shadow = Shadow()

    def color(self, color: str) -> "ShadowBuilder":
        self._shadow.color = color
        return self

    def blur(self, blur: int) -> "ShadowBuilder":
        self._shadow.blur = blur
        return self

    def offset_x(self, offset_x: int) -> "ShadowBuilder":
        self._shadow.offset_x = offset_x
        return self

    def offset_y(self, offset_y: int) -> "ShadowBuilder":
        self._shadow.offset_y = offset_y
        return self

    def opacity(self, opacity: float) -> "ShadowBuilder":
        self._shadow.opacity = opacity
        return self

    def build(self) -> "Shadow":
        return self._shadow
