import inspect
from dataclasses import dataclass
from typing import Optional

from V2.functions.Users.main import User


@dataclass
class Params:
    currentUser: User | None
    hostname: str
    id:Optional[str]
    args:dict

    @classmethod
    def from_dict(cls, data):      
        return cls(**{
            k: data.get(k) for k in inspect.signature(cls).parameters
        })


@dataclass
class PublicParams:
    hostname: str
    id:Optional[str]
    args:dict
    headers:dict | None
    enterprise : dict | None

    @classmethod
    def from_dict(cls, data):      
        return cls(**{
            k: data.get(k) for k in inspect.signature(cls).parameters
        })