# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: gcsdk_gcmessages.proto
# plugin: python-betterproto

from dataclasses import dataclass

import betterproto

from ....protobufs.msg import GCProtobufMessage
from ..enums import EMsg


class PartnerAccountType(betterproto.Enum):
    NONE = 0
    PerfectWorld = 1
    Nexon = 2


class GCConnectionStatus(betterproto.Enum):
    HaveSession = 0
    GcGoingDown = 1
    NoSession = 2
    NoSessionInLogonQueue = 3
    NoSteam = 4
    Suspended = 5


@dataclass(eq=False, repr=False)
class IDOwner(betterproto.Message):
    type: int = betterproto.uint32_field(1)
    id: int = betterproto.uint64_field(2)


class SOUpdate(GCProtobufMessage, msg=EMsg.SOUpdate):
    owner: int = betterproto.fixed64_field(1)
    type_id: int = betterproto.int32_field(2)
    object_data: bytes = betterproto.bytes_field(3)
    version: int = betterproto.fixed64_field(4)
    owner_soid: "IDOwner" = betterproto.message_field(5)
    service_id: int = betterproto.uint32_field(6)


class SOCreate(GCProtobufMessage, msg=EMsg.SOCreate):
    owner: int = betterproto.fixed64_field(1)
    type_id: int = betterproto.int32_field(2)
    object_data: bytes = betterproto.bytes_field(3)
    version: int = betterproto.fixed64_field(4)
    owner_soid: "IDOwner" = betterproto.message_field(5)
    service_id: int = betterproto.uint32_field(6)


class SODestroy(GCProtobufMessage, msg=EMsg.SODestroy):
    owner: int = betterproto.fixed64_field(1)
    type_id: int = betterproto.int32_field(2)
    object_data: bytes = betterproto.bytes_field(3)
    version: int = betterproto.fixed64_field(4)
    owner_soid: "IDOwner" = betterproto.message_field(5)
    service_id: int = betterproto.uint32_field(6)


class GameServerResetIdentityResponse(GCProtobufMessage, msg=EMsg.GameServerResetIdentityResponse):
    owner: int = betterproto.fixed64_field(1)
    type_id: int = betterproto.int32_field(2)
    object_data: bytes = betterproto.bytes_field(3)
    version: int = betterproto.fixed64_field(4)
    owner_soid: "IDOwner" = betterproto.message_field(5)
    service_id: int = betterproto.uint32_field(6)


class MultipleObjects(GCProtobufMessage, msg=EMsg.SOUpdateMultiple):
    owner: int = betterproto.fixed64_field(1)
    objects: "list[MultipleObjectsSingleObject]" = betterproto.message_field(2)
    version: int = betterproto.fixed64_field(3)
    owner_soid: "IDOwner" = betterproto.message_field(6)
    service_id: int = betterproto.uint32_field(7)


@dataclass(eq=False, repr=False)
class MultipleObjectsSingleObject(betterproto.Message):
    type_id: int = betterproto.int32_field(1)
    object_data: bytes = betterproto.bytes_field(2)


class CacheSubscribed(GCProtobufMessage, msg=EMsg.SOCacheSubscribed):
    owner: int = betterproto.fixed64_field(1)
    objects: "list[CacheSubscribedSubscribedType]" = betterproto.message_field(2)
    version: int = betterproto.fixed64_field(3)
    owner_soid: "IDOwner" = betterproto.message_field(4)
    service_id: int = betterproto.uint32_field(5)
    service_list: list[int] = betterproto.uint32_field(6)
    sync_version: int = betterproto.fixed64_field(7)


@dataclass(eq=False, repr=False)
class CacheSubscribedSubscribedType(betterproto.Message):
    type_id: int = betterproto.int32_field(1)
    object_data: list[bytes] = betterproto.bytes_field(2)


@dataclass(eq=False, repr=False)
class CacheSubscribedUpToDate(betterproto.Message):
    version: int = betterproto.fixed64_field(1)
    owner_soid: "IDOwner" = betterproto.message_field(2)
    service_id: int = betterproto.uint32_field(3)
    service_list: list[int] = betterproto.uint32_field(4)
    sync_version: int = betterproto.fixed64_field(5)


@dataclass(eq=False, repr=False)
class CacheUnsubscribed(betterproto.Message):
    owner: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class CacheSubscriptionCheck(betterproto.Message):
    owner: int = betterproto.fixed64_field(1)
    version: int = betterproto.fixed64_field(2)
    owner_soid: "IDOwner" = betterproto.message_field(3)
    service_id: int = betterproto.uint32_field(4)
    service_list: list[int] = betterproto.uint32_field(5)
    sync_version: int = betterproto.fixed64_field(6)


class CacheSubscriptionRefresh(GCProtobufMessage, msg=EMsg.SOCacheSubscriptionRefresh):
    owner: int = betterproto.fixed64_field(1)
    owner_soid: "IDOwner" = betterproto.message_field(2)


@dataclass(eq=False, repr=False)
class CacheVersion(betterproto.Message):
    version: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class CMultiplexMessage(betterproto.Message):
    msgtype: int = betterproto.uint32_field(1)
    payload: bytes = betterproto.bytes_field(2)
    steamids: list[float] = betterproto.fixed64_field(3)


@dataclass(eq=False, repr=False)
class MasterAck(betterproto.Message):
    dir_index: int = betterproto.uint32_field(1)
    machine_name: str = betterproto.string_field(3)
    process_name: str = betterproto.string_field(4)
    type_instances: list[int] = betterproto.uint32_field(5)


@dataclass(eq=False, repr=False)
class MasterAckResponse(betterproto.Message):
    eresult: int = betterproto.int32_field(1)


@dataclass(eq=False, repr=False)
class MasterStartupComplete(betterproto.Message):
    gc_info: "list[MasterStartupCompleteGCInfo]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class MasterStartupCompleteGCInfo(betterproto.Message):
    dir_index: int = betterproto.uint32_field(1)
    machine_name: str = betterproto.string_field(2)


@dataclass(eq=False, repr=False)
class Routed(betterproto.Message):
    msg_type: int = betterproto.uint32_field(1)
    sender_id: int = betterproto.fixed64_field(2)
    net_message: bytes = betterproto.bytes_field(3)


@dataclass(eq=False, repr=False)
class RoutedReply(betterproto.Message):
    msg_type: int = betterproto.uint32_field(1)
    net_message: bytes = betterproto.bytes_field(2)


@dataclass(eq=False, repr=False)
class UpdateSubGCSessionInfo(betterproto.Message):
    updates: "list[UpdateSubGCSessionInfoUpdate]" = betterproto.message_field(1)


@dataclass(eq=False, repr=False)
class UpdateSubGCSessionInfoUpdate(betterproto.Message):
    steamid: int = betterproto.fixed64_field(1)
    ip: float = betterproto.fixed32_field(2)
    trusted: bool = betterproto.bool_field(3)


@dataclass(eq=False, repr=False)
class RequestSubGCSessionInfo(betterproto.Message):
    steamid: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class RequestSubGCSessionInfoResponse(betterproto.Message):
    ip: float = betterproto.fixed32_field(1)
    trusted: bool = betterproto.bool_field(2)


@dataclass(eq=False, repr=False)
class ToGCIncrementRecruitmentLevel(betterproto.Message):
    steamid: int = betterproto.fixed64_field(1)


@dataclass(eq=False, repr=False)
class CacheHaveVersion(betterproto.Message):
    soid: "IDOwner" = betterproto.message_field(1)
    version: int = betterproto.fixed64_field(2)
    service_id: int = betterproto.uint32_field(3)


@dataclass(eq=False, repr=False)
class ConnectionStatus(betterproto.Message):
    status: "GCConnectionStatus" = betterproto.enum_field(1)
    client_session_need: int = betterproto.uint32_field(2)
    queue_position: int = betterproto.int32_field(3)
    queue_size: int = betterproto.int32_field(4)
    wait_seconds: int = betterproto.int32_field(5)
    estimated_wait_seconds_remaining: int = betterproto.int32_field(6)


@dataclass(eq=False, repr=False)
class CacheSubscribe(betterproto.Message):
    subscriber: int = betterproto.fixed64_field(1)
    subscribe_to: int = betterproto.fixed64_field(2)
    sync_version: int = betterproto.fixed64_field(3)
    have_versions: "list[CacheSubscribeHaveVersions]" = betterproto.message_field(4)


@dataclass(eq=False, repr=False)
class CacheSubscribeHaveVersions(betterproto.Message):
    service_id: int = betterproto.uint32_field(1)
    version: int = betterproto.uint64_field(2)


@dataclass(eq=False, repr=False)
class CacheUnsubscribe(betterproto.Message):
    subscriber: int = betterproto.fixed64_field(1)
    unsubscribe_from: int = betterproto.fixed64_field(2)


@dataclass(eq=False, repr=False)
class ClientPing(betterproto.Message):
    pass
