class Event:
    AdditionalContentLoaded = 'AdditionalContentLoaded'
    AgentCommand = 'AgentCommand'
    AgentCreated = 'AgentCreated'
    ApiInit = 'ApiInit'
    AppPaused = 'AppPaused'
    AppResumed = 'AppResumed'
    AppSuspended = 'AppSuspended'
    AwardAchievement = 'AwardAchievement'
    BlockBroken = 'BlockBroken'
    BlockPlaced = 'BlockPlaced'
    BoardTextUpdated = 'BoardTextUpdated'
    BossKilled = 'BossKilled'
    CameraUsed = 'CameraUsed'
    CauldronUsed = 'CauldronUsed'
    ChunkChanged = 'ChunkChanged'
    ChunkLoaded = 'ChunkLoaded'
    ChunkUnloaded = 'ChunkUnloaded'
    ConfigurationChanged = 'ConfigurationChanged'
    ConnectionFailed = 'ConnectionFailed'
    CraftingSessionCompleted = 'CraftingSessionCompleted'
    EndOfDay = 'EndOfDay'
    EntitySpawned = 'EntitySpawned'
    FileTransmissionCancelled = 'FileTransmissionCancelled'
    FileTransmissionCompleted = 'FileTransmissionCompleted'
    FileTransmissionStarted = 'FileTransmissionStarted'
    FirstTimeClientOpen = 'FirstTimeClientOpen'
    FocusGained = 'FocusGained'
    FocusLost = 'FocusLost'
    GameSessionComplete = 'GameSessionComplete'
    GameSessionStart = 'GameSessionStart'
    HardwareInfo = 'HardwareInfo'
    HasNewContent = 'HasNewContent'
    ItemAcquired = 'ItemAcquired'
    ItemCrafted = 'ItemCrafted'
    ItemDestroyed = 'ItemDestroyed'
    ItemDropped = 'ItemDropped'
    ItemEnchanted = 'ItemEnchanted'
    ItemSmelted = 'ItemSmelted'
    ItemUsed = 'ItemUsed'
    JoinCanceled = 'JoinCanceled'
    JukeboxUsed = 'JukeboxUsed'
    LicenseCensus = 'LicenseCensus'
    MascotCreated = 'MascotCreated'
    MenuShown = 'MenuShown'
    MobInteracted = 'MobInteracted'
    MobKilled = 'MobKilled'
    MultiplayerConnectionStateChanged = 'MultiplayerConnectionStateChanged'
    MultiplayerRoundEnd = 'MultiplayerRoundEnd'
    MultiplayerRoundStart = 'MultiplayerRoundStart'
    NpcPropertiesUpdated = 'NpcPropertiesUpdated'
    OptionsUpdated = 'OptionsUpdated'
    performanceMetrics = 'performanceMetrics'
    PackImportStage = 'PackImportStage'
    PlayerBounced = 'PlayerBounced'
    PlayerDied = 'PlayerDied'
    PlayerJoin = 'PlayerJoin'
    PlayerLeave = 'PlayerLeave'
    PlayerMessage = 'PlayerMessage'
    PlayerTeleported = 'PlayerTeleported'
    PlayerTransform = 'PlayerTransform'
    PlayerTravelled = 'PlayerTravelled'
    PortalBuilt = 'PortalBuilt'
    PortalUsed = 'PortalUsed'
    PortfolioExported = 'PortfolioExported'
    PotionBrewed = 'PotionBrewed'
    PurchaseAttempt = 'PurchaseAttempt'
    PurchaseResolved = 'PurchaseResolved'
    RegionalPopup = 'RegionalPopup'
    RespondedToAcceptContent = 'RespondedToAcceptContent'
    ScreenChanged = 'ScreenChanged'
    ScreenHeartbeat = 'ScreenHeartbeat'
    SignInToEdu = 'SignInToEdu'
    SignInToXboxLive = 'SignInToXboxLive'
    SignOutOfXboxLive = 'SignOutOfXboxLive'
    SpecialMobBuilt = 'SpecialMobBuilt'
    StartClient = 'StartClient'
    StartWorld = 'StartWorld'
    TextToSpeechToggled = 'TextToSpeechToggled'
    UgcDownloadCompleted = 'UgcDownloadCompleted'
    UgcDownloadStarted = 'UgcDownloadStarted'
    UploadSkin = 'UploadSkin'
    VehicleExited = 'VehicleExited'
    WorldExported = 'WorldExported'
    WorldFilesListed = 'WorldFilesListed'
    WorldGenerated = 'WorldGenerated'
    WorldLoaded = 'WorldLoaded'
    WorldUnloaded = 'WorldUnloaded'

    events = list()

    async def on_event(self, event: str, properties: dict):
        pass

    def has_event(self, event: str) -> bool:
        if event in self.events:
            return True
        return False

    def add_event(self, event: str):
        self.events.append(event)

    def remove_event(self, event: str):
        self.events.remove(event)
