from __future__ import annotations

from io import BytesIO

from pyrogram.raw.core.primitives import Int, Long, Int128, Int256, Bool, Bytes, String, Double, Vector
from pyrogram.raw.core import TLObject
from pyrogram import raw
from typing import Any

{warning}


class {name}({base}):
    """{docstring}
    """

    __slots__: list[str] = [{slots}]

    ID = {id}
    QUALNAME = "{qualname}"

    def __init__(self{arguments}) -> None:
        {fields}

    @classmethod
    def read(cls, b: BytesIO, *args: Any) -> "{name}":
        {read_types}
        return cls({return_arguments})

    def write(self, *args) -> bytes:
        b = BytesIO()
        b.write(Int(self.ID, False))

        {write_types}
        return b.getvalue()
