# This file was generated by liblab | https://liblab.com/

from __future__ import annotations
from .base import BaseModel
from typing import List
from enum import Enum
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from .FunctionParameter import FunctionParameter


class Type_(Enum):
    OBJECT = "object"

    def list():
        return list(map(lambda x: x.value, Type_._member_map_.values()))


class Properties(dict):
    def __init__(self, *args, **kwargs):
        dict.__init__(self, *args, **kwargs)


class FunctionParameters(BaseModel):
    """
    Tools Function Parameters
    """

    def __init__(
        self, type: Type_, required: List[str], properties: Properties, **kwargs
    ):
        """
        Initialize FunctionParameters
        Parameters:
        ----------
            type: str
            required: list of FunctionParametersRequired
            properties: Properties
        """
        self.type = self._enum_matching(type, Type_.list(), "type")
        self.required = required
        self.properties = properties
