# Code generated by Lark OpenAPI.

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


class AppStat(object):
    _types = {
        "id": str,
        "name": str,
        "avg_daily_active_user_num": float,
        "avg_daily_run_num": float,
        "avg_daily_credit_usage": float,
        "total_credit_usage": float,
        "owner": LookupWithAvatar,
        "app_created_at": str,
    }

    def __init__(self, d=None):
        self.id: Optional[str] = None
        self.name: Optional[str] = None
        self.avg_daily_active_user_num: Optional[float] = None
        self.avg_daily_run_num: Optional[float] = None
        self.avg_daily_credit_usage: Optional[float] = None
        self.total_credit_usage: Optional[float] = None
        self.owner: Optional[LookupWithAvatar] = None
        self.app_created_at: Optional[str] = None
        init(self, d, self._types)

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


class AppStatBuilder(object):
    def __init__(self) -> None:
        self._app_stat = AppStat()

    def id(self, id: str) -> "AppStatBuilder":
        self._app_stat.id = id
        return self

    def name(self, name: str) -> "AppStatBuilder":
        self._app_stat.name = name
        return self

    def avg_daily_active_user_num(self, avg_daily_active_user_num: float) -> "AppStatBuilder":
        self._app_stat.avg_daily_active_user_num = avg_daily_active_user_num
        return self

    def avg_daily_run_num(self, avg_daily_run_num: float) -> "AppStatBuilder":
        self._app_stat.avg_daily_run_num = avg_daily_run_num
        return self

    def avg_daily_credit_usage(self, avg_daily_credit_usage: float) -> "AppStatBuilder":
        self._app_stat.avg_daily_credit_usage = avg_daily_credit_usage
        return self

    def total_credit_usage(self, total_credit_usage: float) -> "AppStatBuilder":
        self._app_stat.total_credit_usage = total_credit_usage
        return self

    def owner(self, owner: LookupWithAvatar) -> "AppStatBuilder":
        self._app_stat.owner = owner
        return self

    def app_created_at(self, app_created_at: str) -> "AppStatBuilder":
        self._app_stat.app_created_at = app_created_at
        return self

    def build(self) -> "AppStat":
        return self._app_stat
