from typing import override

from flut._flut.engine import FlutImmutableObject


class Curve(FlutImmutableObject):
    def __init__(self, kind: str):
        super().__init__("Curve")
        self.kind = kind

    @override
    def _flut_pack(self) -> dict:
        result = self._flut_base_props()
        result["kind"] = self.kind
        return result


class Curves:
    linear = Curve("linear")
    decelerate = Curve("decelerate")
    ease = Curve("ease")
    easeIn = Curve("easeIn")
    easeOut = Curve("easeOut")
    easeInOut = Curve("easeInOut")
    fastOutSlowIn = Curve("fastOutSlowIn")
